测绘地理信息   2016, Vol. 41 Issue (5): 65-69
0
美丽淳安生态地理信息系统的设计与实现[PDF全文]
董文龙1, 周吉金2, 付仲良1, 范亮1    
1. 武汉大学遥感信息工程学院,湖北 武汉,430079;
2. 浙江省地理信息中心,浙江 杭州,310012
摘要: 针对传统WebGIS系统加载易阻塞、代码结构不清晰、可重用性差等问题,探讨了WebGIS模块化开发的必要性,研究了AMD规范的关键部分,设计并实现了基于AMD的美丽淳安生态地理信息系统,介绍了系统的框架和功能,分析了系统模块划分和关键技术,阐述了系统特点。
关键词: AMD     生态地理信息系统     WebGIS     模块化    
Design and Implementation of the Beautiful Chun’an Eco-geographic Information System
DONG Wenlong1, ZHOU Jijin2, FU Zhongliang1, FAN Liang1    
1. School of Remote Sensing and Information Engineering, Wuhan University, Wuhan 430079, China;
2. Zhejiang Province Geographic Information Center, Hangzhou 310012, China
First author: DONG Wenlong, postgraduate, main research directions for WebGIS, spatio-temporal data mining. E-mail: wldong@whu.edu.cn
Corresponding author: ZHOU Jijin, engineer. E-mail: jokingzhou@qq.com
Abstract: Considering some defects of traditional WebGIS system, such as easy blocking, unclear code structure and poor reusability, the necessity of WebGIS modular development and the key part of AMD specification are analyzed in this paper. According to those theories and analyses, the Beautiful Chun’an eco-geographic information system based on AMD is implemented. This paper describes the system’s framework, module division, function, key technologies and characteristics.
Key words: AMD     eco-geographic information system     WebGIS     modular    

生态环境是人类生存和发展的基本条件,是社会、经济发展的基础[1]。为推动淳安生态功能区建设及城乡一体化,建设美丽淳安生态地理信息系统,将人口、经济、环境质量等生态指标通过WebGIS分析展示,服务于环境监测、政府决策与民众生活,促进淳安县地理信息资源的深层次应用,提升淳安县乡村信息化建设水平,是信息化与生态建设的有益结合。

近年来,互联网技术不断发展,WebGIS的功能也日趋丰富[2]。随着WebGIS在各行各业应用的深化,开发大型、复杂的WebGIS系统不可避免[3-7],异步模块加载机制(asynchronous module definition,AMD)为系统异步加载及模块化构建复杂WebGIS应用提供了一种很好的方式。

1 AMD 1.1 模块

在AMD中,模块是一个可通过ID引用的实现某个特定功能的代码集合,一个模块存储在一个经过封装的Javascript文件中,它必须遵守模块的格式规范,并且指定依赖和提供输出功能。AMD通过define函数来定义模块,在定义模块时可为模块指定ID,同时AMD也支持匿名模块,这时模块的ID则为对应模块路径下的文件名。一个复杂的功能可以被拆分成多个子模块,以减少代码的复杂度和便于进行协同开发。

1.2 加载器

在AMD,中加载器用来解析和加载模块,与其他插件进行交互以及管理配置项,在加载一个模块的同时根据模块间的依赖关系自动加载其所依赖的模块[8]。模块加载过程如图 1所示。AMD加载器通过require()函数加载模块,该函数接受3个参数分别用来配置加载器、指定要加载的模块和定义加载完成后要执行的函数,加载器对模块的加载是异步进行的,即加载模块不影响浏览器的其他操作,加载器对没有依赖关系的模块集是异步同时加载的,对有依赖关系的模块则分先后加载,在模块加载完毕后将加载结果以参数的形式传给回调函数并执行回调函数中的代码,避免了系统的卡顿,同时不需要的模块将不会被加载,减少了系统的负载。得益于AMD规范的开放性,目前有很多Javascript库都实现了基于AMD的加载器,如Dojo、curl.js和RequireJS等。本文采用基于Dojo的ArcGIS Javascript API加载器。

图 1 模块加载过程 Figure 1 The Process of Loading Module

1.3 构建器

构建器是一种处理程序,用来在加载资源前对资源调度进行优化,以提高资源的加载效率,减少加载时间。它对资源的一个重要优化是在加载某个模块前,检查该模块的依赖关系,将被该模块依赖的模块组织成有序的单个Javascript文件,这时浏览器只需要一个请求便可同时加载多个模块,减少浏览器发送的请求数,提高效率。

2 系统设计 2.1 系统框架设计

美丽淳安生态地理信息系统以“数据层+服务层+应用层”为基础框架,以GIS为核心,来完成数据库和系统的建设。数据层由基础地理信息数据库、美丽乡村建设数据库和系统维护数据库组成,基础地理信息数据库与其他系统共享,通过服务接口的形式访问数据内容,美丽乡村建设数据库存储美丽乡村建设数据、生态环境数据等专题数据,空间数据与属性数据分开存储,系统维护数据库存储用户权限等系统维护数据。服务层实现对各类信息资源的对外发布和共享,通过WCF提供了数据查询、统计分析、路线规划、数据管理、权限控制、运行维护等各类API[9]。应用层系统采用层次式的技术架构,将多源、多类型地理信息资源进行有机组织,并综合集成到系统中。系统框架图如图 2所示。

图 2 系统建设框架 Figure 2 The Framework of the System

2.2 数据库设计

美丽淳安生态地理信息系统的数据库主要由基础地理信息数据库、美丽乡村建设数据库以及系统维护数据库组成。

1) 基础地理信息数据库。 基础地理信息数据共享数字淳安地理空间框架的数据,主要包括:全县域0.2 m分辨率高分航空影像数据、1∶10 000 DLG地理实体数据、主城区和中心镇1∶500 DLG数据以及淳杨公路、千汾公路沿线的街景数据。

2) 美丽乡村建设数据库。 美丽乡村建设数据库包含美丽乡村建设与生态环境建设数据,本系统参考相关的国家标准和行业标准,结合乡村建设和公众服务的实际要求,将美丽乡村建设数据库划分为村庄建设数据、生态环境数据、经济发展数据、社会事业发展数据、精神文明建设数据和村务管理数据。

村庄建设数据包含淳安县各村镇基本概况、土地利用、基础设施、房屋建筑和生态规划布局数据。生态环境数据包括淳安县工业企业的生态监管数据、污水处理厂数据、污水治理项目数据、饮水改造工程数据、垃圾填埋场数据、空气质量数据、森林蓄积量以及森林蓄积率。经济发展数据包括各行业收入、经济与人口指数、产业结构数据、旅游业发展数据以及村民收入各项指标数据。社会事业发展数据包括人口数据、基层组织数据、绿道数据、驿站数据以及医院、养老院、学校等社会保障数据。社会精神文明建设数据包括文体基础设施数据、文体活动数据、民俗文化数据等。村务管理数据包括村务、财务、党务公开文件数据以及公共卫生保洁、园林绿化维护、基础设施维护等监督考核记录数据。

3) 系统维护数据库。 系统维护数据库用于存储美丽淳安生态地理信息系统运行所需要的和新产生的数据,比如用户信息、角色信息、权限信息和操作日志等数据,并且存储这些数据间的关系。该数据库负责系统的运行、协调和监督,是整个系统运行的基础。

2.3 技术路线

美丽淳安生态地理信息系统是一个专业而开放的系统,在系统建设过程中充分利用已有资源,采用成熟、先进的技术及主流软件平台进行开发,总体技术路线如下:

1) 数字淳安地理空间框架为基础的多源地理信息服务整合技术。 美丽淳安生态地理信息系统涉及统计、规划、旅游、农办、测绘等多个部门,为充分利用各部门信息资源,减少信息服务的重复建设,降低单个系统维护成本,将不同类型、不同来源的服务通过标准化流程进行一体化整合,将具有相关性的一组服务按照一定的业务逻辑集成为一个逻辑服务,并通过标准API统一发布,提供地理信息服务目录。系统底图涉及国家、省、县三级天地图服务,通过实现OGC定义的标准空间信息服务将三级天地图服务整合为一个统一的服务,根据地图缩放级别自动确定实际调用的地图数据,实现多级数据的无缝整合。系统POI数据服务将国家天地图POI服务、数字淳安地理空间框架建设的地名地址服务、当地旅委等部门建设的共享数据服务以及本系统建设的专题POI服务集成为提供统一接口网络服务,根据当前地图缩放级别、地图中心点位置以及关键词提供不同粒度的POI数据查询定位服务。导航服务将天地图导航服务与本系统建设的基于淳安县路网的导航服务进行整合,若导航起始点均位于淳安县境内,则调用更精细的淳安县路网导航服务,若起始点中至少有一个点位于淳安县以外,则自动调用天地图提供的导航服务。

2) 海量新媒体生态环境数据的定时获取与挖掘利用技术。 新媒体指的是报刊、广播、电视等传统媒体以后发展起来的新的媒体形态,包括网络媒体、手机媒体、数字电视等。随着新媒体的迅猛发展,海量的新媒体数据也随之产生,作为大数据的重要来源之一,新媒体大数据具有解析度高、广度大、即时交互等诸多优势,蕴含着巨大的价值。为紧跟时代步伐,充分利用新媒体数据的巨大优势与潜力,美丽淳安生态地理信息系统将网络爬虫技术和数据挖掘技术相结合,实现从海量新媒体数据中定时获取生态数据,并对其进行挖掘分析及可视化。

本系统利用网络爬虫技术,通过互联网,从海量的网络数据中实时抓取新媒体数据,并通过建立文档主题生成模型提取不同数据所对应的主题,选取与淳安新农村建设以及生态信息相关的主题数据,通过ETL技术将获取的新媒体数据融合入本地数据库,利用数据挖掘技术进行分析和可视化,供系统进行展示和决策分析。

3) 采用开放易扩展的软件架构。 服务体系采用SOA架构,它将应用程序的不同功能单元通过良好的接口和契约联系起来,WSDL、UDDI和SOAP是SOA的基础部件,WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP作为传输层,用来在消费者和服务提供者之间传送消息。SOA架构具有可重用、松耦合、独立性强等特点,并且它基于公认、开放的接口,可提供REST服务、SOAP服务、OGC服务等多种类型的服务[10]

美丽淳安生态地理信息系统基于SOA架构进行开发,提供REST风格的WCF二次开发接口,通过Ajax调用服务结合HTML5和CSS3前端渲染完成数据分析及可视化。

3 系统实现 3.1 配置与模块划分

1) 配置。 系统模块包括两类:一是系统引用的API文件,二是自定义的JS文件。两者在服务器上存储的路径不一致,因此,需要通过加载器的一些配置选项将其定义为不同的模块包,以便能在正确的位置加载需要的模块。基于Dojo的AMD加载器可在加载器引入前进行配置,也可在调用模块时进行配置,本系统采用前者。系统只需通过自定义模块的别名便可方便地调用需要的模块。

2) 模块划分。 系统将自定义的模块包划分为地图加载模块、通用功能模块、数据模块及一些定制功能模块。如图 3所示。

图 3 系统模块划分 Figure 3 The Division of the System Module

3.2 模块定义与功能实现 3.3.1 模块定义

AMD通过define()函数定义模块,define(moduleID,dependencies,factory)函数接收3个参数,moduleID参数代表模块ID用来标示模块,该参数为可缺省参数,缺省时,模块ID为相应的Javascript文件名,该参数主要用来支持早期的AMD加载器,在新的规范中建议缺省;dependencies参数定义模块的依赖项,为可缺省参数;factory参数为模块的值,可以返回一个declare()函数定义的对象,也可返回一个Javascript对象或直接定义模块要进行的操作。

3.3.2 功能实现

1) 统计功能。 为直观地展示社会、经济、生态指标数据,对淳安县及其各乡镇、村的基本概况、基础设施、基层组织、经济人口、土地利用、生态人居等数据进行统计分析,并将统计结果以柱状图、折线图、雷达图展示。对于乡镇级别的统计数据,根据统计结果对相应的乡镇面状数据进行实时渲染,直观地展示各乡镇在该统计指标上的差别。

2) 景点热度监测功能。 景点往往在某一特定时间吸引大量瞬时人口,然而景区的生态环境、基础设施的人口负载量是有限的,为了保护景区生态环境、方便游客出行,接入淳安县旅游委员会的实时数据,通过手机获取各景点人数数据,调用服务得到JSON格式的数据及相应景点的坐标,按照景区拥挤度指数实时渲染并在网页上显示,指示各景区的拥挤程度,指导游客出行。

3) 路线导航功能。 提取淳安县路网数据,通过ArcGIS Server发布为路线导航服务。为了使本地的导航服务与国家天地图的导航服务相统一,当用户选取的起点和终点均在淳安县内时调用本地服务进行路线导航,当起点和终点不在淳安县内时调用国家天地图的路线导航服务。

4) 历史影像对比功能。 影像数据能够宏观反映一个地区的生态建设现状,包括植被覆盖变化、水体范围变化、土地利用和历史变迁等。将淳安县由1960年开始的历史影像与当前的影像进行分屏显示,同步移动和缩放事件实现历史影像对比。

5) 空气质量监测功能。 为实时监测空气质量,便于发现异常值,及时发现污染源,对淳安县PM2.5浓度和空气质量指数进行监测并实时发布,在网页上用折线图对每天的监测结果进行展示。

6) 街景功能。 将淳安县的街景数据发布为服务,根据用户选择的点坐标分屏展示相应地点的街景,并根据街景中的用户前进后退操作,实时在地图界面定位。

3.3 模块调用

AMD对模块的调用通过require()函数实现,require(configuration,dependencies,callback)函数接收3个参数,configuration参数用来在调用模块前重写对加载器的配置,该参数为可缺省项;dependencies参数代表要调用的模块;callback参数为调用模块后要执行的操作。

3.4 系统界面

系统主界面如图 4所示。

图 4 系统主界面 Figure 4 The Main Interface of the System

4 系统特点 4.1 以互联网地图为载体服务民众

地图反映了自然环境的空间分布,以地图为载体展示生态专题数据,对于宏观生态监测有着独特的优势。随着互联网的普及,互联网地图越来越多地服务于公众生活,然而商业互联网地图上乡村地区的信息非常有限,美丽淳安生态地理信息系统面向美丽乡村的建设与服务,并增加了生态专题数据,既服务了民众生活,又为民众参与生态建设提供了入口和方式,增加了民众参与度。

4.2 新媒体生态环境数据的挖掘利用与在线可视化

从海量的微博新媒体数据中,通过数据抽取、数据清洗、数据选择、数据转换等过程进行异构数据的处理,并利用分类、聚类、关联等数据挖掘方法挖掘利用新媒体中的生态环境数据,结合Echarts可视化技术进行在线可视化,得到生态环境数据新闻,全面客观地表现乡村生态环境状况。

4.3 快速异步加载提高系统性能

系统对模块的加载是异步同时进行的,加载完毕后,通过回调函数执行相应操作,避免了系统阻塞与延迟,同时基于AMD的构建器可以减少浏览器对服务器的请求数量,从而减轻服务器负担。

4.4 模块化开发与管理降低开发成本,提高系统重用性

将复杂的系统细分为多个简单模块是AMD的一个重要优势,多个模块之间功能相对独立,便于协同开发,模块之间依赖关系明确利于测试和调试,通过采用匿名模块的方式,模块调用只需知道模块的相对位置,便于重用和迁移。

通过使用AMD,模块的定义与调用均在相应的函数中完成,不需要使用全局变量,从而减少对全局变量的污染,避免了代码之间的冲突,提高系统的健壮性。当新增模块时,只需要在新的Javascript文件中定义该模块即可,不需要考虑已有模块中的变量命名等问题,提高了系统的扩展性。

5 结束语

美丽淳安生态地理信息系统将地理信息服务与生态监测、生态指标的统计分析相结合,为淳安县生态文明建设成果提供了展示的平台。

模块化是构建大型复杂WebGIS系统的必经之路,AMD规范为WebGIS系统提供了定义模块、管理模块依赖、调用模块以及异步加载模块的有效方式,为WebGIS在各行业更深入的应用提供了参考。

参考文献
[1] 马世骏, 王如松. 社会-经济-自然复合生态系统[J]. 生态学报,1984,4(1) : 1–9.
Ma Shijun, Wang Rusong. Social-Economic-Natural Complex Ecosystem[J]. Acta Ecologica Sinica,1984,4(1) : 1–9.
[2] 郭明强. 面向高性能计算的WebGIS模型关键技术研究[D].武汉:中国地质大学,2013 Guo Mingqiang. Research on the Key Technologies of High Performance Computing WebGIS Model [D]. Wuhan: China University of Geosciences, 2013
[3] 方坤. 基于RIA技术的构件式WebGIS表现层技术研究[D].武汉: 中国地质大学,2009 Fang Kun. Research on RIA Based Components WebGIS Presentation Tier Technology [D]. Wuhan: China University of Geosciences, 2009
[4] 葛广照, 刘星. 基于WebGIS的城中村流动人员信息系统设计与实现[J]. 测绘地理信息,2013,38(5) : 61–64.
Ge Guangzhao, Liu Xing. Design and Realization of Information System for the Floating Population of Villages Based on WebGIS[J]. Journal of Geomatics,2013,38(5) : 61–64.
[5] 杨志波. 基于Ajax技术的WebGIS研究及实现[D].广州: 中国科学院研究生院,2006 Yang Zhibo. A Study on WebGIS and Its Implementation Based on Ajax Technology [D]. Guangzhou: The Graduate School of the Chinese Academy of Sciences, 2006
[6] 王玉娥, 刘晖. WebGIS及其体系结构研究[J]. 测绘工程,2009,18(2) : 70–73.
Wang Yu’e, Liu Hui. Research on Architecture and Application of WebGIS[J]. Engineering of Surveying and Mapping,2009,18(2) : 70–73.
[7] 徐卓揆. 基于HTML5、Ajax和WebService的WebGIS研究[J]. 测绘科学,2012,37(1) : 145–147.
Xu Zhuokui. Research on WebGIS Based on HTML5, Ajax and Web Service[J]. Science of Surveying and Mapping,2012,37(1) : 145–147.
[8] 陈南平. AMD异步加载引擎设计与实现[J]. 软件导刊,2014,(11) : 105–107.
Chen Nanping. The Design and Implementation of Asynchronous Loading AMD Engine[J]. Software Guide,2014,(11) : 105–107.
[9] 严商, 黄樟灿. WCF:Windows平台新一代通讯基础研究与分析[J]. 计算机与数字工程,2008,(4) : 86–89.
Yan Shang, Huang Zhangchan. WCF:New Fundament of Communication Technology Based on Windows Platform[J]. Computer & Digital Engineering,2008,(4) : 86–89.
[10] 诸云强, 冯敏, 宋佳, 等. 基于SOA的地球系统科学数据共享平台架构设计与实现[J]. 地球信息科学学报,2009,11(1) : 1–9.
Zhu Yunqiang, Feng Min, Song Jia, et al. Research on Earth System Scientific Data Sharing Platform Based on SOA[J]. Journal of Geo-information Science,2009,11(1) : 1–9.