基于维基技术的GIS系统的设计与实现
2010-01-08曹玉清徐向华
曹玉清,万 健,徐向华
(杭州电子科技大学软件与智能技术研究所,浙江杭州310018)
基于维基技术的GIS系统的设计与实现
曹玉清,万 健,徐向华
(杭州电子科技大学软件与智能技术研究所,浙江杭州310018)
该文着重介绍了将Wiki技术引入GIS系统的设计思想,并描述了使用GoogleM aps API以及SharpMap开源平台对系统的实现。用户通过该系统可以方便浏览,共享电子地图,并可以加入特色标记和绘制路线。有了广泛的用户参与,可以大大丰富系统的资源,并且可以推进GIS系统大众化和社会化的应用普及工作。
维基技术;谷歌地图;地理信息系统
0 引 言
维基技术提供了一种方便的信息共享方式,人人都能参与编辑和修改信息。该技术目前已有广泛的应用,维基百科就是成功的典范。地理信息系统(Geographic Information System,GIS)一般都是由服务器方提供地理数据,这样的方式为用户提供的信息是比较有限和片面的。如果把维基技术应用到GIS中,由广大用户分享自己的信息,并能对他人提供的信息进行核对修改,那么系统提供的信息量将会数倍增长[1,2]。国外已研究部署了实时定位和更新数据的维基地图系统,国内比较成功的有易地图,但其地图数据完全来自谷歌,支持的地图格式比较少,地理信息种类单一。该文描述了将维基技术应用于GIS服务系统的方法,介绍了提高地图处理与显示速度的方法,并提供了多种地理信息描述和更多地图格式支持。
1 相关技术和开源平台介绍
Google Map是谷歌公司提供的在线地图服务[3]。2005年6月谷歌开放了谷歌地图应用程序接口。它提供了基于谷歌地图的数据调用和扩展接口。用户可以自主在地图上添加标记和信息窗口等,通过JavaScript脚本语言就可以将谷歌地图嵌入到自己的网页中[4,5]。
SharpMap是一个基于.NET 2.0使用C#开发的Map渲染类库,可以渲染各类GIS数据,它占用的资源比较少,响应比较快,使用简单,只需在.NET项目中引用相应的DLL文件即可,没有复杂的安装步骤[6]。目前支持B/S及C/S两种方式的DLL调用。
2 GIS系统的维基引擎
系统需要一个维基引擎,来负责接收用户请求,获取GIS数据库和文件库的资源,并将从谷歌地图服务器获得的地图数据和SharpMap渲染的地图信息返回给客户端。下文通过对比了传统的和基于维基技术的GIS系统的特点,进一步阐述系统层次架构的设计与实现。
(1)基于维基技术的GIS系统的特点。传统数字地图服务业形成的一个产业链。这个产业链总共包含4个环节,如图1(a)所示。这个产业链在数字地图有着诸多缺点:编辑和维护成本高、更新速度慢、运营成本高、地图数据来源单一等。而基于维基技术的GIS系统摆脱了数据提供商和地图供应商在产业链上的束缚,采用以用户为中心的方式进行,如图1(b)所示。把用户提升为系统主角,服务提供商只作为平台提供者和平台的维护者。因此,如何设计一个面向用户、精度高、效率高、交互方式丰富的维基引擎成为了系统开发所要考虑的关键问题。
图1 传统数字地图服务产业链与基于维基技术的GIS系统
(2)GIS元素提取和维基页面的构成。首先确定维基页面单位的类型,例如:维基百科的词条是一种维基页面单位的类型。而GIS系统的维基引擎,需要把GIS元素作为维基页面单位的类型,如地点、线路等GIS元素。GIS系统中的维基页面有两个组成部分,即:作为维基词条的文本部分和GIS地图部分。
(3)系统架构设计。维基引擎的设计中要实现相应的关键技术,例如:保留每一次变更的版本;版本对比;固定的编辑规则等。其中许多技术都牵涉到复杂的事务处理,而处理对象又是海量的GIS数据,这些因素必然对系统性能构成挑战。因此,在设计维基引擎时参考了.NET技术的3层架构模式[7],将事务处理与GIS处理分离,从而提高客户端与服务器的交互速度。例如:业务逻辑层采用的事务机制,不仅能保护数据和操作的完整性,还可以避免用户数据的冲突;数据访问层可加入多种数据库支持;用户界面层引入Ajax异步数据更新技术,解决前台频繁的GIS数据交互问题。系统层次架构如图2所示。系统其他部分包括一个文件库(存放地图文件),一个数据库(存放标记数据),一个功能类库(包括数据加密类,GIS编码类等系统功能类),谷歌地图应用程序接口还有ShapMap的组件。用户界面层调用谷歌地图应用程序接口获得地图数据,并根据用户的请求从数据库获得地理标记信息,如地点,折线等的编码;调用SharpMap组件,渲染地图文件,同时加载地理标记信息。
3 地图数据处理与显示
维基页面的加载过程也分为了两部分:维基词条的文本信息加载和GIS数据加载。其中GIS数据的处理与显示将最终决定客户端的请求响应速度。针对这一问题,下文给出了两方面的改进,用于提高客户端请求的响应速度。
(1)GIS数据统一编码。该部分是针对谷歌地图应用程序接口编程的改进。由于标记分为地点、折线和区域三种类型。地点标记需要记录经纬度,而折线和区域要记录每个折点的经纬度信息。如果对这些信息分类存储,需要传输的数据量比较大。谷歌地图提供了折线的编码算法,该算法可以扩展到地点编码和区域编码,从而统一了这3种标记需要记录的GIS信息。这个改进不仅可以优化数据存储,减少代码量,增强系统可维护性,也大大提高了GIS数据传输的效率。
图2 系统层次架构图
(2)地图文件与标记数据的分离
该部分是针对SharpMap组件加载地图和标记方法的改进。用户上传的地图文件大小不等,对某地图可能做的标记数量也未知。如果同时存储和处理文件和标记,当标记量过多的时候,系统响应速率会大大降低。地图文件作为标记的载体之一,必须首先加载到客户端,然后加载从数据库中取出对应的标记信息。系统在前台增加一个Ajax引擎,用异步传输机制高效解决批量标记的处理和显示问题。地图交互的时序模型如图3所示。首先客户端向维基引擎发送地图请求,维基引擎从文件库查询该地图,并将地图返回给地图渲染组件,最后将渲染好的地图加载到客户端。此时,用户便可在此地图上添加标记了。加载标记时,客户端调用A jax引擎产生一个Http请求,Ajax引擎将该请求异步传输到维基引擎,并将控制权返回给客户端,维基引擎分析请求类型,然后连接数据库查询标记,并将结果作为数据集通过Ajax引擎返回给客户端。通过将地图与标记在存储和处理时的分离,客户端可以更快的完成一次交互,而且在加载标记时,不用再对页面进行刷新,从而提高了系统的性能。
图3 地图交互时序图
4 系统运行结果
(1)高精度和高效率。精度分别从缩放级别和经纬度精确的小数点位数来衡量:Google Map参考其应用程序接口,缩放级别共分为17级,经纬度可精确到小数点后17位;而SharpMap渲染的地图文件,其缩放级别有360级,经纬度可精确到小数点后15位。这种精度已经完全可以满足绝大多数GIS用户的需求。由于系统基于谷歌地图服务,其地图加载速度与谷歌地图相当;另外由于SharpMap组件也引入了Ajax技术,支持地图局部刷新,使得客户端与服务器交互时,也具有比较高的效率,系统性能的瓶颈落在了地图文件的首次加载速度上,该速度取决于文件大小和网络状况,对用户与系统的交互影响不大。
(2)丰富的交互方式和多媒体支持。系统提供了非常丰富的交互方式。用户可以通过个人电脑访问服务器,上传图片格式地图和GPX等格式的地图标记文件,添加和绘制各类标记信息,进行地图文件预览,也可将从服务器下载的导航文件载入导航设备进行导航。系统还增加了一个Tracker服务器,从而支持地图文件的P2P下载。另外对标记信息增加了多媒体选项,用户在编辑标记文本信息时,可以加入图片,音频和视频,从而使系统成为了一个图文声色并茂的GIS交流平台。
5 结束语
将维基技术应用于GIS系统很好的弥补了传统数字地图服务更新慢,数据源单一等缺陷[2]。而且通过提取GIS元素,利用3层架构来实现的维基引擎,改进地图数据的处理与显示,这不仅很好解决了维基中复杂的事务逻辑关系,而且有利于客户端地图数据更新效率的提高,系统后期也将优化对多媒体数据的传输。随着谷歌地图服务提供的中国数据的不断更新,以及更丰富的应用程序接口调用的提供,系统的部署和使用也会更加方便和快捷,在系统投入运营后,有了广大用户的参与,就可以大大丰富GIS的数据源,真正将GIS大众化。
[1]Reid Priedhorsky,Loren Terveen.The ComputationalGeowiki:What,Why,and How[C].San Diego:Computer Supported Cooperative Work,2008:267-276.
[2]Teranishi Yuuichi,Kamahara Junzo,Shimojo Shin ji.MapWiki:a ubiquitous collaboration environment on shared maps[C].Phoenix:Applications and the InternetWorkshops,2006:4.
[3]Rousseaux Francis,Lhoste Kevin.Rapid Software Prototyping Using Ajax and GoogleMap API[C].Mexico:Advances in Computer-Human Interactions,2009:317-323.
[4]黄学龙,左宗义.Web 2.0环境下的GIS电子地图理论及应用[J].现代计算机,2008,25(6):170-172.
[5]杨天亮,王亮.基于GoogleMap API的电信基站信息管理系统研究[J].地理空间信息,2008,6(4):19-21.
[6]朱俊丰,赵俊三.基于开源平台的中小型WebGIS应用研究[J].地理空间信息,2008,6(1):92-94.
[7]周光亮.浅释.net三层架构的设计与实现[J].科技信息,2008,24(6):197-199.
GISSystem Design and Im plementation Based on Wiki Technology CAO Yu-qing,WAN Jian,XU Xiang-hua
(Institute of Softwareand Intelligent Technology,Hangzhou Dianzi University,Hangzhou Zhejiang310018,China)
This paper focuses on the design of a GIS system by introducingWikitechnology,and describes the implementation of the system by using Google Maps APIand an open-source platform SharpMap.The system users can easily browse and share electronicmaps,aswell as add features and route marker to themap.With awide range ofuser participation,the resourcesof thesystem can begreatlyenriched,while the popularization ofGIS system and the application ofuniversal socialwork willbe promoted.
Wiki technology;Googlemap;GIS
TP311.1
A
1001-9146(2010)03-0047-04
2009-09-18
浙江省科技计划资助项目(C23G2040020)
曹玉清(1983-),男,河南洛阳人,在读研究生,计算机软件与理论.