尹岩雷
邯郸银行信息科技部,河北邯郸 056002
GIS(地理信息系统)是收集、存储、管理和分析数字地理空间信息的系统,它是一种特定的十分重要的空间信息系统。随着人们生活水平的提高,其应用也越来越广泛。由于类似于手机的手持设备已经成为了人们生活必不可少的工具,也是伴随着人们时间最长的工具,因此将GIS应用与手机之上将会给人们的生活与工作带来更多的方便。
Mobile GIS(移动地理信息系统)就是以WWW的Web页面作为GIS软件的用户界面,把Internet和GIS技术结合在一起,能够进行各种交互操作的GIS,它是一种大众化的GISoWeb页面使用超媒体技术和超文本链接语言,使得对WWW的操作更富有灵活性和趣味性。以Web作为GIS的用户界面,将一改以往GIS软件用户界面呆板生硬的面孔,更利于GIS大众化。本文首先对移动GIS系统的进行分析,然后对系统的功能模块进行设计。
系统的执行单元即为功能模块,合理的模块划分对系统针对不同的应用进行功能的裁减是非常有帮助的。按照实际需要,我们把本系统的功能模块分成了图层控制模块、地图操作模块、GPS数据获取和现实模块、数据管理模块、空间分析模块。
该模块的基本操作包含了恢复原始试图、地图的平移与缩放。还能控制是不是要显示比例尺、指南针。
该模块包含了图层的叠放次序控制与可见性控制,还能控制是否要显示具体的图层的标注。
该模块主要有分析、路径查询和按照图形来查属性的功能。
本模块将移动终端的运算能力充分挖掘出来了,通过周边查询、按照关键字来查位置,从而实现通过路径查询来找到各个空间。由于路径查询的算法十分复杂,所以把它放在服务器端来运算,而客户端则完成了本地显示和解析返回的结果。本系统尚未涉及到一些更高级的GIS的空间分析模块,像是三维分析、面或线状地物分析、叠置分析等。
该模块在有效组织与存储地图数据的基础之上,有效的管理了地图的数据,包含了地图信息元数据的查看、地图数据的删除、增加。增加地图数据的时候要向服务器端发出数据请求,将返回的数据解析以后再存储至相应的文件系统或者是RMS当中。
该模块的主要功能就是使得支持蓝牙的移动设备使用蓝牙来对附近的GPS数据进行读取。在获取GPS数据之后,要对坐标进行变换,不但能在手机的地图上显示出当前所在位置,还能进行导航和路径显示。
按照上述对功能模块的设计,该手机具有的具体功能包括地图操作、图层控制、地图的打开和浏览、数据请求、地图数据的管理、图形属性的互查、路径查询和显示等。依据各操作的关联性与逻辑联系,主界面将会提供四项功能,它们分别是打开地图、关于本系统、新地图请求和本地数据管理。主界面不会涉及到低级的用户界面当中的图形绘制,使用MIDP高级界面来实现的。其中,新地图请求界面的功能是让用户能便捷、直观地对新数据请求所需参数进行组合,向服务器提交所生成的规范的URIJ。它的作用是和服务器进行数据的交互,将本地数据的更新完成。本地数据管理则是提供本地的地图数据的元数据查看、删除、打开等功能。在打开地图中提供了两种地图打开的方法,分别为打开RMS列表和文件系统当中的浏览svg格式的文件。在打开地图的基础之上,再提供各项对地图的操作,例如图形查找、路径的查询和显示、图层控制、属性查找等。为了方便用户的操作,将会在每一个界面上提供帮助窗口,用来提供说明或操作方面的信息。
移动GIS系统的结构主要是由三部分组成的:数据源、服务器部分、客户端部分,分别承载于数据层、中间层和表现层。数据层包含了存有属性数据和空间数据的大型对象关系的数据库,不但提供数据,还提供了一个空间数据的引擎。中间层包含了互联网、MaPServer、移动互联网、webserver等部分,一方面提供了和移动终端的相互操作,另一方又提供了各种GIS的应用,同时还进行对空间数据的转换与处理。表现层则是客户端的载体,包含了各种不同的移动终端,能够为移动GIS系统离线服务的模式提供新的支持,也能和移动终端进行同步互联。
本移动GIS系统的客户端开发采用了NetBeans IDE5.5的开发环境,用NetBeans mobility5.5来配合,用最新的WTK2.5作为Java开发包。
2.2.1 地图数据的加载
所谓地图加载就是在移动终端显示出SVG文档的过程。在引入(import)必要的API包之后,可以在MIDlet当中用ScalableGrephics类来直接地绘制出一个Scalablelmage到Grephics对象上面,还能够通过参数来对屏幕上的绘制起点进行控制。SVGImage为ScalableImage的子类之一,提供了底层DOM文档访问和事件处理的直接联系。在绘制之前,一定要用bindTarget方法吧传递至绘制方法当中的Grephics对象与ScalabeGraphics实例绑定起来,并且在完成绘制之后调用releaseTargct()的方法。
2.2.2 地图基本的操作
尽管通过对SVG文档当中的坐标来运行transform的方法进行平移与变换也能够实现漫游于对地图的缩放,但是因为其中所涉及的坐标的变换需要数学运算,对某个元素进行特殊变换的时候可以使用这种方法,但是在进行整体运算的时候就会显得效率太低。
在SVG文档当中,
图1 地图放大前后的对比图
2.2.3 根据关键字来查位置
图2 查询的结果
所谓属性查询是指依据用户所输入的关键字来搜索相关地理要素,并且把它突出显示出来。在搜索的时候首先要将制定的图层当中的每个要素遍历,然后把符合条件的要素都添加进一个列表当中去。要是搜索的结果为空,要提醒用户重新搜索;要是结果仅有一个,就直接显示出来;要是结果有多条记录,就生成一个结果列表,让用户从中进行第二次选择再显示出来。
在高亮显示搜索的结果的时候,要把它放在当前屏幕中央的位置。可以采取获取结果实体中心的边界坐标或是中心坐标,然后再对viewBox属性进行调整的方法来实现。然而,获得用路径、矩形或者圆等表示的地理要素的位置坐标的方法是不一样的,并且在对线要素和多边形要素进行高亮度显示的时候要ui要素最小的边界矩形(MBR)进行计算,按照屏幕大小和图形大小的关系来确定viewBox的大小。搜索的结果如图2所示。
2.2.4 路径的查询
所谓路径查询是指显示两点间的路径信息,要实现此功能要借助于服务器。客户端向服务器提交起讫点的路径方式(最省时、最短等)和点位信息,服务器端在计算了路径之后,向客户端返回查询结果,移动终端解析了数据之后,利用程序来生成
图3 路径的查询界面和查询结果的界面
本文设计与实现的移动GIS系统,是真正意义上的MVC架构,与通常以JS技术实现的静态方式有根本区别。
[1]陈静,龚健雅,朱欣焰,李清泉.基于J2EE的分布式WebGIS[J].测绘通报,2004(2):27-30.
[2]戚铭尧,池天河,霍亮.Web-GIS的企业级解决方案探讨[J].计算机科学,2003,30(2).
[3]周颖.基于WebGIS的移动信息发布系统研究[D].北京.北京移动大学硕士论文,2004,3:19-22.