基于MapXtreme的WebGIS解决方案-

基于MapXtreme的WebGIS解决方案- -                                        《计算机工程与科学》-2004年第26卷第2期基于MapXtreme的WebGIS解决方案刘书雷,李军,陈宏盛,景宁(国防科技大学电子科学与工程学院,湖南长沙 410073)   摘 要:本文分析了具有代表性的WebGIS平台MapXtreme的基本结构、工作原理以及基于MapXtreme的两种GIS数据管理策略,讨论了在GIS数据管理过程中可能遇到的问题,并提出了解决的方法。文章还描述了基于MapXtreme的WebGIS的体系结构,分析了在这种结构下的客户端解决方案、网站的扩展性策略等关键技术,最后简要介绍了一个实例。  关键词:WebGIS;MapXtreme;GIS数据管理  中图分类号:P208    文献标识码:A 1 引言  地理信息系统(Geographic Information System,简称GIS)是能够收集、管理、查询、分析、操作以及表现与地理相关的数据信息的计算机信息系统,能够为分析、决策提供重要的支持。如何把因特网和GIS结合起来,即采用B/S的计算机模式,客户方不需要任何特殊的配置便可进行交互式地图操作以及方便的信息查询,是当前地理信息系统领域的一个研究热点。 2 MapXtreme简介  MapXtreme是MapInfo公司推出的基于因特网/内联网的地图服务器。通过对GIS软件MapInfo和MapX的功能集成,信息管理员只需要在Web服务器上安装MapXtreme,并对其进行编程和管理,用户即可通过Web浏览器访问MapXtreme,并获得MapXtreme所提供的GIS功能,如地图的显示、制作专题地图进行地理分析等。  MapXtreme采用的是服务器端解决方案,客户端只需要标准的Web浏览器。MapXtreme的地图功能来自于地图引擎(MapEngine)。地图引擎包括三个核心部件:MapX、MapXServer和MapXBroker。MapX提供地图操作功能;MapXServer对MapX进行封装,使MapX能运行于安全的线程空间;MapXBroker则用于预启动MapXServer的实例,并可以用来对网站进行扩展。MapXCourier不是地图引擎的一部分,它可以用来在应用程序和地图引擎之间进行通信。  MapXtreme系统主要由三个层次组成。顶层是因特网技术,采用TCP/IP、CGI、HTML等技术标准,保证了系统的标准性、开放性和先进性;底层是图形平台MapInfo Professional和基于ActiveX技术的MapX控件技术;中间的是MapXtreme,作为服务器端的新一代地图应用服务运行模式,采用内置开发工具、进程调度器、分布应用模式等新技术。MapXtreme基本不改变服务器端原有的GIS系统函数,几乎了所有的操作分析。 3 基于MapXtreme的WebGIS结构  我们采用如图1所示的四层体系结构,包括浏览器、Web服务器、应用服务器以及GIS数据服务器(OracleSpatial)。客户端用于向服务器发送数据请求并显示所请求的数据;Web服务器接受请求,并把应用服务器的处理结果返回给用户;应用服务器负责应用处理过程;数据服务器端只进行数据的管理工作。在基于MapXtreme的工作方式下,所有的地图数据和应用程序都放在Server端,客户端只是提出请求,所有的响应都在Server端完成。只需在Server端进行系统维护即可,客户端无须任何维护,大大降低了系统维护的工作量。实际操作时,应用服务器和Web服务器可以安装在同一个服务器。数据库服务器可单独安装,也可与应用服务器和Web服务器安装在一起。 4 关键技术分析4.1 GIS数据管理  GIS数据分为空间数据和属性数据,二者的紧密结合形成对地物的描述,对一类数据 的操作必然会影响与之相关的另一类数据。因此,如何在计算机中有效存储和管理这两类 数据是GIS的基本问题,也是GIS中最底层和最基本的技术。在MapXtreme系统中可以采用 两种策略来管理GIS数据;文件策略和空间数据库策略。4.1.1文件策略  地理信息系统中通常用“层”的概念来分别存储不同专题的空间信息,同一层上的空 间对象具有相同类型的属性信息,即每一层存放一种专题或者一类信息,并有一级对应的 数据。文件管理策略就是每一类型的地图数据都存放在一个.TAB文件中,对应地图对象的 属性数据则采用一般的关系数据库管理系统来管理,两者通过一定的机制关联起来,多个 不同类型的.TAB文件结合起来就可以用来表示综合的地图信息。这种策略至今仍是GIS的 一种主要数据管理方法。  MapXtreme系统采用GeosetManager来管理这些.TAB文件。GeosetManager可以将多个 .TAB文件打包为一个.GST文件,这个文件就包含对应的地图信息。把这个.GST文件设置为 MapXBroker的地图属性,用户通过访问MapXBroker就可以读取相应的地图数据,并可以在 地图上进行缩放、漫游、访问地图上连接的信息,以及制作专题地图进行地理分析等相关 操作。4.1.2空间数据策略  空间数据库型GIS采用空间数据库来实现空间数据和属性数据的一体化管理,这可以 充分利用目前大型商业数据库的优势,容易实现分布式结构、多源数据库连接、多用户等 功能。因此,空间数据库是GIS领域的一个研究热点。  我们采用Oracle公司的空间数据库管理系统OracleSpatial来管理地图数据,利用 OracleSpatial需要注意以下几个方面问题:  (1)地图数据的上传。现有的地图数据大多以.TAB文件的格式存放,我们首先需要把 以文件格式存放的GIS数据导入服务器端的OracleSpatial中,数据上传工具采用MapInfo 公司的数据转化工具EasyLoader。上传结束后,OracleSpatial会为每一个上传的.TAB文 件在数据库中新建一个同名的表格,对应.TAB文件的空间数据和属性数据都存放在这个表 格中。  (2)地图对象样式的恢复。由于在将MapInfo的表上载到OracleSpatial空间数据中时 ,Oracle为每个MapInfo表中的每一类空间对象只在MAPINFO.MAPCATALOG视图中保存一种 对象样式,所以当用户再通过MapInfo Professional将上载表下载到MapInfo中显示时, MapInfo只能将该表中的每一种对象(点、线、面)恢复成其第一个对象的样式。这就引起 了地图对象样式的丢失,如果一个图层上既有铁路也有公路,这两种对象采用不同的线形 分别表示,数据上传在OracleSpatial中仅保留一种线形,所以当这个表重新下载显示时 ,图层中的铁路和公路就会是同一种线形。  利用EasyLoader上载MapInfo表之前,可以先在表中增加几个属性字段,将点、线、面的样式特性当作对象的属性值保存到表中,并连同表的其它属性一起上载到OracleSpatial数据库中。当用户通过程序将该表从OracleSpatial中下载到MapInfo中后,再根据点、线、面的样式信息,利用程序将点、线、面的样式恢复出来,这就可以解决对象样式丢失问题。  由于现在OracleSpatial还无法接受MapInfo的文本对象,所以用户将MapInfo的文本对象图层上载到Oracle表中后,再下载到MapInfo的环境中时,所有的文本对象都会丢失。利用EasyLoader上载MapInfo表之前,先在表中增加几个属性字段,将文本对象的信息(如文本对象的内容、文本样式等)当作对象的属性值保存到表中,实现的方法和点、线、面的方式相同。当用户通过程序将该表从OracleSpatial中下载到MapInfo中后,再根据保存在表中的文本对象的信息,利用程序为每个记录再重新创建一个文本对象。  (3)地图数据的显示。MapXtreme可以读取并显示OracleSpatial中的地图数据(如下代码),在显示的地图上可以进行缩放、漫游、访问地图上连接的信息,以及制作专题地图进行地理分析等相关操作。... ...Set Info = CreateObject("mapx.layerinfo.5")Info.Type = 4   ' 设置type为miLayerInfoTypeServerInfo.AddParameter "TOOLKIT","ORAINET"' 连接数据库Info.AddParameter "CONNECTSTRING","SRVR=OraDB;UID=SYSTEM;PWD=MANAGER"Info.AddParameter "CACHE","ON"Info.AddParameter "MBRSEARCH","ON"' 读取空间数据库中图层ASIA上的数据Info.AddParameter "SELECT GEOLOG,COUNTRY,MLSYMBOLOGY FROM ASIA"Info.AddParameter "NAME","ASIA"   ' 生成图层名字Session(cMapXObject).Layers.Add.Info... ...4.2 客户端策略  根据具体的应用,在客户端可以采取三种策略:瘦客户型、混合客户型和胖客户型。瘦客户型在客户端不需要安装任何其它插件,只需要一个浏览器即可,服务器将地图分析结果以位图的开工插入到HTML页面,并将其传送到客户端浏览器中,显示出来。  混合客户型的应用每次在访问服务器时,都会从服务器上下载JavaApplet,它能增强客户端浏览器的地图分析功能。但是,下载Applet会增加网络的流量,并且Applet的使用也会影响页面的显示速度。  胖客户端类型的应用在第一次访问服务器时,会下载MapJ控件。它可以接受服务器端传送过来的矢量地图数据,直接在客户端基于矢量数据进行地理分析。虽然这种方式能最大可能地增加客户端的功能,但由于这种方式每次都要传送大量的矢量地图数据,所以初次登录时页面显示速度最慢。4.3 扩展机制  在构建WebGIS应用之前,应当事先考虑到网站的扩展问题。对MapXtreme来说,地图引擎在用户的每一个会话期间都要创建一个MapXServer对象实例,并保持其激活状态直至用户会话结束;每个MapXServer都会战胜自己独立的处理空间(CPU、内存硬件资源),如果同时有几百甚至上千个用户访问的话,服务器将面临严峻的考验;另外为每一个用户都维持一个激活的MapXServer实例是一种低效率的做法,如何解决这个问题将直接关系到我们开发的系统是否具有实用价值,是否具有生存价值。  我们可以采用两种工作机制来实现平衡,以解决这个问题:横向扩展和纵向扩展。  (1)横向扩展。横向扩展指的是和种分布式配置方式,是通过增加服务器的数目来分担单台服务器的过重负载的。这种方式需要在每台服务器上安装MapXtreme,适合于访问量非常大的系统,但代价非常昂贵。  (2)纵向扩展。纵向扩展是通过MapXtreme的MapXBroke组件优化Web服务器来实现的。MapXBroker是作为一种系统服务运行于服务器系统上的,当它启动时就会创建一个MapXServer的共享池(称为预启动机制)。当一个MapXtreme应用程序需要执行与地图操作相关的请求时,就向MapXBroker申请一个MapXServer的对象实例;当含地图的主页动态生成以后,再把MapXServer实例释放给共享池,以便其它用户申请。这种共享机制使有限的资源可以支持多个用户并发请求;这种机制的另一个好处在于当应用程序申请MapXServer对象时,该对象已经存在于共享池中并运行着(预启动机制),因而比申请时再创建一个MapXServer对象要快得多。  在实际的应用中,可以根据具体情况采用横向扩展与纵向扩展相结合的方法。 5 一个WebGIS实例  作者基于MapXtreme所开发的城市电子信息查询系统是一个基于因特网的地理信息系统。系统采用B/S结构模式,后台服务器端运行MapXtreme,采用OracleSpatial管理GIS数据,采用纵向扩展的方式解决多用户并发访问的问题。该系统已成功地实现了有关领导和部门通过因特网快速方便地查询城市的住宅建设、线路趋向等基础地理数据。基于MapXtreme运行的程序、图形数据库、属性数据库及其它组件集中存放在服务器端,客户端除了浏览器外不需要任何插件。图2为系统运行的界面,系统实现了缩放、漫游、不同信息分层、地图对象的添加删除、保存地图文件、对象查找功能。 6 结束语  因特网信息已经渗透到社会和经济领域的各个方面,随着地理信息系统技术应用的逐步推广,地理信息向Web的发布已经成为当前地理信息技术的发展方向之一。本文所提出的基于MapXtreme的WebGIS实现方法,对于通过因特网实现具有空间牲的信息发布以及利用空间数据库管理系统OracleSpatial进行数据管理、客户端策略、系统的扩展性等一毓技术问题进行了探讨,并提出了相关问题的解决方法,具有很好的实用意义。参考文献:[1] 刘仁义,朱焱。WebGIS技术信息查询系统开发及实现[J]。计算机应用研究,2001,18(3)102-104。[2] 任伟红,张蕾,周洪。基于Internet的地理信息系统(WebGIS)在电力系统中的应用[J]。华北电力技术,2001,(7)27-29。[3] 刘南,刘仁义。基于MapXtreme的互联网地理信息系统开发与实现[J]。浙江大学学报(理学版),2000,27(5)573-577。[4] 常乐。WebGIS应用技术研究:[硕士学位论文][D]。国防科学技术大学,2001[5] 邹德禹。MapXtreme中文高级教程[M]。MapInfo China技术部,2001[6] http://www.techmart.com.cn/software/XtremeNT.htm, 2002-01. 作者简介:刘书雷(1979-),男,河南南阳人,硕士生,研究方向为空间数据库技术和MapXtreme应用技术;景宁,博士生导师,研究方向为地理信息系统与数据库技术。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉心编码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值