空间数据引擎oracle_GIS 与Oracle 数据库空间数据格式的转换

本文探讨了GIS软件MAPGIS与Oracle数据库之间的数据交换方法,重点在于将MAPGIS的明码格式数据转换为Oracle Spatial支持的格式。通过解析MAPGIS的线文件明码格式并创建相应的Oracle Spatial数据结构,利用编程实现数据上载到Oracle Spatial的过程。
摘要由CSDN通过智能技术生成

近几十年来,由于社会应用需求的增长和多年研究工作的积累,地理信息系统(GIS)技术有了明显的进步,正朝着跨平台运行、分布式处理、开放式开发、网络化集成的方向发展。从空间数据管理角度看,GIS 已经从纯文件方式管理图形数据和属性数据向图形数据文件方式管理和属性数据关系型数据库管理方式发展。然而由于GIS 的图形数据格式多样,图形数据用文件来管理的模式给信息共享带来了极大不便,特别是随着GIS 应用领域的不断拓宽,数据量的快速增大,在实现数据共享、网络通信、并发控制及数据安全恢复机制等方面呈现出明显局限,出现了诸多难以解决的问题。

目前,大多数GIS 软件都逐渐倾向于采用空间数据与属性数据一体化的管理方式,而且选用Oracle 数据库作为存储空间数据和属性数据的数据库管理系统,特别是Oracle 推出Spatial 之后,基于Oracle Spatial 的空间数据管理方式逐渐被认同[1]。然而,由于各个不同的GIS 软件的数据存储结构是封闭的,各自采用不同的数据格式,在数据上载Oracle Spatial 中存在数据语义表达的不一致性,彼此之间难以实现数据互访,并且用户又难以控制,本文针对这一问题以MAPGIS 平台和Oracle 数据库为例探讨GIS 软件与Oracle 数据库数据交换的方法。

2 MAPGIS 明码格式

MAPGIS 的明码格式数据接口是一个开放式的软件数据接口,用户用其他软件获取的数据只要按照明码格式写成图形文件,就可以由MAPGIS 系统读取。其明码数据格式是ASCII 码的文件,较全面、清晰,且以点、线、面分开的方式存储空间实体,易于读写。下面以线文件为例,分析其明码数据格式的构成。线文件结构如下:

逻辑结构:文件头 线数 1 号线 2 号线......

具体为:

文件头, 8 个字节WMAP9021

线数n

1号线线型号辅助线型号颜色

线宽x系数y系数辅助色

图层透明输出

线点数m1

x x1y1; x2y2;…; xm1ym1

ID 线长度

2号线线型号辅助线型号颜色

线宽x系数y系数辅助色

图层透明输出

线点数m2

x x1 y1; x2y2; …; xm2 ym2

ID 线长度

……

n号线线型号辅助线型号颜色

线宽x系数y系数辅助色

图层透明输出

线点数mn

x1 y1; x2y2; …; xmn ymn

ID 线长度

3 Oracle Spatial 数据结构

在Oracle Spatial 的对象—关系模型中,一个空间实体的空间信息是存储在字段类型为SDO_EOMETRY 的对象类型记录中。SDO_ GEOMETRY 在

Oracle 中的定义如下:

CREATE TYPE SDO_GEOMETRY AS OBJECT(

SDO_GTYPE NUMBER,

SDO_SRID NUMBER,

SDO_POINT SDO_POINT_TYPE,

SDO_ELEM_INFO

MDSYS.SDO_ELEM_INFO_ARRAY,

SDO_ORDINATES

MDSYS.SDO_ORDINATE_ARRAY);

在MAPGIS 明码数据上载Oracle Spatial 之前,先在Oracle 中建立与MAPGIS 明码格式相一致的空间类型信息和图形属性信息库结构,见表1 所示:

表1 线信息数据库结构

名称数据类型含义名称数据类型含义

Line_ID GUID 线对象代码Line_WD int 线宽

Line_xy GEOMETRY 坐标序列Line_X float x 系数

Line_TID Int 线型号Line_Y float y 系数

Line_TFID Int 辅助线型号Line_CLR int 辅助色

Line_CL Int 颜色Line_OUT log 透明输出

Line_LAY char 图层Line_LEG float 周长

4 空间数据引擎实现方法

4.1 基本过程

目前,各类专题空间数据库建立的过程包括技术设计、资料准备、数据获取和数据入库等内容。数据的获取常可利用现有的GIS 软件如GeoStar、MAPGIS、SUPERMAP、ARCGIS 等来实现,获得的数据通过某一空间数据引擎(如Easyloader)上载到Oracle 数据库中,实现利用Oracle Spatial 存储、管理空间数据。MAPORA 引擎是把MAPGIS 的明码格式通过编程实现空间数据上载Oracle Spatial 的一种方法,其具体过程如图1 所示[2]:

4.2 实现程序代码

1)利用Oracle JDBC 驱动程序连接Oracle 数据库。其java 程序段如下:

myconnection=DriverManager.getConnection(

“jdbc:oracle:thin:@localhost:1521:orcl”,

“scott”

“tiger”);

2)使用CREATE 语句创建数据库表单:

CREATE TABLE F001B (

Point_id INTEGER CONSTRAINT PRIMARY

KEY,

Point_xy MDSYS.SDO_GEOMETRY,

file://坐标对字段的定义

Point_TID INTEGER,

file://线型号字段的定义

Point_TFID INTEGER,

file://辅助线型号字段的定义

......);

3)读取MAPGIS 明码格式后,写入Oracle 数据库中:

INSERT INFO F001B VALUES(

1,

MDSYS.SDO_GEOMETRY(

SDO_GTYPE = 2001

SDO_SRID= NULL

SDO_POINT = (1,1,NULL)

SDO_ELEM_INFO = NULL

SDO_ORDINATES = NULL)

12,

20,

......);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值