论文基于空间数据引擎构建GIS应用_第1页
论文基于空间数据引擎构建GIS应用_第2页
论文基于空间数据引擎构建GIS应用_第3页
论文基于空间数据引擎构建GIS应用_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.基于空间数据引擎构建GIS应用刘宏建 牛德力解放军信息工程大学测绘学院 河南郑州 450052摘要:本文以利用空间数据引擎构建GIS应用为主要研究内容,从体系结构、核心技术、工作流程等方面对该技术做了详细介绍,又以MapInfo Spatialware为例,给出了基于MapInfo Spatialware构建GIS应用的解决方案。关键字:空间数据引擎、SpatialwareAbstract: The main content of the text is the building-up GIS application by using the Spatial Data Engine, whi

2、ch precisely describes its architecture, key-technology, work-flow and etc. And by instance of MapInfo Spatialware, it proposes the solution of the building-up GIS application on the basis of MapInfo Spatialware.1. 引言近年来,随着关系数据库技术的进一步发展与成熟,采用关系数据库来对空间数据和属性数据进行一体化存储和管理,已经成为商用GIS平台发展的一个趋势。全关系型的GIS软件,利

3、用关系数据库解决了空间数据的集中控制、网络环境下的共享、并发控制等问题,明显地提高了GIS软件管理空间数据的能力。空间数据引擎(Spatial Data Engine),实质上就是基于商用关系数据库系统构建空间数据库,以提供空间数据存储、管理能力的系统。本论文将对利用空间数据引擎构建GIS应用的一些关键技术作一下深入的探讨。2. 体系结构图 1 基于空间数据引擎构造GIS应用的系统部署图基于空间数据引擎的GIS应用系统,可划分为三个层次:前台客户端、中间层应用服务器和后台的数据库服务器。前台的客户端负责数据显示、与用户的交互等工作,它可以是一般的应用程序也可以是Web Browser(浏览器)

4、。最底层是数据库服务器,它可以是不同的数据库产品,也有可能运行在异构的操作系统上面,该层又可以称为数据存储层。空间数据引擎属于应用服务器层,它向高层的客户端应用提供一套统一的空间数据访问机制,屏蔽掉低层异构数据库和操作系统的差异;中间层应用服务器按照需求还可以包括Web服务器、Web地图服务器等。中间层应用服务器的作用是:封装业务逻辑、处理Web客户端的请求、执行空间查询,从数据库获得数据并返回给客户端。由于空间数据引擎在整个系统中的核心地位和作用,下面将对空间数据引擎的关键技术作一下探讨。3. 空间数据引擎核心技术剖析(1) 概述在OpenGIS体系结构中,将共享领域服务分为了15类,共享域

5、服务的15种基础服务反映的是一些基本的、重要的空间数据操作功能,例如空间数据建模、空间实体操作、空间查询、地图影像操作、坐标系管理等。空间数据引擎将空间实体操作、图层管理、数据交换、空间参考系等核心功能集成起来,对外提供调用接口,在构造地图显示、地图数据编辑、空间分析、数据交换等外部系统时,就可以直接对空间数据引擎的功能接口进行操作,从而使外部系统自动获得空间数据操作的基本功能。从空间数据引擎构成上考虑,它由空间对象结构、空间索引和空间函数三大部分构成。(2) 空间对象结构图2 Spatialware空间对象结构空间对象结构是空间数据引擎的基石,它要解决的是地理数据如何表达的问题。空间对象结构

6、决定了空间数据引擎能表示什么,不能表示什么,空间对象结构的优劣,很大程度上决定了空间数据引擎的好坏。以MapInfo Spatialware为例(图1给出了Spatialware的空间对象结构图),ST_Spatial是所有空间数据类型的基类,在Spatialware For SQL Server中,它是这样定义的:EXEC sp_addtype N'ST_Spatial', N'image', N'null'由上可以看出,SP_Spatial也就是BLOB类型(大二进制对象块),只是换个名字而已。Spatialware以SP_Spatial为基

7、类,又派生出了ST_Point,ST_Line,ST_Polygon等一系列空间数据类型,空间实体的生成,则要由空间函数来完成。(3) 空间函数空间函数所要解决的是如何操纵空间数据与空间分析的问题,它实质上是对关系数据库标准查询语言(SQL, Structure Query Language)的一种扩充,对关系数据库进行功能扩展以适用于空间数据。下面是Spatialware中几种比较重要的空间函数n 空间实体构造函数 用于创建空间对象结构中定义的空间实体。n 空间聚合函数 对空间数据构成的一个行集(Rows)进行各种方式的计算,比如:HG_Aggunion函数,用来对多个空间实体求并,返回值是

8、多个空间实体的并集;HG_Aggintersection对空间实体求交集;HG_Aggboundingbox求一组空间实体的最小矩形外包等等。n 类型转换函数 用于Spatialware定义的空间数据类型和OGC(Open GIS Consrotinum)规定的各种数据类型的转换。如;HG_AsBinary将ST_Spatial类型转换为OGC定义的Binary类型HG_GeometryFromBinary将OGC定义的Binary类型转换为ST_Spatial类型。n 坐标函数 用于对空间参考系统(大地椭球、地图投影)进行处理,在该部分,只有一个函数HG_CSTransform如下:HG_C

9、STransform(spatial_obj, from_cs, to_cs)该函数将空间实体(spatial_obj)从源坐标系(from_cs),转换到目的坐标系(to_cs)中。n 空间量算函数 对空间实体进行各种量算,如计算长度、面积、坡度、高程、方位角。n 空间查询函数 该部分最重要的函数是sp_spatial_query,它的功能极其强大,涉及到空间查询的各种形式。如:exec sp_spatial_query select ID, ST_Area(sw_geometry) as area from land_use order by area该代码执行空间查询,从土地利用表中查询

10、土地编号和地块面积,并按面积大小排序。(4) 空间索引空间索引要解决的问题是如何快速的找到指定的空间实体,它依据空间实体的位置及分布特征,将整个区域的空间实体用某种数据结构组织起来,该数据结构中包含该对象的标志信息和获得该对象地址所需要的一些信息。在MapInfo Spatialware中,采用的是R树索引机制。R树索引是根据地物的最小外包矩形建立的,R树中每一结点N都对应着磁盘页D(N)和空间区域I(N),如果结点不是叶结点,则该结点的所有子结点的区域都在I(N)范围内,而且存储在磁盘页D(N)中;如果结点是叶结点,那么磁盘页D(N)中存储的将是区域I(N)范围内的一系列空间实体的最小外包矩

11、形。在Spatialware中,对一个图层建立空间索引的方法如下:exec sp_sw_create_rtree'<owner>', '<table_name>', '<spatial_column>','<key_column>'4. 基于MapInfo Spatialware的解决方案基于Spatialware的GIS应用,要考虑两个问题:一个空间数据库的建立;另一个问题是要考虑客户端采用什么技术方案,应该如何实现。(1) 空间数据库的建立空间数据库的建立,和数据的来源紧密相关,

12、其实质就是将用户的各种数据导入空间数据库,使其空间化(Spatialize),为后续系统开发提供数据基础。在这个过程中,首先用户要建立自己的数据库,然后将数据库空间化,即执行存储过程sp_spatialize_db,该存储过程使数据库空间化,并自动生成元数据表MAPINFO_MAPCATLOG。然后,在空间化过的数据库中,创建空间表并将其中的地理数据列空间化.举例如下:create database test_spatialwareexec sp_spatialize_dbcreate table testcon ( sw_member integer not null unique,sw_g

13、eometry st_spatial )建立空间数据表后,可以向该表中插入数据。最后,对该表建立空间索引(R树索引),就可以在客户端执行各种空间操作了。(2) 客户端应用的设计客户端是和用户交互的接口,在MapInfo的整体解决方案中,可以采用MapBasic作为客户端进行开发,也可以采用MapX作为客户端进行开发,两者各有优劣。采用MapX作为客户端,可以完全脱离MapInfo Professional环境,非常便于和管理信息系统(MIS)的集成.MapX和Saptialware的集成开发,实质上是MapX将空间数据库中的数据加载到它的Layers和Datasets中,进行各种地图操作、专题

14、制图、空间分析等。将空间数据加载到MapX图层中,是通过LayerInfo对象实现的,下面给出了加载地图图层,并实现地图自动标注的代码:Sub LoadMapData()Dim LayerInfo As New MapXLib.LayerInfo LayerInfo.Type = miLayerInfoTypeServerLayerInfo.AddParameter "Name", "zz_admin"LayerInfo.AddParameter "ConnectString", DSN=zz_lyxt;UID=sa;river=SQ

15、L Server"LayerInfo.AddParameter "query", "Select * from zz_admin"LayerInfo.AddParameter "cache", "on"LayerInfo.AddParameter "MBRSearch", "on"LayerInfo.AddParameter "toolkit", "ODBC"LayerInfo.AddParameter "AutoC

16、reateDataset", 1LayerInfo.AddParameter "datasetname", "zz_admin"MapMain.Layers.Add LayerInfo, 1Set ds = MapMain.Datasets("zz_admin")Set MapMain.Layers("zz_admin").LabelProperties.Dataset = dsSet MapMain.Layers("zz_admin").LabelProperties.DataField=”名称”MapMain.Layers("zz_admin").AutoLabel = TrueMapMain.Layers("zz_admin").Selectable = TrueMapMain.Layers("zz_admin ").RefreshMapMain.A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论