空间数据库实现及其集成技术研究
胡金星,潘懋,宋扬,马照亭
(北京大学地球与空间科学学院,北京100871)
*
摘要:基于面向实体及其关系的数据模型,对空间数据按照简单对象集、拓扑对象集、复合对象集、域
对象集进行数据组织,并对关系型、对象关系型空间数据库的实现技术进行研究并提出解决思路,然后应用基于元数据管理的空间数据库集成技术实现对多源异构分布式空间数据库的集成管理。关键词:GIS;空间数据库;数据模型;数据结构;元数据
中图法分类号:TP31112文献标识码:A文章编号:1001-3695(2003)03-0012-03
ResearchonRealizationandIntegratedTechnologyofSpatialDatabases
HUJin-xing,PANMao,SONGYang,MAZhao-ting
(SchoolofEarth&SpaceSciences,BeijingUniversity,Beijing100871,China)
Abstract:Basedontheentityorientedanditsrelationshipspatialdatamodel,accordingtothedataorganizationofthesimpleobjectcollection,topologicalobjectcollection,compoundobjectcollectionandfieldobjectcollection,thispaperbringsforwardthesolutionoftherelationalandobjectrelationalspatialdatabase,andrealizesthemult-isources,heterogeneous,distributedspatialdatabaseintegrated
managementonthespatialdatabaseintegratedtechnologybasedonthespatialmetadatamanagement.Keywords:GIS;SpatialDatabase;DataModel;DataStructure;Metadata
1引言
地理信息系统(GIS)以空间数据为研究对象,在实现对空间数据的存储和操作的基础上进行空间分析和应用。当前,GIS逐渐向数据服务方向发展,数据管理的重要性日益得到重视。以往受关系数据库不支持空间数据管理的,传统的GIS软件采用分离的方式管理数据:空间数据采用文件形式和目录结构,属性数据由内置的关系型数据库进行管理。分离体系结构造成空间数据管理效率低下,无法获得数据库系统的有效支持;数据共享性差;在网络方面无法得到有效拓展等。目前,随着数据库技术不断发展,大型关系型、对象关系型、纯对象型数据库在完整性、安全性、标准化、开放性、可扩充性等方面日益完善,一般都提供对LOB字段的支持,有些还支持空间数据和自定义数据类型。这样可以将空间数据和属性数据有机地集成起来,按照数据库形式实现对数据的存储和管理,在此基础上,实现便利的空间索引、查询和各种空间分析操作。在常规大型数据库的基础上进行扩展,实现基于空间数据的空间索引、检索和分析等操作,是空间数据库实现的技术途径。目前,国际上在该领域进行过深入研究并形成软件产品的有:ESRIArcSDE[1],MapInfoSpatialWare[2]以及OracleSpa-收稿日期:2002-06-22;修返日期:2002-07-18基金项目:国家教育部重点资助项目(99003)tial,DB2SpatialExtender和InformixSpatialDataBlade
等。
但综观这些空间数据库软件,都不同程度地存在着一些缺陷或不足之处,如有些索引方法只采用格网模型,索引效率较低:有些空间数据中不包含拓扑逻辑,虽然减轻了空间数据存储的复杂度,但降低了空间查询和空间分析的性能;有些空间数据类型中尽管提供了三维数据类型的支持,但空间操作函数中针对三维对象的操作很少,对三维GIS的支持有限;有些采用了基于对象的
[6]
数据模型,但对基于域的模型的支持有限。可见,尽管这些已经商品化的空间数据库系统具有很强的功能和适应性,但其应用范围仍有一定的局限性,无法满足特定的需求,而需要开发自己的空间数据库系统,并可以与其它类型的空间数据库进行集成管理。
[3][4][5]
2数据组织管理
21空间数据模型组织
GIS以空间数据为研究对象,在实现对空间数据的存储和操作的基础上进行空间分析和应用,而空间数据模型是GIS研究的基础,它是一种隐藏了存储细节的数据抽象。最常用的两种空间数据模型是:基于对象(要素)(Feature)的模型和基于域(场)(Field)的模型。对象模型将空间信息描述为离散的、可标示的、带有空间参照系统的空间实体,每个对象都有自己的属性和方法,适合于描述自然界的实体;域模型将空间信息描述为一第3期胡金星等:空间数据库实现及其集成技术研究13
定空间分布的集合体,每个空间分布描述为一个从空间
格网到空间属性的数据函数,表示在二维或三维空间中被看作是连续变化的数据。采用基于对象还是域模型,主要是顾及数据的测量方式和研究目的,在某种程度上它们可以共存、互相转换。
拓扑关系数据模型是基于对象的数据模型的一种,它采用以节点弧段多边形体拓扑关系为基础的拓扑关系数据模型,它以点为基本存储对象,线、面、体空间对象依据拓扑连接关系维护。优点是数据结构紧凑、拓扑关系明晰,在拓扑查询、网络分析方面有较高的效率。但由于要维护其嵌套的拓扑关系,使得对单一空间对象的操作效率低下,难以实现快速的空间查询和复杂的空间分析,在表达复杂的空间实体方面也力不从心。
面向实体的数据模型也是基于对象的数据模型,它以、完整,具有地理意义的单个空间实体为数据组织和存储的基本单元,空间实体之间的坐标存储没有依赖关系,具有实体管理简单、修改便利、查询检索和空间分析容易等优点,并且易于构造复杂空间实体,但同时也导致了实体间共有的公共实体(点、线、面)重复存储、拓扑关系维护困难、网络分析效率低下,并难以实现跨图层的拓扑查询和分析。这种模型的基本出发点是以浪费存储空间来提高效率的。但在硬件快速发展的今天,它普遍被接受和应用,符合OpenGIS规范[7]。
面向实体及其关系的数据模型是在面向实体的数据模型基础上的进一步发展,它除了具有面向实体模型的优点,能够很好地克服拓扑关系模型的缺点外,还具有自己独特的优点。它不仅要求将地理世界以实体为单位进行组织,而且要求将客观世界作为一个整体来看待,即每一个实体不仅具有空间位置、属性和空间上的联系,更重要的是它与其它实体还具有逻辑上的拓扑和语义联系,并且它还具有三维结构和时间属性,以及面向实体与面向域数据模型共存。
等控制信息的集合体共同构成图层,用于设置对象集的显示风格、显示范围、显示比例等特性,两者各司其职又相互联系,一个图层对应一个对象集,一个对象集可显示在不同的地图窗口中而对应多个图层,一个图层内对象集的改变也会影响该对象集对应的其它图层的改变。
3空间数据库实现
31关系型空间数据库
目前,GIS软件在大型商用关系型数据库基础上,采用空间数据引擎技术实现空间数据库的构建。空间数据引擎是一种处于应用程序和数据库之间开放的中间件技术,客户端通过空间数据引擎将数据提交给关系型数据库统一管理,在使用时由客户端或服务器端从数据库获取数据并转化为空间数据格式。目前具有代表性的基于关系数据库的空间数据引擎有ESRIArcSDE等。在关系型数据库中实现空间数据的管理有两种方式:
常规表方式。用常规表方式管理几何对象时,空间数据在一个几何表中单独存放,特征表中几何对象列只存储其指向几何表的指针。每一个几何对象在几何表中用一系列点坐标对来描述,当几何对象的坐标对数超过了每行的定长坐标对数时,则采用分行存储的方式,并维护其前后关系。OracleSpatial的关系模型就是基于这种方式进行组织的。
大对象方式。它与常规表方式不同的是,几何对象列采用数据库提供的LOB变长字段存储空间数据,如SQLServer的Image类型、Oracle的BLOB,CLOB等,每一个几何对象对应几何表中的一行。基于SQLServer的ArcSDE就是应用Image数据类型。
关系数据库可扩展性相对较差,由于LOB没有具体的内部结构,不能进行搜索、索引和分析操作,并且不含常用的语义概念,如泛化、聚集等关系。而基于常规表方式由于其连接关系复杂,在处理空间对象方面效率较低。
目前,有的关系数据库(如DBaseIV,Ingres等)允许用户用语言(4GL)来定义自己的函数和抽象数据类型嵌入到数据库系统中,但可定义函数和抽象数据类型的种类和数量有一定,不适合空间数据的管理,不能实现高效的空间索引而无法进行有效的空间分析操作。
22空间数据结构组织
对象集是指由多个空间对象构成的集合体,可以按照以下四种类型进行组织:
简单对象集。简单对象集包括简单点对象集、线对象集、面对象集、体对象集和注记对象集四类,它们分别由简单点、线、面、体、文字对象或单纯型复杂点、线、面、体、注记对象组成的集合。点、线、面对象集又分别有二维、三维之分。
拓扑对象集。它是简单线、面、体对象集在拓扑关系方面的扩展,由简单对象集经拓扑构建后形成,并可以与简单对象集相互转化。包含网络对象集(拓扑线对象集)、拓扑多边形对象集和拓扑体对象集。
复合对象集。由简单点、线、面、体、注记对象、单纯型复杂对象或混合型复杂对象等不同类型对象组成的集合,它可以包含任意类型的对象元素。
域对象集。它是由域对象构成的集合,如影像、TIN、Grid和3DGrid等。
对象集用于存储对象的空间与属性数据,它与显示32对象关系型空间数据库
数据库技术和面向对象技术的结合,产生了面向对象的数据库系统(OODBMS)。面向对象数据库支持核心的面向对象数据库模型(对象模型),并借助于对关系数据库语义的扩充和修改,使之与对象模型的语义一致,以支持关系数据库特征,如持久性、并发控制、可恢复性、一致性和查询能力等。面向对象数据库的研究非常活跃,许多方面都取得了有意义的成果,如基本对象模型、对复杂对象的支持、模式演化、面向对象的查询语言及其查询处理机制、索引机制、客户/服务器体系结构等。同时也推出了一些OODBMS产品,如Gemstone,Ob-
14计算机应用研究2003年
jectivity,ObjectStore,Ontos,O2,Peot,Versant以及CA公司的Jasmine等。然而,OODBMS自身仍存在许多缺陷而不被看好。首先,由于OODBMS缺乏标准,尽管已提出了一个标准草案ODMG-93,但没有得到普遍遵循;其次,OODBMS产品在安全性、完整性、坚固性、可伸缩性、视图机制、模式演化等许多方面还不完善;另外,OODBMS的开发工具很少、对C/S计算环境的支持也不够。
RDBMS具有良好的企业级数据库管理及异构数据的访问能力,以及完整性、持久性、并发控制、可恢复性、一致性和查询能力,但缺乏对海量数据、特别是空间数据类型的支持。OODBMS在描述复杂数据类型方面得心应手,却不能利用RDBMS的成功之处。因此,面向对象技术和数据库技术相结合的另一个途径ORDBMS得到了长足的发展。就本质上而言,ORDBMS是关系世界的SQL与对象世界的模型基元的结合,既保持了RDBMS的所有功能和优势,同时在数据服务器中添加了灵活的功能,支持复杂的用户自定义应用对象和逻辑,较好地实现了对复杂数据类型的快速高效查询。大的数据库厂家基于ORDBMS将空间信息、属性信息一体化存储,提供空间数据库管理模块,如Oracle的Spatial,IBM的DB2SpatialExtender,InformixSpatialDat-aBlade等,部分GIS厂家也推出了自己的对象关系型空间数据库解决方案,如ESRI的ArcSDE,MapInfo的Spatia-l
Ware等。
ORDBMS是对RDBMS进行面向对象的扩展,以便集成复杂数据的智能化访问和管理,基本特性包括基本数据类型的扩充、复杂对象、继承性等。ORDBMS提供了用户自定义类型的功能,使用抽象数据类型可以封装任意复杂的内部结构和属性,这样可以表示空间对象。对用户定义的数据类型,同时也必须加入该类型要求的操作。这就是ORDBMS提供的扩充函数和操作符的功能,通过动态链接,实现客户端启动和服务器端启动功能的安全管理,从而实现空间对象的索引、检索和空间分析等操作。
ORDBMS中创建空间对象的基本构件有三种:组合、集合和引用。组合是由一个记录值组成的数据类型,即由任意不同数据类型组成的数据;集合是由一个字段中的任意个值组成的数据类型,例如点的集合构成线、线的集合构成面、面的集合构成体;引用是传统SQL系统中主码-外码关系的自然替代,它是对象标志的指针,指向另外表中的一个特定类型的记录,从而实现对组合、集合和基本数据类型的引用,用于表达空间对象之间的嵌套,使得拓扑数据类型的表示非常便利。
利用ORDBMS提供的抽象数据类型来构造空间对象数据类型、空间函数和操作符运算,如空间对象基类(或超类)Geometry及其函数和操作符,简单对象(包括点、线、面、体、文字)、拓扑对象、复合对象和域对象对Geometry进行继承、重载和扩充,用SQL或外部语言编写其函数和操作符程序,并建立基于表层次的空间和属性索引,然后注册到系统中,在外部程序中或用SQL实现对空间数据的检索、空间分析等操作。4空间数据库集成
空间数据的分布与共享是GIS所要解决的基本问
题。分布式是空间数据的基本特征,它把数据或程序(或组件)进行分散和分布,有利于系统的整体优化,但分布也引起诸如异型系统、异构数据互操作等问题。如何合理安排网络资源的分布与共享,设计分布式异构数据网络管理方案,提供简捷可视的用户子模式,是空间数据集成技术必须解决的基本问题。基于元数据管理的空间数据库集成是建立分布式数据管理体系的主要技术思想和方法。
我们在SQLServer上构建关系型空间数据库,空间数据用Image数据类型进行存储,在客户端(GIS服务器)程序中应用数据库的开发专用接口DBLib(DBL-i
brary)实现,其速度较ODBC或ADO要提高很多。在Ora-cle上构建关系型或对象关系型空间数据库,客户端(GIS服务器)应用数据库的开发接口OCI(OracleCallIn-terface)实现,并且支持OracleSpatial。与其它类型的空间数据库(如DB2SpatialExtender,InformixSpatialDataBlade等)的连接也使用其各自的专用开发接口,如DB2的CLI(CallLevelInterface)、Informix的DataBladeAPI等,而对于没有实现的数据库类型的接口采用ODBC。在其上层,根据各个空间数据库的元数据构建一个统一的用户接口,在具体程序实现时,各个空间数据库由于其类型的不同而使用不同的开发接口,并对外提供一个统一的空间元数据库(图1),这样就实现了基于元数据管理的多个空间数据库的分布式集成。整个系统是一个开放的分布式体系结构,用户可以通过空间元数据库注册自己的空间数据库到这个分布式系统中,并对不同的用户可以赋予不同的权限,如编辑、选择、查看、不可用等,贯彻实施自己的数据自己维护、自己管理的原则。
图1基于元数据管理的空间数据库集成体系结构
5结论与展望
由于各种空间数据库在数据模型、数据结构上的差异,如何实现不同空间数据库之间的互操作,实现数据共享,是构建大型GIS的瓶颈问题。通常与数据库的连接一般采用ODBC技术,它降低了系统开发的难度,但导致系统存取速度效率低下。本文基于面向实体及其关系的数据模型,参照OpenGIS规范,对空间数据按照简单对象集、拓扑对象集、复合对象集、域对象集进行数据组织。在对关系型、对象关系型空间数据库的实现技术进行深入剖析的基础上,应用各种数据库的专用开发接口技术,基于元数据管理实现对多源、异构、分布式空间数据库的集成管理。目前,已部分应用于GIS软件平台GeoSIS中。(下转第19页)
第3期童学红等:对Windows2000可执行文件格式的分析及其应用19
Functions和NumberOfNames指出从模块中导出的函数的
个数及其名称的个数,AddressOfFunctions表示输出函数入口点的偏移量,AddressOfNames表示输出函数名称开始处的偏移量,AddressOfNameOrdinals表示对于相同输出函数的一串顺序值的偏移量。
数据入口段.idata。包括入口目录和入口地址名称表,虽然定义了一个ImageDirectoryEntryImport,但在WINNT.H中没有对应的数据结构。
调试信息段.debug。调试信息最初放在.debug段中,PE文件格式也支持分开的调试信息(以.dbg文件存在),这样就可以集中地控制调试信息。调试信息段中包含调试信息,但是调试目录位于前面提到的.rdata段中。调试信息的数据结构为:
typedefstructIMAGEDEBUGDIRECTORY{
ULONGCharacteristics;ULONGTimeDateStamp;USHORTMajorVersion;USHORTMinorVersion;ULONGType;
ULONGSizeOfData;
ULONGAddressOfRawData;ULONGPointerToRawData;
}IMAGEDEBUGDIRECTORY,*PIMAGEDEBUGRY;
{
AfxMessageBox(Unknowntypeoffile!);}
peHeader*header;
header=(peHeader*)((char*)doshead+doshead->elfanew);
if(IsBadReadPtr(header,sizeof(*header))){
AfxMessageBox(noPEheader,probablyDOSexecutable);}
DWORDpeaddress=doshead->elfanew;peaddress+=40;returnpeaddress;}
4结束语
整个PE文件包含MS-DOS的MZ头、实模式Stub程序、PE文件签名、PE文件头、文件头可选项、各个段的段头,最后是各个段体。
PE文件格式在程序开发中有着广泛的应用。比如通过对PE文件格式的研究,能够帮助我们在进行压缩和解压编程过程中对文件的结构的分析;当我们现在的许多计算机安全公司分析新型病毒或木马时就要通过对PE文件格式的洞悉才能找到病码;再如在进行操作系统编程的时候,必须考虑跨系统之间文件的兼容,此时必须分析PE文件的格式。
对PE文件格式的分析是Windows2000系统中一项高级编程技术,熟练掌握这项技术对于我们深入Win-dows操作系统内部写程序很有帮助。参考文献:
[1]AndrewSTanenbaum,AlbertSWoodhull:OperatingSystem-DesignandImplementation[Z]
[2]BanForta,PaulFonte,GregBrewerWindows2000开发人员指
南[M]杜大鹏,等北京:中国水利水电出版社,2001144,428
[3]DavidJKruglinskiVisualC++6.0技术内幕(第四版)[M]
希望图书创作室北京:北京希望电子出版社209,426[4]JeffreyRichterWindows核心编程[M].王建华,等北京:
机械工业出版社,2000.515[5]杨亮,等Windows深入剖析-内核篇[M].北京:清华大学
出版社.
DIRECTO-
为了代表不同类型的调试信息,调试信息段分成了
很多部分,对于每个部分有一个调试目录,调试信息有以下几种:
#####definedefinedefinedefinedefine
IMAGEIMAGEIMAGEIMAGEIMAGE
DEBUGDEBUGDEBUGDEBUGDEBUG
TYPETYPETYPETYPETYPE
UNKNOWN0COFF1CODEVIEW2FPO3MISC4
3实例
下面就利用PE格式来得到一个可执行文件的执行
入口地址:
首先将目的可执行文件装入内存,并得到其指针:
HANDLEhFile=CreateFile(mZaiti,GENERICREAD|GENERICWRITE,
FILESHAREREAD|FILESHAREWRITE,0,OPENEXIST-ING,FILEFLAGSEQUENTIALSCAN,0);
HANDLEhMapping=CreateFileMapping(hFile,0,PAGEREADONLY|SECCOMMIT,0,0,0);
void*basepointer;
basepointer=MapViewOfFile(hMapping,FILEMAPREAD,0,0,0)));
再通过读取PE文件头信息来获得执行的入口地址:
IMAGEDOSHEADER*doshead;
doshead=(IMAGEDOSHEADER*)basepointer;if(doshead->emagic!=IMAGEDOSSIGNATURE)
作者简介:
童学红(1975-),男,硕士生,研究方向为网络安全;唐红(1957-),
女,教授,硕士生导师,研究方向为网络安全、网络管理。技大学学报,2000,(3):1-5.
[7]OpenGISConsortiumInc.OpenGISSimpleFeaturesSpecification
forSQL[Z].OpenGISProjectDocument,1999
[8]肖乐斌,钟耳顺,等GIS空间概念模型的研究[C].中国
地理信息系统协会2001年论文集,2001218-223.
[9]鞠时光对象关系型数据库管理系统的开发技术[M].北
京:科学出版社,2001
(上接第14页)
参考文献:
[1]ESRI.UnderstandingArcSDE[R].ESRICorporation,2001.
[2]MapInfo.EnterpriseMappingDeployment:ManagingSpatialData
inaRelationalDatabaseManagementSystem[R].MapInfoCor-poration,2001.
[3]Oracle.OracleSpatial:AnOracleTechnicalWhitePaper[R].O-racleCorporation,2001.
[4]IBM.IBMDB2SpatialExtenderUsersGuiderandReference
[R].IBMCorporation,2001.
[5]IBM.IBMInformixSpatialDataBladeModuleUsersGuider
[R].IBMCorporation,2001.
[6]李军,景宁,等集成型空间数据库技术分析[J].国防科作者简介:
胡金星(1974-),男,博士生,主要从事GIS研究;潘懋(19-),男,教授,博导,研究方向为GIS、信息地质;宋扬(1975-),男,博士生,主要从事GIS研究;马照亭(1976-),男,博士生,主要从事GIS研究。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务