基于WebGIS的降水信息系统的设计与实现
2020-07-10代德成普运伟
代德成,普运伟,张 勇
(1. 昆明理工大学 国土资源工程学院,云南 昆明 650093;2. 昆明理工大学计算中心,云南 昆明 650093)
0 引言
降雨是人类生产生活中常见的天气现象,其对于人类以及地球上的所有生物来说是获取生命必须的水资源的必要途径,人们的生产活动也离不开降雨的作用。降雨还对自然环境以及人类的生存环境存在着较大的潜在危害,如带来泥石流、洪涝等灾害等,也正因为如此,一直以来,降雨的监测、预报和统计,不仅是气象学的重要研究领域,同时也是水文水资源学者所关注的重大研究课题[1]。
随着社会经济快速发展及科学技术水平的不断提高,国家社会各项生产生活实践对于实时降水信息的需求不断增加,降水信息的共享水平以及水利信息化水平也需逐渐提高。由于GIS的空间分析等相关特性,决定了其在国民经济建设的各个领域都有着越来越广的应用,当然在水文水利方面也有着广泛的应用,特别是在防洪抗旱工作中发挥着重要作用。
阜新市地处辽西北地区,属于季风区,降雨主要体现在夏天的6、7、8月,由于农田丰富所以对水资源的需求非常迫切。通过建立阜新降水信息系统,及时准确的获取阜新地区的降水数据并对其进行分析,获取阜新地区降水情况的基本具体规律以便提供准确的决策信息,为进一步采取措施管理和合理利用阜新水资源提供帮助。
1 降水信息系统开发关键技术
1.1 GIS系统技术应用体系结构
GIS系统的发展经历了几个不同的发展阶段,这些发展阶段体现在其应用体系结构上表现为:以主机(mainframe computer)为中心的GIS系统技术应用体系结构;基于桌面PC机为核心的GIS系统技术应用体系结构以及支持Internet/Intranet网络技术标准的分布式GIS系统技术应用体系结构[2]。
1.2 WebGIS介绍
WebGIS即网络地理信息系统,从组成机构上WebGIS系统可以分为动态WebGIS和主动WebGIS[3]。
WebGIS由于其结构性质,有以下特点:
(1)广泛的覆盖范围
(2)不依赖平台
(3)系统成本较低
(4)操作简便
(5)合理高效的计算负载配置
(6)广阔的应用扩展空间
目前,WebGIS有三种实现方式,包括服务器端方式、客户端方式以及混合方式。WebGIS的实现技术大致有:通用网关接口法(CGI)、应用程序插入法(Plugin)、Java编程语言实现、ActiveX和部件对象模型(COM)等方法[4]。
1.3 空间降水插值方法
关于数据的空间插值的方法有许多,且插值方法的分类方法也有多种,其中一种为将插值法归为整体插值法和局部插值法[5]。
整体插值法包括趋势面法,多元回归法。
局部插值法主要有泰森多边形法反距离加权法(IDW),克里金插值法,样条法。
1.4 ArcGIS Server介绍
ArcGIS Server是基于服务器的功能十分强大的GIS产品,通常用于构建集中管理的、支持多用户的、具备高级GIS功能的企业级GIS应用与服务,ArcGIS Server提供广泛的基于Web的GIS服务,以支持在分布式环境下实现地理数据管理、制图、地理处理、空间分析、编辑和其它的GIS功能。ArcGIS Server由Web浏览器、GIS服务器、Web服务器、桌面产品四部分组成。
目前有三种ArcGIS Server服务发布方式。第一种是在 ArcCatalog中发布地图服务;第二种是在ArcMap中直接发布地图服务;第三种是在ArcGIS Server Manager中发布地图服务。本文使用的地图服务为切片类型的地图服务,切片地图服务即缓存第服务,这种服务方式能使地图服务快速有效的运行,其思想是预先创建了地图副本,后期加载的时候能够直接读取。一般地图服务的发布过程如下。
(1)首先在 ArcMap中打开地图数据,对数据进行必要的处理,如融合处理、地图纠正等。
(2) 在文件菜单下共享为服务中选择服务选项。
(3)选择将要发布的服务器名称,填写服务名称。
(4)在服务编辑器中对服务进行设置选择切片服务,如图1所示。
图1 服务编辑界面Fig.1 Service editing interface
(5)先进行分析,分析成功后进行预览,然后再选择发布。
(6)接下来登陆 Manager中看到如下登陆界面。
(7) 浏览器查看已经发布的服务,如图2所示。
图2 浏览服务界面Fig.2 Browse the service interface
1.5 系统开发平台和语言
(1)Visual Studio Code介绍
Visual Studio Code(简称VS Code/VSC)是一款免费开源的轻量 IDE,或者也可称其为现代化的代码编辑器,几乎所有的主流开发语言的基础功能都支持,它还支持插件扩展,而且拥有较为完整的丰富的插件系统。
(2)PostgreSQL数据库简介
PostgreSQL是一种对象关系型数据库管理系统(ORDBMS),PostgreSQL 相对于它的竞争者的优势在于其强大的可编程性。
(3)ArcGIS Desktop简介
ArcGIS for Desktop 是AcrGIS产品系列的桌面软件产品,为GIS专业的学者和工作人员提供信息制作和使用的工具。利用这个工具,我们可以实现许多从简单到复杂的GIS任务。
(4)Beego框架简介
Beego框架是由谢孟军基于 GO语言编写的一个开源框架,其思路来自于tornado,路由设计来源于 sinatra。Beego的设计理念主要为模块化、分离和组合。
(5)Go语言
Go语言是Google于2009年发布的第二款开源的编程语言。Go语言本身就支持并发、有着强大的工具、丰富的标准库及拥有C语言的基因,具备极强的表达能力,此外其还可跨平台编译。
(6)ArcGIS for JavaScript API
ArcGIS for JavaScript API是 ESRI根据JavaScript技术实现的调用ArcGIS Server REST API接口的一组脚本[8]。
2 阜新市降水信息系统设计
2.1 需求分析
目前阜新市建有完备的降雨量测量站点体系,这些站点会在降雨活动后自动将本站所测雨量数据上传至数据库中,以备查询与研究。普通的农民或其他人民群众需要了解本地区的降水情况以及历史降水情况总结经验,合理开展农业生产活动;另外一方面,水利水文相关部门也需要了解阜新地区的降雨情况及时分析判断评估阜新地区现有水利设施的利用情况或覆盖情况,以及规划建设新的水利设施以使人们能最大化的合理利用阜新现有的水资源,为经济社会发展奠定基础。
2.2 总体设计
系统由客户端、Web层、中间层和数据层组成[9]。用户可以通过浏览器实现对 web服务器的访问,Web服务器又可以通过Web Adaptor实现对GIS服务器的访问,这样就可以直接访问到GIS服务器上的地图资源。对于属性数据库的访问主要是Web服务器对PostgreSQL数据库的访问实现的。
图3 系统总体框架图Fig.3 The overall framework of the platform
设计原则。为了充分满足用户需求以及建立完善实用的系统,系统设计主要依据系统完备、系统实用、结构合理、产品标准、低成本、低维护量等作为基本建设原则,规划系统的整体构架。
2.3 阜新市降水信息系统数据库设计
在数据库设计阶段,需注意以下几点:提高数据的共享性,要充分利用有限的存储空间,尽量减少数据的冗余度,在地理信息系统和其他一般信息系统之间建立数据联系,要充分保证数据的独立性,使系统适应数据的存储结构和存储方式,要按照各项规范来进行数据库设计[12]。
把具备地理位置属性的数据和不带地理位置属性的数据进行分类,用关系数据库存储不带地理位置属性的数据。各个雨量监测站的的降雨量信息,使用降雨量属性表来进行存储,其结构如表1所示。
表1 降雨量信息字段Tab.1 Rainfall information fields
2.4 阜新市降水信息系统功能设计
图4 系统技术路线图Fig.4 System technology roadmap
3 阜新市降水信息系统开发与实现
根据需求分析及系统功能设计,本系统前端界面包括用户登陆注册及系统主界面都是采用超文本标记语言(HTML)和CSS语言结合的方式进行页面布局设计,搭建起阜新市降水信息系统的界面,保护自己的权利是应该具备的基本意识,因此本系统说明了版权所有和版本信息。如图5所示。
图5 登陆界面Fig.5 Login interface
图6 系统界面Fig.6 The system interface
本系统根据设计,在地图操作部分实现了地图的基本操作,包括地图的平移、放大、缩小和全图显示等功能,采用了简洁的设计,以求尽量提升用户的使用体验。如图7所示。
图7 地图基本操作Fig.7 Map basic operation
根据需求不同本系统的查询功能分为一般查询、按月查询和按年查询三个部分。一般查询主要实现查询当天或历史某个时间段的降雨量,可以根据站点选择或输入以及时期选择来确定需要选择的测站的降雨量。系统的查询的数据来自于数据库里存储的降雨量数据,以此实现当数据库更新时,我们能即时获取数据,也可以保证系统具备较好的运行速度,链接数据库的关键代码如下:
func init() {
orm.RegisterDataBase("default", "postgres", beego.AppConfig.String("spatialdbconnection"))
orm.SetMaxIdleConns("default", 30)
orm.DefaultTimeLoc = time.UTC
查询时用户还可以输入关键字进行测站雨量查询,用户可以自己选定日期进行查询,如图8、9。
按月查询即把查询时间条件调整为按月计算,这样查询出统计数据,有助于人们了解某个地方的某个月或某几个月的降水情况以及规律。
图8 关键字查询Fig.8 Keyword query
图9 日期选择Fig.9 Date selection
按年查询则是查询出阜新地区的年降雨量的统计数据,根据统计数据做其它进一步的分析,以得出阜新地区的降雨规律及演变等。
此外,在地图上还可以对测站进行选择查询,并在地图上高亮显示,并定位到该测站位置,且还可对其测站属性信息进行显示。如图10。
图10 高亮定位Fig.10 Highlight positioning
根据需求分析,人们在查询降雨量的同时还存在着对其他信息有需求的情况,且有关部门也存在发布相关抗洪防汛资讯的需求。因此本系统设计了一个信息发布界面,以此来进行相关信息链接及显示,以满足人们快捷查询的需要。比如查询阜新市天气情况、洪水预警信息等。
经过需求分析与算法比较,本系统采用IDW插值方法对阜新地区的降水进行插值分析,根据需求分析,我们想要得到阜新地区长时间降雨活动分布情况,以便为水利设施评估及降雨规律研究提供数据支持,因此本系统以阜新地区年降雨量为数据基础,进行插值分析,最后得到阜新地区年降雨量的等值面图,如图11。由图我们可以看出,阜新地区降雨量分布情况清楚明确,在地区分布上具有一定的规律性,降雨活动在阜新市区周围、阜蒙县北部和西部、彰武县东南部比较频繁,这些地区降雨量较大,在降雨量较大的地区我们应该对其现有水利设施进行充分的评估判断。也为阜新防洪抗旱工作提供一定的数据支撑,能够进行较为精确的统筹工作,为决策提供帮助,实现精确抗洪、灾情预测等目标。
图11 分析结果Fig.11 Shows the results
系统中可以根据某天或某年等时间段来进行降雨量统计显示,根据这项统计可以清楚的看见降雨活动在整个阜新地区的情况,可以知道降雨量最大最小地区,也可以了解到阜新地区的平均降雨量等信息。如表2为2013年7月8日至2013年7月9日的最大、最小和平均降雨量等信息。
表2 降雨量汇总Tab.2 Summary of rainfall
4 结论
本文运用 Go语言进行后端编写,由此构建系统总体结构,其中编译好的Go语言程序能起到Web服务器的作用。
并借助于ArcGIS for JavaScript实现了地图的基本操作功能,如地图放大、缩小、平移等,还实现了查询显示和数据分析等功能。
通过对比分析了集中空间降水插值方法后本文选择了距离反比加权插值法(IDW)进行分析,发布为 GP服务,然后本系统借助 JavaScript实现了GP服务的调用进而实现对阜新市降水数据的 IDW分析。
通过该分析我们可以直观清楚的看出,阜新地区降雨活动的分布情况,由于是采用年降雨量数据进行的分析,因此分析结果具备一定的规律性,从分析结果可以看出,颜色越深的地方年降雨量越大,说明这些地方的降雨活动频繁,在汛期,需要加强对这些地区水利设施的维护与建设,积极采取措施应对可能发生的洪涝灾害,以此实现资源的合理平衡分配。