http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> WebGIS >> 正文

一种基于 OracleSpatial的WebGIS实现方法

作者:朱志伟,…    文章来源:国防科技大学政治部    点击数:    更新时间:2007-1-14
摘要:
  摘 要:分析了在WebGIS平台 MapXtreme的条件下,利用空间数据库管理系统OracleSpatial管理数据可能遇到的 问题,并提出了解决的方法。描述了基于MapXtreme的WebGIS的4层体系结构,并分 析了在这种结构下网站的扩展性策略等关键技术,最后简要介绍了一个基于 OracleSpatial的运行实例。
  关键词:WebGIS; Mapxtreme;Oraclespatial;扩展性 
  Abstract : This paper analyzes the principle and structure of the MapXtreme which is a representative Web GIS software platform, and analyzes the problems happened in the process managing data with OracleSpatial and provides the methods of resolvent .It describes a WebGIS architecture based on MapXtreme, and describes the scalability based on this architecture .At last, an actual running example is given.
   Key words : WebGIS; MapXtreme; OracleSpatial; Scalability
  Internet技术和地理信息系统技术(GIS)作为当代信 息技术飞速发展的前沿,已经结合得非常紧密。如何把GIS和Internet结合起来,即 采用B/S的计算模式,客户方不需要任何特殊的配置便可进行交互式地图操作以及方 便的信息查询,是当前地理信息系统领域的一个研究热点。
  传统的GIS系统 ,地图数据以文件的格式存放,地图数据与属性数据分开存放,但是基于文件格式 的GIS数据管理方法不能实现并发控制,不支持多用户并发操作,对于海量数据容易 引起混乱,并且空间数据和属性数据的分开管理,会带来数据的不一致性和操作效 率等问题。因此如何利用空间数据库来实现空间数据和属性数据的一体化管理,充 分利用目前大型商业数据库的优势,实现分布式结构,多用户等功能,在GIS领域已 经引起了越来越多的重视和研究。
  MapXtreme是MapInfo公司推出的WebGIS 解决方案,具有地图功能强大、容易扩充、开发简单等特点。本文提出并实现了一 种用MapXtreme来开发WebGIS的机制,并对利用空间数据库管理系统OracleSpatial 管理GIS数据进行了探讨。
1 MapXtreme原理及特点
   MapXtreme是MapInfo公司推出的基于Internet/Intranet的地图服务器。通过对GIS 软件MapInfo和MapX的功能集成,信息管理员只需要在Web服务器上安装MapXtreme, 并对其进行编程和管理,用户即可通过Internet/Intranet利用Web浏览器访问 MapXtreme,并获得MapXtreme所提供的GIS功能,如地图的显示、缩放、漫游、访问 地图上连接的信息,以及制作专题地图进行地理分析等。
  MapXtreme系统主 要由个3层次组成。顶层是Internet技术,采用TCP/IP、CGI、HTML等技术标准,保 证了系统的标准性、开放性和先进性;底层是图形平台MapInfo Professional和基 于ActiveX 技术的MapX控件技术;中间是MapXtreme,作为服务器端的新一代地图应 用服务运行模式,采用内置开发工具、进程调度器、分布应用模式等多种新技术。 MapXtreme基本不改变服务器端的原有的GIS系统函数,几乎承担了所有的操作分析 ,此运行模式有利于充分利用服务器端的资源,最大限度地发挥服务器的潜力,如 图1所示。

2 4层体系结构
  我们采用4层 体系结构(如图2),4层结构包括浏览器、Web服务器、应用服务器以及GIS数据服务 器(Oracle-Spatail)。浏览器用于向服务器发送数据请求并显示所请求的数据,Web 服务器接收请求,并把应用服务器的处理结果返回给用户,应用服务器负责应用处 理过程,数据服务器端只进行数据的管理工作。在基于MapXterme的工作方式下,所 有的地图数据和应用程序都放在Server端,客户端只是提出请求,所有的响应都在 Server端完成,只需在Server端进行系统维护即可,客户端无须任何维护,大大降 低了系统维护的工作量。实际操作时,应用服务器和Web服务器可以安装在同一个服 务器机器上。数据库服务器可以单独安装,也可以与应用服务器和Web服务器安装在 一起。

3 基于OracleSpatial的GIS数据管理
  GIS数据分为空间数据和属性数据,二者的紧密结合形成对地物 的描述,对一类数据的操作必然会影响与之相关的另一类数据,如何在计算机中有 效地存储和管理这两类数据是GIS 的基本问题,也是GIS中最底层和最基本的技术。
  传统的GIS系统,地图数据以文件的格式存放,地图数据与属性数据分开存 放,地图信息通过ID与属性信息挂接,这种处理方式结构简单,可以根据应用自行 定制文件格式,对于小系统来说,用文件格式开销比较小。但文件的缺点是不能并 发控制,数据几乎都不支持多用户并发操作,对于海量数据容易引起混乱;并且空 间数据和属性数据的分开管理,会带来数据的不一致性和操作效率等问题。空间数 据库型GIS采用空间数据库来实现空间数据和属性数据的一体化管理,这可以充分利 用目前大型商业数据库的优势,容易实现分布式结构,多源数据库连接,多用户等 功能,因此空间数据库是GIS领域的一个研究热点。
  我们采用Oracle公司的 空间数据库管理系统OracleSpatial来管理地图数据,利用OracleSpatial需要注意 以下几个问题:
  (1)地图数据的导入
  现有的地图数据大多以.tab文 件的格式存放,首先需要把以文件格式存放的GIS数据导入服务器端的 OracleSpatial中,数据导入工具采用Mapinfo公司的数据转化工具Easyloader,导 入操作可以在客户端执行也可以在服务器端执行。导入结束后,OracleSpatial会为 每一个导入的.tab文件在数据库中新建一个同名的表格,表格的字段包含.tab文件 中地图对象的所有属性字段和GEOM子段,GEOM的子段类型是SDO_GEOMETRY,它是 OracleSpatial定义的用来存放地图对象的空间结构;.tab文件中的每一个地图对象 对应于表格中的一条记录,空间数据存放在GEOM子段中,属性数据存放在表格的对 应字段中。
  (2)地图对象样式的恢复
  由于在将Mapinfo的文件格式 的GIS数据上载到OracleSpatial空间数据库中时,OracleSpatial只将.tab文件中每 一类空间对象(点、线、面)的第个对象的对象样式保存到MAPINFO_MAPCATALOG视图 中(地图数据导入时自动建立),当用户再通过Mapinfo Professional将上载表下载 到Mapinfo中显示时,Mapinfo只能将该表中的每一种对象(点、线、面)恢复成其第 一个对象的样式,这引起了地图对象样式的丢失,如一个图层上既有铁路也有公路 ,这两种对象采用不同的线形分别表示,数据上传时在OracleSpatial中仅保留一种 线形,当这个表重新下载显示时,图层中的铁路和公路就会是同一种线形。
   利用Easyloader上载Mapinfo表之前,可以先在表中增加几个属性字段,将点、线 、面的样式特性当作对象的属性值保存到表中,并连同表的其它属性一起上载到 Oracle数据库中。当用户通过程序将该表从OracleSpatial中下载到Mapinfo中后, 再根据点、线、面的样式信息,利用程序将点、线、面的样式恢复出来,这就可以 解决对象样式的丢失问题。
  让EasyLoader自动将样式信息提取出来, EasyLoader程序支持带参数运行,用户通过Command Line方式带参数运行 Easyloader(Easyloader\Easyloader /Y),就可将点、线、面的样式自动提取到一 个名为MI_SYMBOLOGY的字段中,并随Mapinfo表一起上载,如表1。MapXtreme的处理 模块MapX具有分析这些样式字段的功能,能对字段MI_SYMBOLOGY进行分析,并把分 析结构用于地图对象的显示。
  RoadName    MI_SYMBOLOGY     Linewidth    ......
  北京大道    Pen[2,2,16711680]   2        .....
  新华路     Pen[2,30,0]      2        ......
  南阳路     Pen[2,2,16711680]   2        .....
  (3) 文本对象的显示
  因为现在OracleSpatial还无法接收 Mapinfo的文本对象,所以用户将Mapinfo的文本对象图层上载到Oracle表中后,再 下载到Mapinfo环境中时,所有的文本对象都会丢失。利用Easyloader上载Mapinfo 表之前,先在表中增加几个属性字段,将文本对象的信息(如文本对象的内容、文本 样式等)当作对象的属性值保存到表中,并连同表的其它属性一起上载到Oracle数据 库中,实现的方法和点、线、面的方式相同。当用户通过程序将该表从Oracle Spatial中下载到Mapinfo中后,再根据保存在表中的文本对象的信息,利用程序为 每个记录再重新创建一个文本对象。
  (4)地图数据的读取显示
  利用 MapXtreme提供的接口连接并读取OracleSpatial中的GIS数据,OracleSpatial中每 一个表格对应于MapInfo中一个实际的图层,MapXtreme的功能模块MapX本身提供处 理表格中的空间数据的功能,可以把每一个表格中的GIS数据进行分析并显示为一个 图层,把所有的图层叠加就可以形成一幅完整的地图。在显示的地图上可以进行缩 放、漫游、访问地图上连接的信息,以及制作专题地图进行地理分析等相关的操作 ,连接OracleSpatial并生成图层的代码如下。
    ...
    Set Info = CreateObject("mapx.layerinfo.5")
    Info.Type = 4 '设置type为miLayerInfoTypeServer
    Info.AddParameter "TOOLKIT","ORAINET"
    '连接数据库
    Info.AddParameter"CONNECTSTRING","SRVR=OraDB;UID=SYSTEM;PWD=MANAGER"
& nbsp;   Info.AddParameter "CACHE","ON"
    Info.AddParameter "MBRSEARCH","ON"
    '读取空间数据库 中图层ASIA上的数据
    Info.AddParameter "SELECT GEOLOC,COUNTRY,MI_ SYMBOLOGY FROM ASIA"
    Info.AddParameter "NAME","ASIA" '生成图层名字
    Session(cMapXObject).Layers.Add Info
    ...

4 扩展机制
  在构建WebGIS应 用之前,应事先考虑到网站的扩展问题。对MapXtreme来说,地图引擎在用户的每一 个会话期间都要创建一个MapXServer对象实例,并保持其激活状态直至用户会话结 束;每个MapXServer都会占用自己独立的处理空间(CPU 、内存硬件资源),如同时 有几百甚至上千个用户同时访问,服务器将面临严峻的考验,严重时还将导致服务 器崩溃;另外为每一个用户都维持一个激活的MapXServer实例是一种低效的做法, 如何解决这个问题将直接关系到开发的系统是否具有实用价值,是否具有生存价值 。
  可以采用两种工作机制来实现平衡以解决这个问题:横向扩展和纵向扩 展。
  (1)横向扩展。横向扩展指的是一种分布式配置方式,这种扩展方式, 是通过增加服务器的数目来分担单台服务器的过重负载的。这种方式,需要在每台 服务器上安装MapXtreme,适合于访问量非常大的系统,但是代价非常昂贵。
   (2)纵向扩展。纵向扩展是通过MapXtreme的MapXBroke组件优化Web服务器来实现 的。MapXBroker是作为一种系统服务运行于服务器系统上的,当它启动时就会创建 一个MapXServer的共享池(称为预启动机制),当一个MapXtreme应用程序需要执行与 地图操作相关的请求时,就向MapXBroker申请一个MapXServer对象实例;当含地图 的主页动态生成以后,再把MapXServer实例释放给共享池,以便其它用户申请。这 种共享机制使有限的资源可以支持多个用户并发请求;这种机制的另一个好处在于 当应用程序申请MapXServer对象时,该对象已经存在于共享池中并运行着(预启动机 制),因而比申请时再创建一个MapXServer对象要快得多,如图3。

在实际的应用中,可以根据具体的情况采用横向扩展与纵 向扩展相结合的方法。
5 OracleSpatial在城市电子信息查询系统中 的实现
  作者开发的城市电子信息查询系统,是一个基于Internet 的地理信息系统。系统采用B/S的结构模式,后台服务器端运行MapXtreme,采用 OracleSpatial管理GIS数据,采用纵向扩展的方式解决多用户并以访问的问题。该 系统已成功地实现了有关领导和部门通过Internet/Intranet快速方便的查询城市的 住宅建设、城乡总局、线路走向等基础地理数据。基于MapXtreme运行的程序、图形 数据库、属性数据库及其它组件集中存放在服务器端,客户端除了浏览器外不需要 任何的插件。图4为系统运行的界面,系统实现了缩放、漫游、不同信息分层、地图 对象的添加删除、保存地图文件、对象查找功能。
6 结束语
  随着地理信息系统 技术的逐步推广以有互联网应用的普及,通过Web运作发布地理信息已成为当前地理 信息技术发展的一个重要方向。本文对于通过互联网实现具有空间特征的信息发布 以及利用空间数据库管理系统OracleSpatial进行数据管理等一系列技术问题进行了 探讨,并提出了相关问题的解决方法。但是,利用空间数据库管理空间数据速度比 较慢,如何提高空间数据的存取效率,还有待于进一步的研究。

Tags:空间数据库  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图