信息技术经过长期的发展已趋于成熟, 同时也为流域河湖的研究提供了大量的信息, 该类信息包括人文信息、水文信息、空间信息、生态环境信息等[1]. 传统的信息存储方式一般采用文本、表格、图像等形式储存在各部门的数据库中, 不能直观的展示信息, 并且查询相关河湖信息极为不便, 严重影响了科研工作中的信息获取效率[2,3].
随着信息技术和3S技术的迅猛发展, 二者相结合的WebGIS技术开始逐步成为GIS应用的主流, 相对于C/S结构而言, WebGIS技术具有部署方便、使用简单、对网络带宽要求低的特点, 极大拓展了GIS的应用范畴和服务领域, 相比传统的GIS应用优势明显[4].
河流湖泊是陆地生态系统的重要组成部分. 本文通过对新疆塔里木河流域九大水系河流湖泊信息的整理与研究, 结合河流湖泊的空间分布特性, 开发了基于WebGIS的塔里木河流域河湖信息系统, 该系统不仅能够对河湖信息进行存储、管理和维护, 而且能通过地图标注, 河湖搜索定位, 河流湖泊信息查询显示等方式, 直观展示新疆塔里木河流域天然河湖的分布特点及水文相关信息, 能为政府、高校、科研单位以及个人提供快捷高效的河湖信息获取途径, 能对水资源的科学管理、生态环境的改善、涉水工程的建设等项目提供基础信息支持[5].
1 研究区概况本文以塔里木河流域为研究区如图1. 该流域为塔里木盆地诸河流域的总称, 跨中国、吉尔吉斯斯坦、塔吉克斯坦、巴基斯坦等国, 大部分位于中国新疆维吾尔自治区南部, 是中国最大的内流区. 塔里木河流域幅员辽阔, 河湖分布广泛, 流域内各水系差异大, 多地处崇山峻岭高寒地带, 甚至无人区, 流域内河流主要发源于盆地边缘的天山南坡、帕米尔高原、喀喇昆仑山、昆仑山及阿尔金山的内陆河流, 向盆地内部流动, 构成向心水系, 河流的归宿点是塔里木盆地的低洼部位. 流域总面积102万平方千米, 其中中国境内91万平方千米, 全区河川径流总量412亿立方米, 其中国外流入水量62亿立方千米. 流域内大于1平方千米的湖泊共有72个(不包括已干涸的罗布泊)总水域面积约1589平方千米, 占全新疆湖泊总面积的31%[6,7].
2 系统需求分析与系统设计 2.1 系统需求分析
基于WebGIS技术的塔里木河流域河湖信息系统是一个集地图操作、河湖信息查询展示的系统, 将为个人或者科研单位等用户开放, 因此必须提供可靠的信息与完善的功能. 结合实际需求, 遵循科学性、实用性、开放性等原则开发, 系统应实现以下功能:
(1) 提供简洁快速的地图基本操作功能. 包括地图的缩放、漫游、鹰眼、底图切换、坐标定位、线面量算等功能.
(2) 支持矢量数据加载, 基础地图数据的叠加以及底图的切换.
(3) 河流湖泊的相关水文信息、图片、历史文献等信息的展示.
(4) 系统支持对河流长度以及湖泊面积的测量功能.
(5) 提供河流湖泊的条件查询、点选查询等多方式的河湖查询方式.
(6) 提供给用户图形编辑、图形导出、地图打印等功能.
综上所述, 系统具备以下特征: 系统前端地图界面, 通过在地图中对河湖矢量图形的操作进行与服务器端和数据库服务器的信息交互. 系统支持常用栅格、矢量地图的读取、可视化. 系统具备可扩展性, 可根据需求分析对系统灵活的进行功能扩展, 增强系统的实用性.
2.2 系统设计基于WebGIS技术的塔里木河流域河湖信息系统是一个基于B/S架构的应用系统. 采用Microsoft SQL Server数据库及文件系统作为数据服务器. 空间数据主要通过GIS功能对文件进行解析显示. 整个系统采用MVC架构, 客户端通过Ajax向.NET服务端发送数据服务请求, 服务端采用ADO.NET技术访问数据库, 将数据结果以JSON格式返回到客户端. 客户端使用开源项目OpenLayers API进行开发, 实现相关地理数据的显示与操作等GIS功能. 系统体系架构如图2.
3 系统实现 3.1 OpenLayers开发环境搭建系统开发环境搭建可分为两步执行. 第一步, 从OpenLayers官网获取OpenLayers的开发库, 开发库包含ol.js和ol.css等文件. 其中ol.js(ol-debug.js)是核心开发库, 集成了OpenLayers的所有功能, debug版为调试时使用. ol.css文件为样式类, 包含OpenLayers的所有默认样式信息. 第二步, 采用.NET体系的MS Visual Studio作为Web应用开发IDE搭建系统框架.
3.2 数据库设计 3.2.1 河湖地理数据库
GeoJSON是一种基于JSON对象表示法的可以被JavaScript语言简单快速解析进行交换的轻量级数据格式, 它能对各种地理数据结构进行编码, GeoJSON对象可以表示: Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon和GeometryCollection. GeoJSON里的特征包含一个对象和其特征, 特征集合表示一系列特征. 本系统通过LineString或者MultiLineString表示河流的基本特征Point表示湖泊特征. 通过对不同水系的河流湖泊的矢量图形进行绘制, 以文件形式存储在磁盘中, 通过OpenLayers构建一个矢量图层并设置河流显示样式, 通过renderer渲染器数据显示在地图中. 通过编码GeoJSON属性为每条河流或湖泊设置唯一ID值用以对属性数据的访问. GeoJSON河流表示方法示例如图3.
3.2.2 河湖属性数据库
根据系统功能需求, 通过对相关资料的整理以及长期野外考察所得数据, 塔里木河流域河湖信息主要包括塔里木河流域内九大水系144条河流湖泊的基础水文信息、人文信息、地理信息. 河流可提取出河源、河口、河长、所属水系等历史变迁等关键信息, 湖泊可提取湖泊的类型、地理坐标、湖面积、历史水情等关键信息. 系统中河流湖泊地形风貌的图片都以文件方式存储. 纸质资料经过扫描、识别、校对、分类等步骤录入Microsoft SQL Server数据库中. 为了便于管理, 数据库中表分为河流和湖泊两类, 每一类又分为三张表用以存储三种不同类型的数据, 如河流中将数字类、文本类、多媒体类进行分表存储, 数据库中表结构如表1.
3.3 OpenLayers地图客户端
目前, WebGIS系统已从单一的WebGIS平台向多元异构方向发展, 越来越多的系统需要在同一系统中加载不同GIS厂商提供的数据, 调用不同GIS厂商提供的GIS服务, 这给WebGIS系统的可扩展性提出了极高的要求, 而地理信息多以图形、文本、多媒体数据方式展现, 用户通过人机交互对空间信息查询分析. 而目前主流的Openlayers正解决了这一难题. Openlayers是一个开源的项目, 是一个专为WebGIS客户端开发提供的JavaScript类库包, 用于为互联网客户端提供强大的地图数据网络访问功能, 具有灵活的扩展机制, 提高了开发效率和灵活性, 同时也保证了空间数据的高质量展示[8].
3.3.1 OpenLayers矢量数据加载OpenLayers在Web中加载矢量地图一般有两种方式: 一种是直接读取矢量格式文件, 即存储在磁盘中的GeoJSON、GML、KML等格式的矢量文件; 另一种是调用矢量数据服务接口, 通过服务接口读取矢量要素, 这种方式同样需要有服务资源的支持, 即需要发布矢量服务的GIS服务器. 本系统通过OpenLayers客户端解析GeoJSON格式的文件来显示河流的矢量数据. 其数据加载原理是将图层(Layer)与数据源(Source)进行分离, 图层是渲染地图数据的容器, 数据源则是GIS数据的载体, 图层要与数据源匹配设置. Layer与Source的关系如图4.
通过上图分析可知, 矢量地图加载到地图容器的原理为: 先通过接口调用到GeoJSON格式的文本数据, 然后通过ol.format.GeoJSON类的读写方法来解析这个文本数据, 读取到矢量要素(Features)及其几何对象(Geometry)等, 最后浏览器通过Style类设置的样式对不同的矢量图形进行渲染, 也就是最终在地图中看到的河流湖泊的矢量要素.
3.3.2 客户端获取信息河流湖泊的数据涉及两大类数据, 即地理数据和属性数据. 地理数据采用多种Google地图数据作为底图, 上层叠加河流的线矢量数据层和湖泊的点矢量数据层, 并通过河流湖泊ID关联矢量要素. 空间数据与属性数据通过ID一对一关联实现通过地图中空间数据查询同一条河流或者湖泊的属性数据. 数据关联示意图如图5.
系统要获取相关信息展示给用户, 最简单的方法时通过对前端地图中河流或者湖泊的矢量要素进行点击获取数据, 这种获取方式通过OpenLayers提供的ol.interaction.Select类对象选择河流或者湖泊矢量要素, 并高亮显示, 用类方法get()获取河流湖泊ID, 根据ID值利用Ajax模式请求, 即利用jQuery的方法发送数据请求; 后台由Handler.ashx文件统一处理前台发送的数据查询请求, 再调用封装的数据查询方法进行查询, 将结果序列化为JSON格式返回. 最终结果先以OpenLayers中的Popup形式弹出河湖名称与图片, 然后点击相关信息后在地图中展示河湖的详细信息.
4 系统功能测试与分析系统按照总体系统架构进行, 实现了相关功能, 系统主要功能包括以下部分:
(1) 地图的显示与操作
系统通过网络加载Google地形图、矢量地图、遥感影像、交通地图等地图数据, 并可以进行实时切换和缩放实现不同地图下的分析研究. 可以通过鼠标滚轮或者缩放条进行控制地图显示比例, 鼠标实时坐标显示, 以及地图的漫游功能, 可以通过按钮或者鼠标拖拉漫游快速将地图移动至塔里木河流域. 系统初始界面如图6.
(2) 查询功能
系统提供了对河流、湖泊、坐标、图片的查询功能, 系统河流条件查询可以根据自己的需求进行按水系、区域、河流长度对河流进行查询并加载到表格同时将河流的源头在地图中标注出来方便查找河流的详细信息. 河流湖泊的空间查询通过对地图中的河流湖泊矢量要素的点击即可即可高亮显示河流的分布并获取该点的图片以及河流的属性信息以及历史变迁等人文信息. 系统的坐标查询通过鼠标点击需要获取的地点即可在地图中获取该地点的经纬度. 系统涉及的图片搜索功能主要将要查找的地点的名称输入即可将该地点的图片都特殊标记与列表中方便用户点击查看. 河流信息查询如图7.
(3) 图形编辑与测量功能
系统提动矢量图形的编辑功能, 包括点、线、面要素的添加删除和移动, 在地图中对河流矢量图形进行绘制并生成GeoJSON地理空间信息交换格式, 并输出为文件, 可应用于其他不同WebGIS平台, 为地理信息的分享提供了便捷. 测量功能主要是测量面积与距离, 通过在图层中绘制线与面, 对长度和面积进行计算, 计算结果可以作为参考. 测量功能如图8.
(4) 统计与打印功能
系统对塔里木河流域按各水系河流的条数、流域面积的大小、湖泊的集水面积、湖泊类型进行了分类统计并生成图表加载到对应区域的地图中, 能对不同流域进行简单的分析. 系统支持地图的打印功能, 用户可以选择任意缩放级别和任意类型的地图进行打印, 为流域内地形地貌的解译提供了良好的支持. 系统统计与打印效果如图9.
5 结语
本系统充分利用了当前互联网环境优势, 结合主流的WebGIS等技术, 对塔里木河流域的河湖数据进行科学的管理, 充分展示了新疆塔里木河流域河流湖泊资源的分布以及地理相关信息, 将河湖信息直观高效的展示给用户, 对塔里木河流域河湖资源的研究与更合理开发利用具有重要意义. 系统具有可扩展性, 对将来建立全新疆流域河湖信息系统奠定了基础. 但是将来还会遇到很多问题需要解决, 随着河流湖泊的时空变化, 数据需要进一步的更新, 需要建立系统维护与更新机制, 以及根据需求变化进行功能的扩展.
[1] |
苏安琪. 塔里木河流域信息分类及系统设计初步. 干旱区地理, 1997, 20(1): 65-70. |
[2] |
张伟杰, 张沛露, 吕冬梅. 基于WebGIS的海洋地理信息共享平台设计与实现. 舰船科学技术, 2016, 38(8A): 130-132. |
[3] |
庞丽峰, 唐小明, 刘鹏举. 基于WebGIS省级林业信息共享平台的研发. 西北林学院学报, 2011, 26(2): 180-184. |
[4] |
郭明强, 黄颖, 谢忠, 等. WebGIS之OpenLayers全面解析. 北京: 电子工业出版社, 2016: 2–57.
|
[5] |
肖锐, 荆长伟, 支俊俊, 等. 浙江省土壤信息共享平台的构建与实现. 科技通报, 2013, 29(1): 19-24. |
[6] |
王世江. 中国新疆河湖全书. 北京: 中国水利水电出版社, 2010: 205–356.
|
[7] |
《中国河湖大典》编纂委员会. 中国河湖大典·西北诸河卷. 北京: 中国水利水电出版社, 2014: 22–121.
|
[8] |
张贵军, 陈铭. WebGIS工程项目开发实践. 北京: 清华大学出版社, 2016: 208–209.
|