10 个回答
推荐开源套装: Postgresql+PostGIS+uDig+GeoServer+OpenLayers,从数据转换(制作)、存储到发布、浏览,都齐了。
2014年补充:可以考虑用Leaflet.JS来替代OpenLayers,用QGIS代替uDig。
开源世界真是日新月异年年变啊。2017年补充:
Web前端方面,可以考虑用MapboxGL-JS来替代Leaflet,用 Turf.js 以及 JSTS 实现客户端空间分析,用 Cesium 实现基于WebGL的三维地球,用 iClient9 作为多个客户端库的集成使用之参考。
后端服务方面:用基于Spark的 GeoTrellis 来补充GeoServer,用GeoWebCache做瓦片发布代理,用 GeoNode 做GIS门户(CMS)。
开源世界真真是日新月异年年变啊。2019年补充:
桌面端:QGIS、GRASS、uDig。
Web前端:和2017年基本一致,还是
iClient
+L/OL/MB/Cesium为主来打天下,再把echarts/d3/turfjs/proj4js/等工具按需使用。
移动端:较少,以sdk为主,貌似就
OSMDroid
和MapboxGL-Native还比较常见。
后端服务与计算层:LocationTech的GeoMesa/GeoTrellis/GeoWave都可以一试,传统的GeoServer(已内置GeoWebCache)+GeoNode、GeoTools继续主流,
Mapnik
用来渲染矢量瓦片貌似也很热门。
后端存储层:PostGIS、MongoDB、Spatialite、GeoPackage、MBTiles、HBase等等,很多,可以结合桌面和服务端的支持情况,按需选用。
另外还有几种新兴的软件交付模式,1是Python数据科学圈的
Jupyter
,国内的
iClient for Python
有个
入门文档
,2是几个全家桶:
OSGeoLive的Linux全家桶
,
OSGeo4W的Windows全家桶
。
总结:2019版开源GIS套装之增强版: Postgresql+PostGIS+QGIS+GeoServer+GeoNode+Jupyter+iClient,GIS用于AI、大数据、传统环境都有了。
开源世界 真真真是日新月异年年变啊。2022年补充:
桌面端:QGIS有一统桌面开源GIS天下的趋势(甚至还有QGIS Server、QField for Android/iOS)。
Web前端:和2019年相比,由于MapboxGL-JS v2的协议变更,开源社区fork并开发了
Maplibre GL-JS
。总体还是
iClient
+L/OL/MB/Cesium为主来打天下,再把echarts/d3/turfjs/proj4js/等工具按需使用。
移动端:
QField for QGIS
,SDK有
OSMDroid
和
MaplibreGL-Native
。
无人机环境:
OpenDroneMap
,无人机制图全套软件工具集,有CLI、WebUI、Cloud等项目模块。
NodeJS端:基于TS/JS的后端计算层,和传统Java/C++等后端所不同的是,它们往往在Web前后端环境都可以使用,发展很快,有
turfjs
、
geolib
、proj4js等。
后端服务与计算层:Rust/Go等语言在GIS中已日渐展露头角,
GeoRust
社区有好些个项目,虽然大部分还只是C/C++库的binding。Java生态仍然是主流:GeoSpark加入Apache社区并改名为
Apache Sedona
,潜力十足;老牌的GeoMesa/GeoTrellis、GeoServer/GeoTools、GeoNode继续发展。
后端存储管理层:OGC社区在主推COG、Zarr等等新型存储格式,另一个变化是随着知识图谱在GIS中的应用,包括图数据库(
Neo4j
、
ArangoDB
等)也进入GIS视野。国内openGauss数据库社区与GIS厂商联合发布了
Yukon禹贡开源二三维空间数据库
,基于PostGIS,增加了GeoModel三维模型、GeoSOT空间网格编码等功能,未来也会考虑支持多模。
总结:2022版开源GIS套装之增强版: Postgresql+Yukon+GeoMesa+QGIS+GeoServer+Sedona+GeoNode+Jupyter+iClient,GIS用于矢栅、三维、AI、大数据、传统环境都有了。
以上都是开源的,随喜体验,好用就点个赞,不好用就用脚投票。
搞离线GIS肯定还离不开空间数据,这里有几处可参考:
OpenStreetMap Data
,OSM的全球空间数据,但要注意这是未经政府审批的,只能测试,不能用于公开发布。
国家天地图/自然资源部数据,部分数据需要注册/申请才能下载:
国家测绘数据入口 ,里面有全国标准地图(图片¥……%&)。
这篇东西算是复习,了解 PostGIS 的基本构成与官方定义
1. 介绍
是什么
PostGIS 是 PostgreSQL 数据库的一个扩展插件,它是开源的,使用 GPLv2 协议。
有什么用
在数据表中增加了地理对象的类型支持,还添加了大量操作这些空间对象的函数、运算符和索引系统。
有什么功能
PostGIS 提供:
- 对矢量数据和栅格数据均提供了处理、分析的 SQL 函数,支持拼接、切割、形变、重分类、聚合等操作;
- 栅格图像的处理方法;
- 能通过 SQL 调用的栅格、矢量数据坐标重投影函数;
- GUI 程序或命令行程序来导入、导出 shp 矢量数据,并且通过第三方工具以支持更多格式;
- 命令行程序来导入多种标准的栅格数据:GeoTiff、NetCDF、PNG、JPG 等
- 能通过 SQL 调用的,能渲染、导入 KML、GML、GeoJSON、GeoHash、WKT 等标准文本类型的矢量数据的函数
- 能通过 SQL 语句将栅格渲染至各种格式(GeoTiff、PNG、JPG、NetCDF 等)
- 矢量或栅格操作函数,包括按区域伸缩栅格像元值、局域统计、按矢量图形裁剪栅格、矢量化栅格等
- 3D 对象支持,包括空间索引等函数
- 网络拓扑支持
- 其它
由何而来
PostGIS 是用 C 语言写的,所以它可以用一些 C/C++ 的库。它依赖于:
- GEOS 库,提供几何图形处理算法
- Proj.4 库,提供坐标重投影函数
- GDAL 库,提供栅格数据格式支持和处理手段
- LibXML2 库,用于 XML 文档的解析
- JSON-C 库,用于 JSON 的解析
- SFCGAL 库,提供额外的 3D 图形地理处理算法
它遵循 OGC 的 《简单要素关于SQL的规范》 来实现。
附带了什么工具
使用空间数据库,或者说任何数据库,有几个关键的操作:数据的导入导出。下面有几个工具要介绍:
- 命令行工具,shp2pgsql、pgsql2shp、raster2pgsql
- GUI 工具,shp2pgsql-gui,有些分发版本并没有,Windows 版本一般都有
- GDAL 有关工具和库,它是处理空间数据的利器,比较难啃,但是值得挑战
2. 与 PostGIS 类似、相关的 PostgreSQL 扩展
主要有:
- pgRouting ,要配合 PostGIS 一起用,扩充了网络分析功能,例如最短路径分析等
- ogrfdw ,基于 GDAL/OGR 的外部数据包装器,意思就是允许 pg 读取其它数据源为数据表;其中矢量数据将转换为 PostGIS 的几何类型
- pgpointcloud ,用于在 PostgreSQL 中存储点云数据,附有点云类型与 PostGIS 几何类型之间相互转换的功能