第 3 期2021 年 6 月
水利信息化
Water Resources Informatization
NO.3Jun .,2021
开源 GIS 软件梳理及在水利行业中的组合应用
董万钧 1,2,董  波 3,张俊儒
3
(1. 水利部南京水利水文自动化研究所,江苏    南京    210012;2. 水利部水文水资源监控工程技术研究中心,江苏    南京    210012;
3. 江苏南水科技有限公司,江苏    南京    210012)
收稿日期:2020-07-02
基金项目:南京水利科学研究院中央级公益性科研院所基本科研业务费专项资金(Y919012)
作者简介:董万钧(1977-),男,江苏高邮人,高级工程师,主要从事水利信息化方面的工作。E -mail:******************
摘 要:针对开源 GIS 软件需要针对不同的应用场景和功能需求,筛选出多个软件进行组合集成应用的现状,为提升组合集成效率,按照典型的 WebGIS 系统的构建过程,从数据加工、数据存储、地图发布、空间分析、前端展示 5 个方面对常见的开源 GIS 软件进行整理分类。结合水利行业中所遇到的软硬件条件差异、网络环境不同、功能需求不同等方面,抽象出 4 个不同的应用场景,从功能、易用性、使用的广泛性和软件许可等几个方面进行筛选,构建软件的组合方案,提供系统案例,为开源 GIS 软件在水利行业中的应用提供指导作用。从应用结果看,4 套方案覆盖了不同层次的应用需求,开发人员可依据需求快速准确确定解决方案,达到降低成本,快速构建相关 GIS 功能的目的。
关键词:开源 GIS ;梳理;水利行业;应用场景;组合应用;解决方案;案例
中图分类号:P208.2         文献标志码:A     文章编号:1674-9405(2021)03-0025-07
DOI: 10.19364/j.1674-9405.2021.03.006
0    引言
GIS 技术已经广泛应用于水利行业的方方面面,主要应用领域包括防灾减灾(防汛抗旱决策、灾情评估
、洪涝灾害风险分析与区划、城市防洪)、水资源管理、水环境和水土保持,以及水利水电工程设施的建设管理等 [1–2]。随着水利信息化系统建设及水利一张图工作的推进,GIS 成为水利信息化系统构建框架中不可或缺的一部分,既是系统中辅助决策的工具,也是成果展示的平台。可以预见 GIS 技术将随着时代的发展越来越深入到水利行业的骨髓之中。
在水利行业的实际应用中,商业化 GIS 产品往往占据主流地位。国外的如 ArcGIS 系列产品,国内的如 SuperMap 系列产品等占据了大部分市场。这些产品针对水利行业的各个应用场景都有较为完善的解决方案,但由于其商业化产品的特性,存在以下 2 个方面的弊端:1)我国是一个地区经济发展极不平衡的国家,虽然近年来国家加大了对水利部门的投入,但对于部分中西部地区和中小水利管理机构而言,经费相对有限,采用商业化 GIS 软件将是一
笔不小的投入;2)商业化 GIS 软件为了应对复杂的应用场景,产品往往大而全。对中小型水利信息化工程而言,为了少量的 GIS 功能需求安装部署一套完整的商业化 GIS 平台显得过于沉重。
开源 GIS 具有天生免费的特性,一款开源软件往往只承担某一方面的功能,更加轻巧,很好地规避了采用商业 GIS 平台带来的问题,同时,开源GIS 软件大多具有跨平台特性,对运行环境的适应能力更好。开源 GIS 软件目前已在各行各业中得到相对广泛的应用,比较典型的有:梁国峰等 [3] 基于 Cesium 开源三维框架、GeoServer 开源 GIS 服务、PostgreSQL 开源空间数据库,设计了一套三维 WebGIS 开发
方案,实现了水库综合管理系统的搭建;赵彦博等 [4] 在剖析 DHSVM 模型中河网数据表达与组织的基础上,采用 C++ 和开源 GIS 库实现了 DHSVM 河网数据的自动制备;张玉龙等 [5] 以开源 GIS 软件 GRASS 为平台,首次通过辐射过程模型 r.sun 和编程语言 Shell ,实现长江流域 500 m 分辨率的晴日辐射反演(包括直接、散射和反射辐射),为了解长江流域辐射时空分布规律和相关宏观气候、生态建模奠定基础;梅清银 [6] 以 WebGIS 方式实现
水利信息化2021 (3) 26
自动气象观测站资料的展示及其简单应用。开源集
成建模环境 FREEWAT 采用插件式方式开发并嵌入
到 QGIS 当中,用于模拟、管理、计划地表水和地下水的水量和水质等 [7–8];Duarte 等[9]在 Quantum GIS 环境下开发了使用 RUSLE 方法估计流域尺度上侵蚀率的程序,并且也提供改程序的 Web 版本,用于土壤流失方面的研究和应用;Singh [10]通过CityGML,X3D,X3DOM,WebGL,GeoServer3D 等开源 GIS 工具的组合,构建了 3D 场景,以此为基础模拟了洪水淹没过程。虽然开源 GIS 在水利行业已经得到广泛的应用,但是这些应用大多针对特定的需求进行开源软件的选取与组合:一方面 GIS 软件的选取取决于研发人员的喜好而具有随意性;另一方面,没有形成针对行业需求的系统性的解决方案,针对开源 GIS 软件使用过程中可能涉及的许可证问题也缺乏探讨。
从 GIS 的定义看,GIS 是用于输入、存储、查询、分析和显示地理数据的计算机系统[11];从 GIS 应用于水利行业的工程实践看,主要涉及地理数据的加工、存储、发布、分析、展示 5 个环节。本研究从这 5 个环节收集和梳理现有的开源 GIS 软件,考察其优缺点,采用组合的思想,建立中小型水利信息化开源 GIS 平台的解决方案,并开展工程实践。
1    开源 GIS 软件分类
在梳理开源GIS 软件分类前,首先要注意软件授权许可的问题。软件授权许可详尽表述了获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的[12]。世界上开源软件协议的种类非常多,并且同一款协议有很多变种,比较常见的协议有 MIT,GPL,LGPL,BSD,Apache 2.0 等。当前国内使用开源软件时普遍存在忽略开源软件许可的情况,极易引发相关法律问题,因此在使用开源 GIS 软件时,需要注意开源要求、修改声明、专利授权、许可证兼容、商标使用、网络分法等几方面的条款要求。
本研究从水利信息化系统的构建过程和需求出发,从开发语言、软件功能等角度,按照 5 个环节对开源 GIS 软件进行分类,具体分类如表 1 所示。这种分类方式虽不能涵盖所有的开源 GIS 软件,但能指导水利工程应用中对各种开源 GIS 软件的选取和组合。值得一提的是:虽然开源GIS 基础性类库,如 Proj.4,GDAL,OGR 等严格来说很难归类
表 1  开源 GIS 软件分类
数据加工
GRASS,uDig,Quantum GIS,Open Jump,gvSIG,
GeoDa,MapWindow,WhiteBox
PostgreSQL /PostGIS,MySQL
MapServer,GeoServer,MapGuide,MapFish
JTS,GRASS,GeoDa,PySAL,GeoTools,PyWPS,
ZOO-Project
Leaflet,OpenLayers,CesiumJs,Google Maps
Javascript API,百度地图 JavaScript API,高德地
图 JS API,天地图 JS API,Mapbox GL JS
数据存储
地图发布
空间分析
数据展示
类别代表软件
到某一个环节,但是在开源GIS 软件中被广泛采用,其中许多软件也被商业 GIS 软件采用。
1.1    数据加工
空间数据前期的数据加工处理及分析工作一般采用桌面级GIS 软件完成,常见的桌面级GIS 软件特点和许可类型如表 2 所示。这些软件可大致划分为 2 类:一类以构建完整的桌面级 GIS 平台为主要目标,包括 uDIg,Quantum GIS,Open Jump,gvSIG,MapWindow 等;另一类更加侧重于完成复杂的空间分析功能,包括 GRASS,GeoDa,WhiteBox GAT。水利空间数据主要以河道、湖泊等水域边界,测站、闸门、泵站等水利设施的定位等数据为主。加工此类数据的功能需求相对简单,比较而言,uDig 和 Quantum GIS 在易用性方面和商业 GIS 软件接近,容易上手,具备对常见类型空间数据文件的编辑修改及空间分析等功能,完全能够满足轻量级水利 WebGIS 构建前期对空间数据的加工处理需求。
uDig 的许可为EPL,Quantum GIS 的许可为GNU Free Documentation License,如果在这 2 种软件上进行二次开发,或者使用部分模块集成到应用系统中,系统将难以进行商业化使用。但是在仅使用软件进行数据处理,系统本身并不集成这 2 种软件的情况下,系统的商业化使用不会受到影响。1.2    数据存储
关系型数据库 + 空间数据引擎通常是一种中间件解决方案。用户将自己的空间数据交给独立于数据库之外的空间数据引擎,由其组织空间数据在关系型数据库中存储;当用户需要访问数据时,再通知空间数据引擎,从关系型数据库中取出数据,并转化为客户可以使用的方式。大多数空间数据库都采用这一方案。
在开源空间数据库方面可供选择的软件不多,
27
第 3 期董万钧等:开源
GIS 软件梳理及在水利行业中的组合应用表 2  数据加工类开源 GIS 软件特点和许可类型
模块多,功能强大,学习门槛高
基于 Java 的完整的桌面级 GIS 平台基于 Qt 和 C++ 的桌面级 GIS 平台
基于 Java 开发的桌面级 GIS ,通过插件增强图形和属性编辑功能桌面级 GIS ,支持移动端现场作业,支持 WMS , WFS 和 WCS 等空间计量分析软件
开源 GIS 控件,提供了可定制的应用程序和 ocx 控件,扩展性好
地理空间分析工具箱、桌面 GIS 和遥感软件包结合及替代的地形分析系统
软件名称GPL ≥ V2EPL
GNU Free Documentation License
GPL2GNU/GPL GPL MPL GPL3
GRASS uDig Quantum GIS Open Jump gvSIG GeoDa MapWindow WhiteBox GAT
软件特点许可类型表 3  空间数据库软件特点及许可类型
PostgreSQL 的扩展,提供空间对象、索引、操作函数和操作符等空间信息服务
功能,遵循 OpenGIS 的规范
软件名称GPL PostgreSQL /PostGIS
软件特点
许可类型OGC 建议的具有 Geometry 类型的 SQL 环境的一个子集
GPL
MySQL
表 4  地图发布开源 GIS 软件特点和许可类型
软件名称MapServer 软件特点
许可类型跨平台,支持多种格式,支持地图定制和模板化输出,对 WMS ,WFS ,WCS ,WMC ,SLD ,GML 和 Filter Encoding 都有较好的支持
跨平台,支持多种格式,OpenGIS Web 服务器规范的 J2EE 实现,允许对特征数据进行更新、删除、插入操作,可快速共享空间地理信息,支持上百种投影,能够将网络地图输出为 jpeg , gif , png , SVG 和 KML 等格式
为满足 GIS 用户数据发布需要,开发的 Internet 网络图形数据发布产品,专有格式和协议,支持 dwg 格式
基于 Pylons Python Web Framework 设计,对 Pylons 进行了地理空间功能方面的扩展。符合开放地理空间联盟标准,支持 WMS ,WFS ,WMC ,KML ,GML 等格式
GeoServer
MapGuide MapFish
MIT -style license
GPL2.0
LGPL BSD
主要软件特点及许可类型如表 3 所示,PostgreSQL/PostGIS 目前应用最为广泛。PostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS ),也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统,是最重要的开源数据库产品开发项目
之一。PostGIS 是对 PostgreSQL 的一个扩展,遵循OpenGIS 的规范,PostGIS 提供的空间信息服务功能包括空间对象的存储、索引、操作函数和操作符。MySQL 遵从 OpenGIS 的规范,实施具有 Geometry 类型的 SQL 环境的一个子集,也得到一定的应用。
PostgreSQL/PostGIS 是目前开源空间数据库的首选,该协议并不限制软件在商业化场景中使用,但需要注意的是该软件本身不能收费,并且使用这类软件时只能将该软件作为独立组件使用,不得修改软件源代码,否则整个系统源代码都可能面临必须开源的要求。
1.3    地图发布
因为数据量小,轻量级水利 WebGIS 虽然对地图服务器不要求有极高的性能,但是有以下一些要求:
1)部署简单,配置容易上手,易维护;2)能够定制地图元素和空间数据的样式,提供
丰富的制图手段;
3)支持主流空间数据格式,支持标准的 WMS ,WFS ,WPS 等规范。
地图发布开源 GIS 软件特点和许可类型如表 4所示,MapGuide 和 MapFish 近年来在水利行业使用得很少,出现问题不利于获得技术支持。综合而言,MapServer ,GeoServer 不但满足上述所有要求,而且广泛使用,有更多的研发人员参与使用和改进,比较适合用于轻量级水利 WebGIS 的地图服务器。
水利信息化2021 (3) 28
表 5  空间分析类开源 GIS 软件
软件名称软件特点许可类型
GRASS GeoDa PySAL GeoTools PyWPS 由 400 个子模块组成,可以处理矢量、图像影像数据,进行时空分析、空间建模、空间分析、地图可视化实现栅格数据探求性空间数据分析(ESDA)的软件工具集合
基于 python 开发,支持地理嵌入网络的空间回归与统计建模、空间计量经济学、探索性时空数据分析等基于 Java 的开源 GIS 工具包,包含大量空间分析算法
实现网络处理服务(WPS),可以和 GeoTools 等无缝集成
开放的WPS 平台,提供基于可靠开源库的现成的WPS 服务,如GDAL,CGAL,GRASS GIS,OrfeoToolbox 和 SAGA GIS 等
JavaScript 空间分析库,实现常用的空间分析操作,如生成缓冲区,计算等高线,建立 TIN 等。
符合 OGC 规范的简单要素空间位置判定函数 JavaScript 库
克里金插值算法开源的实现
ZOO-Project
turf
JSTS kriging.js
GPL ≥ V2
GPL
BSD 3-Clause
LGPL
MIT
MIT/X-11
MIT
EPL/EDL
MIT
表 6  开源 GIS 前端软件
软件名称软件特点许可类型
Leaflet
OpenLayers
CesiumJs Google Maps Javascript API 百度地图 JavaScript API 高德地图 JS API
天地图 JS API
Mapbox GL JS 对移动设备友好的开源的 JavaScript 库,简便,高性能,可用性好
专为 WebGIS 客户端开发提供的 JavaScript 类库包,用于创建丰富的网络地图程序
面向三维地球和地图的 JavaScript 开源产品
BSD-2-Clause
BSD-2-Clause
Apache License 2.0
各厂商自定规范各商业公司提供的地图前端 JavaScript 类库包
MapServer 遵循的是 MIT 许可,使用中注明版权和协议,商业和非商业环境皆可使用;Geo-Server 使用的是 GPL2.0 协议,使用时注意事项同PostgreSQL/PostGIS。
1.4    空间分析
空间分析包括用于理解地理特征的模式和关系的各种技术和计算过程的集合体。空间分析包含的种类或算法非常庞大,这里列出的空间分析的库只是很小的一部分,软件特点和许可类型如表 5 所示,其中:GRASS,GeoDa,GeoTools 和 PySAL 属于成体系的空间分析软件;PyWPS 和 ZOO-Project 侧重于提供网络空间分析服务,可以与多种空间分析软件进行集成;Turf,JSTS 和 kriging.js 则运行于前端的 JavaScript 空间分析库。
在进行 WebGIS 系统集成的过程中,开源空间分析软件的选择需要根据需求具体确定,一般来说水利行业中轻量级GIS 应用只需要简单的空间分析功能,可以选择集成实现了该部分功能的软件模块。表 5 所述软件在商业化使用中除了 GRASS 和GeoDa 的 GPL 协议要特别注意外,其他风险较低。
1.5    数据展示
常见开源GIS 前端软件的特点及许可类型如表6 所示。商业提供的地图API(应用程序编程接口)包括 Google Maps Javascript API、百度地图JavaScript API、高德地图 JS API、天地图 JS API 和Mapbox GL JS 等,这些由商业公司提供的 API 省去了开发 WebGIS 系统的诸多环节,能够快速构建出简单的地图应用,缺点是免费版本有一定功能或者性能限制,且在没有互联网的内网环境下无法使用。Leaflet 和 OpenLayers 都是应用极为广泛的开源 WebGIS 前端,两者各有千秋,面对轻量级应用皆能满足需求;CesiumJs 则在三维应用中比较有优势。Leaflet,OpenLayers 和 CesiumJs 所采用的开源协议皆允许在商业环境下使用。
2    开源 GIS 解决方案在梳理和比较各类开源 GIS 软件的基础上,本
研究将结合典型的 WebGIS 框架和应用场景需求,
29
第 3 期董万钧等:开源 GIS 软件梳理及在水利行业中的组合应用图 1    WebGIS 构建框架
表 7  不同应用场景下的开源软件组合方案
应用场景名称数据加工uDig ,Quantum GIS
一数据展示
定制地图 +
数据展示
定制地图 +空间分析 +数据展示
二维展示:OpenLayers 或 Lea flet 三维展示:CesiumJs
地图发布:PostGIS + GeoServer + GeoWebCache
二维展示:OpenLayers 或 Lea flet
三维展示:Cesium 地图发布:PostGIS + GeoServer + GeoWebCache
空间分析:根据分析类型选择具备相应算法的库,如 turf ,kriging.js 等
二维展示:OpenLayers 或 Lea flet 三维展示:CesiumJs
解决方案
应用场景序号二
提供不同应用场景的开源 GIS 解决方案。
图 1 是一个完整的 WebGIS 的构建框架,空间数据经过加工处理后,存储于空间数据库或文件中,通过 GIS 和 Web 服务器发布为标准的地图服务,通过网络传输在前端呈现。空间分析的功能模块既可以在服务端实现,也可以在前端实现。
轻量级水利 WebGIS 应用的轻量主要体现在:机构管理的范围小,数据量小,或者管理的工程数量相对较少,具体功能需求随工程项目的不同而有所差异。因此在应用开源 GIS 软件时需要依据需求的复杂度提供多种模块组合方案,以满足不同层次的需求。结合 WebGIS 框架,将需求划分为 4 个应用场景,并针对每个场景给出相关的 GIS 解决方案,具体如表 7 所示。
javascript基本特点
2.1    应用场景一
应用场景中需要对客户独有的空间数据进行加
工并叠加在地图上显示。在地图发布前,对空间数据进行处理和加工是基本的环节。常见的需求包括站
点数据的添加、修改和删除,河流、湖泊等区域的勾勒突出,区域范围的划分及对各类地图要素的配出图。uDig 和 Quantum GIS 都是较为优秀的开源桌面 GIS 软件,完全能够满足对基本的点线面等空间及属性要素的编辑修改,地图配,出图等功能要求,Quantum GIS 对地图的样式设置还可以导出为 SLD 文件,供 GeoServer 发布地图使用。
2.2    应用场景二
应用场景中百度、高德、天地图等互联网地图能够满足提供地理底图要求,并且系统运行环境允许连接互联网。基本的需求为在地图上叠加展示数
据等各类信息,当需要在二维地图上进行信息叠加时可以选用 OpenLayers 或者 Lea flet ,OpenLayers 是一个十分完善的 GIS 前端功能模块,Leaflet 更小更轻,对移动端开发更加友好。如果需要在三维地图
上进行展示,目前可供选择的 Web 三维软件库不多,CesiumJs 是其中较为成熟的软件。
2.3    应用场景三
应用场景中需要将客户独有的空间数据通过地图服务器发布并且在前端展示。前端展示可以参照场景二,定制地图发布可通过 PostGIS + GeoServer +GeoWebCache 组合的方式进行发布:PostGIS 是非
常成熟可靠的开源空间数据库;GeoServer 用于发布地图服务,提供标准的 WMS ,WFS 及 WPS 服务;GeoWebCache 用于生成瓦片地图,提升地图的访问效率。
2.4    应用场景四
应用场景中需要将客户独有的空间数据通过地图服务器发布,在前端进行二三维混合展示,并且进行一些基本的空间分析操作。定制地图和数据展示的需求可以参照应用场景三。空间分析所涵盖的应用领域和算法种类非常多,没有特定的软件库能够涵盖所有算法,一般根据具体算法需求选取相应的开源库软件,例如:Turf.js 主要用于实现网页端空间几何对象关系的计算,包括点、线、面之间的包含及相交等一系列运算;kriging.js 实现了网页前端的克里金插值功能等。
3    开源 GIS 应用案例
3.1    水利 PPGIS 系统
水利 PPGIS 系统(公众参与地理信息系统)是
Web 服务器
文件
空间数据库服务器
网页端
移动端