摘 要:采用Oracle Spatial 存储、管理空间数据,易于解决数据共享、分布式处理、网络通信、开放式开发、并发控制、网络化集成、跨平台运行及数据安全恢复机制等方面的难题,因而成为 了目前的一种应用趋势。而如何将现有GIS软件中产生的空间数据导入该数据库中成为该技术应用的首要关键环节。本文以此为出发点,在探讨了向Oracle Spatial 上载GIS的空间数据的基本原理的基础上,较全面地介绍了在Oracle Spatial中上载矢量数据与栅格数据的各种方法,重点介绍了使用 Microsoft的ADO接口、Oracle Spatial的Java API及OCCI接口等手工方式上载程序的实现过程。最后,给出了全文的结论及相关的建议。
1引言
空间数据是GIS的血液,对空间数据的管理的好坏将直接影响到GIS系统质量的高低。GIS空间数据的管理经过了纯文件方式管理图形数据与属性数据、图形数据文件方式管理与属性数据关系型数据库管理、空间数据与属性数据一体化的管理方式三个阶段。目前,大多数GIS 软件都逐渐倾向于采用第三种管理方式,也就是图形数据与属性数据都采用数据库管理的方式。例如,采用Oracle Spatial、DB2 Spatial Extender、Informix Spatial DataBlade(目前Informix已经被IBM收购)以及ArcSDE数据库引擎、MapGIS MapORA引擎等等。
Oracle Spatial提供了对象-关系模式和关系模式两种方式来存储空间数据。前者的特征是空间表中有一个类型为MDSYS.SDO_GEOMETRY的字段,后者也就是Spatial的早期版本空间数据暗盒(Spatial Cartridge),其特征是每一个空间几何图层对应四个表,分别为_SDOLAYER、_SDODIM、_SDOGEOM与_
SDOINDEX。这些表并不包括属性数据,属性数据需建立连接。目前许多GIS软件公司都提供了对Oracle Spatial的支持,比如Intergraph的GeoMedia 4.0、MapInfo的MapInfo 6.0、AutoDesk的MapGuide 6.0、ESRI的ArcSDE、ArcGIS以及国内中地公司的MapGIS 6.5等。
本文主要研究上载GIS的矢量数据和栅格数据到Oracle Spatial的原理与具体的各种实现方法,并在编程实践的基础上比较几种上载方法的优点与不足。
2 向Oracle Spatial上载GIS空间数据的原理
向Oracle Spatial上载GIS空间数据,其实质也就是把空间数据的图形数据(包括矢量数据与栅格数据)与相应的属性数据写入数据库的表格中。因此,在上载前必须清楚GIS空间数据的数据格式与Oracle Spatial中空间数据是如何存储的。
每个GIS软件拥有自己的内部数据格式和数据存储方式,大部分GIS软件并不向用户