开源 GIS 软件梳理及在水利行业中的组合应用

2021-06-28 14:52董万钧张俊儒
水利信息化 2021年3期
关键词:空间数据开源许可

董万钧 ,董 波 ,张俊儒

(1. 水利部南京水利水文自动化研究所,江苏 南京 210012;2. 水利部水文水资源监控工程技术研究中心,江苏 南京 210012;3. 江苏南水科技有限公司,江苏 南京 210012)

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 方式实现自动气象观测站资料的展示及其简单应用。开源集成建模环境 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 等严格来说很难归类到某一个环节,但是在开源 GIS 软件中被广泛采用,其中许多软件也被商业 GIS 软件采用。

表 1 开源 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 数据存储

关系型数据库 + 空间数据引擎通常是一种中间件解决方案。用户将自己的空间数据交给独立于数据库之外的空间数据引擎,由其组织空间数据在关系型数据库中存储;当用户需要访问数据时,再通知空间数据引擎,从关系型数据库中取出数据,并转化为客户可以使用的方式。大多数空间数据库都采用这一方案。

在开源空间数据库方面可供选择的软件不多,主要软件特点及许可类型如表 3 所示,PostgreSQL/PostGIS 目前应用最为广泛。PostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统,是最重要的开源数据库产品开发项目之一。PostGIS 是对 PostgreSQL 的一个扩展,遵循OpenGIS 的规范,PostGIS 提供的空间信息服务功能包括空间对象的存储、索引、操作函数和操作符。MySQL 遵从 OpenGIS 的规范,实施具有 Geometry类型的 SQL 环境的一个子集,也得到一定的应用。

表 2 数据加工类开源 GIS 软件特点和许可类型

表 3 空间数据库软件特点及许可类型

PostgreSQL/PostGIS 是目前开源空间数据库的首选,该协议并不限制软件在商业化场景中使用,但需要注意的是该软件本身不能收费,并且使用这类软件时只能将该软件作为独立组件使用,不得修改软件源代码,否则整个系统源代码都可能面临必须开源的要求。

1.3 地图发布

因为数据量小,轻量级水利 WebGIS 虽然对地图服务器不要求有极高的性能,但是有以下一些要求:

1)部署简单,配置容易上手,易维护;

2)能够定制地图元素和空间数据的样式,提供丰富的制图手段;

3)支持主流空间数据格式,支持标准的 WMS,WFS,WPS 等规范。

地图发布开源 GIS 软件特点和许可类型如表 4所示,MapGuide 和 MapFish 近年来在水利行业使用得很少,出现问题不利于获得技术支持。综合而言,MapServer,GeoServer 不但满足上述所有要求,而且广泛使用,有更多的研发人员参与使用和改进,比较适合用于轻量级水利 WebGIS 的地图服务器。

表 4 地图发布开源 GIS 软件特点和许可类型

MapServer 遵循的是 MIT 许可,使用中注明版权和协议,商业和非商业环境皆可使用;Geo-Server 使用的是 GPL2.0 协议,使用时注意事项同PostgreSQL/PostGIS。

1.4 空间分析

空间分析包括用于理解地理特征的模式和关系的各种技术和计算过程的集合体。空间分析包含的种类或算法非常庞大,这里列出的空间分析的库只是很小的一部分,软件特点和许可类型如表 5 所示,其中:GRASS,GeoDa,GeoTools 和 PySAL 属于成体系的空间分析软件;PyWPS 和 ZOO-Project侧重于提供网络空间分析服务,可以与多种空间分析软件进行集成;Turf,JSTS 和 kriging.js 则运行于前端的 JavaScript 空间分析库。

表 5 空间分析类开源 GIS 软件

在进行 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 所采用的开源协议皆允许在商业环境下使用。

表 6 开源 GIS 前端软件

2 开源 GIS 解决方案

在梳理和比较各类开源 GIS 软件的基础上,本研究将结合典型的 WebGIS 框架和应用场景需求,提供不同应用场景的开源 GIS 解决方案。

图 1 是一个完整的 WebGIS 的构建框架,空间数据经过加工处理后,存储于空间数据库或文件中,通过 GIS 和 Web 服务器发布为标准的地图服务,通过网络传输在前端呈现。空间分析的功能模块既可以在服务端实现,也可以在前端实现。

图 1 WebGIS 构建框架

轻量级水利 WebGIS 应用的轻量主要体现在:机构管理的范围小,数据量小,或者管理的工程数量相对较少,具体功能需求随工程项目的不同而有所差异。因此在应用开源 GIS 软件时需要依据需求的复杂度提供多种模块组合方案,以满足不同层次的需求。结合 WebGIS 框架,将需求划分为 4 个应用场景,并针对每个场景给出相关的 GIS 解决方案,具体如表 7 所示。

表 7 不同应用场景下的开源软件组合方案

2.1 应用场景一

应用场景中需要对客户独有的空间数据进行加工并叠加在地图上显示。在地图发布前,对空间数据进行处理和加工是基本的环节。常见的需求包括站点数据的添加、修改和删除,河流、湖泊等区域的勾勒突出,区域范围的划分及对各类地图要素的配色出图。uDig 和 Quantum GIS 都是较为优秀的开源桌面 GIS 软件,完全能够满足对基本的点线面等空间及属性要素的编辑修改,地图配色,出图等功能要求,Quantum GIS 对地图的样式设置还可以导出为 SLD 文件,供 GeoServer 发布地图使用。

2.2 应用场景二

应用场景中百度、高德、天地图等互联网地图能够满足提供地理底图要求,并且系统运行环境允许连接互联网。基本的需求为在地图上叠加展示数据等各类信息,当需要在二维地图上进行信息叠加时可以选用 OpenLayers 或者 Leaflet,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 系统(公众参与地理信息系统)是一个向公众传达水利信息、知识,解释水利政策,鼓励公众参与水利决策的平台,需要提供基于 GIS的移动端数据展示功能。PPGIS 系统对于 GIS 的主要功能需求包括基于 GIS 底图的风场、流场、台风路径、站点实时数据的展示等,GIS 底图采用公开的互联网地图,如百度地图、天地图等。PPGIS 系统的需求重点在于基于 GIS 的水利数据展示,符合应用场景二描述的需求,因此在 GIS 软件集成的方案中采用 leaflet 作为 GIS 前端。PPGIS 系统开发过程注重动态效果,流场、风场采用粒子流的表达方式,台风路径采用动态表达的方式,取得了良好的效果。

3.2 某水库水雨情系统

某水库水雨情系统有以下 3 个方面的要求:首先,系统部分客户端运行在内网中,无法访问互联网地图;其次,地图上需叠加库区范围、站点等定制化图层;最后,地图部分融合到大数据看板中,页面展示更加丰富。该系统的需求包括地图定制发布、前端展示 2 个方面,与 4 个应用场景对比后确定场景三的解决方案能够满足上述要求,采用PostGIS + GeoServer + GeoWebCache 发布地图,前端选取 OpenLayers,融合各类图、表、曲线图构建系统大数据看板,全面监测水库水雨情信息。

3.3 某电网气象系统

某电网气象系统要求提供基于 GIS 的气象预报信息(气温、风速风向、湿度等)的展示,提供在线等值线计算功能,运行于安全二区,与互联网完全隔绝,同时服务器操作系统采用的是国产 linux操作系统。该系统的需求包括地图定制发布、前端展示及在线等值线计算,与 4 个场景对比后确定应用场景四的方案能够很好地满足上述功能需求,从而确定采用 PostGIS + GeoServer + GeoWebCache +OpenLayers + kriging.js 的 GIS 软件集成方案。

4 结语

开源 GIS 软件在水利行业中的应用已经非常普遍,但往往针对某个具体问题选取某个软件予以解决时,缺乏系统性的整理和分析。本研究根据应用需求总结了 4 个应用场景并提供了针对性的解决方案。这些不同场景的方案,一方面为水利 WebGIS提供了指导作用,可根据项目应用需求对照相应场景快速构建 WebGIS 系统,提升效率;另一方面,全开源的方案节约了项目建设资金,对于部分中西部地区和中小水利管理机构的水利信息化项目有很好的经济效益。值得注意的是:在空间分析方面,本研究只是简单地选择相应的算法库予以集成,但面对复杂应用时可能需要多个算法库和自研算法或者模型进行结合,这方面仍需加强研究和实践。

猜你喜欢
空间数据开源许可
版权许可声明
版权许可声明
版权许可声明
本期作者介绍
GIS空间数据与地图制图融合技术
五毛钱能买多少头牛
2019开源杰出贡献奖
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
网格化存储的几项关键技术分析