空间数据存储机制研究
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
传统的几何类型的数据读取比 较简单 , 但 要真正 实 用 ,还需 建 立空 间 数 据库 引 擎 SDE(Spatial Database Engine), 使传统的 GIS 产品既能使用全关系数据库 , 又不降 低它的空间数据查询效率 、空间分析能力 。
3.2 图像数据的存储
对于图像 、声音等多媒体 信息可 采用二进 制方式 存 储 , 当然 几何实 体 、文 件等信 息也可 采用 二进制 方式 存 储 。以 VB 对 Access 数 据 库 进 行 操 作 为 例 , 至 于 SQL Server 与 Oracle 方法一致 。VB 对 Access 数据库的二进制 存储与 读 取 主要 用 到 AppendChunk 与 GetChunk 两 个 功 能 。其步骤为 :
Geometry 几何实体字段(字符型 , 长度根据 具体几何类型 而定);另一个为 EntitySEQ 字段(定义一个实体所在的行 数 、字符型)。以土地 管理为 例 。图 1 所示为 某一图斑 。 其表结构与存储内容如表 1 所示 。
图 1 土地图斑 表 1 空间数据的全关系存储表
ObjectID 1 1 …
1
5 10 1
123 .4 张三 …
(x, y , … , x, y)
2
…
(x, y , … , x, y)
…
…… …
…
……
…
4.1 空间数据对象类
在 OpenGIS(开放 式地理 信息 系 统)规范 中 , 对 空间 数据采用 SQL Spatial Type 的类 与子类 有明确的 规范(图 2)。
通过以上步骤 可把二 进制 数据 图像 存入 关系 型 数 据库如 Access 库 , 其它数据库 , 操作方法完全雷同 。
(3)二进制数据的读取 。 二进制数据的读取与存储正好相反 。
4 对象关系型数据库的存储
针对空间数据 在关系 型数 据库 中的 存储 其检 索 效
率低 , 一般对空间数据不 能使用 SQL 查询 。为 实现空 间
图 2 类与子类关系图
这样可采用 SQL 进行空间查询 , 例 如从地 块数据库 中查找与某一多边形相交的所有地块 , 其 SQL 语句为 :
SELECT Parcel .Name , Parcel .Id FROM Parcels WHERE Intersects(Parcels .Geometry , MyPolygon)
The Research of Storage Theory for Spatial Data
XU Han-wei, FENG Xue-zhi (Dept .of Urban &Resource Science, Nanjing University , Nanjing Jiangsu 210093 , China)
数据的查询 , 方法之一是如上 所述采用 空间索 引与实体
范围定位的 辅助 表 来解 决 , 方 法 之二 是对 RDBMS 进行 扩展 。使用扩展 SQL 查询语言对空间 数据进 行查询 , 但
其缺点是数据库 I/O 检查比 较费时 , 需 要完成 一些附加
操作 ,查询效率比纯 OODBMS 低 。 现在部分 RDBMS 厂商提供了空 间对象 模型 Geome-
1 引言
在地理信息 系统 中 , 空 间数 据的 存 储至 关重 要 , 以 往 , 在 GIS 的数据库设计中 , 空间数据库和属性数据库一 般分开设计 , 空间数据库按已有的 GIS 产品进行设计 , 属 性数据库针对具体的 GIS 项目进行数据结构设计 。空间 数据和属性数据通过关键词 USER ID 关联 。
第2 期
许捍卫等 :空间数据存储机制研究
· 39 ·
空间数据存储机制研究
许捍卫 , 冯学智
(南京大学 城市与资源学系 , 江苏 南京 210093)
摘 要 :在地理信息系统中 , 空间数据的存储至关重要 , 对空间数 据的几种存 储模型进行了 分析探讨 , 指 出全关系型的扩展数据模型或面向对象的关系数据模型是较佳 的存储方式 , 关系对象数 据库在 GIS 中将 发挥更大的作用 。 关键词 :空间数据 ;全关系存储 ;对象关系存储 ;ARCSDE ;Oracle Spatial 中图法分类号 :TP311 文献标识码 :A 文章编号 :1001-3695(2003)02-0039-02
采用这样的混合数据模型一方面利用了 GIS 产品提 供的空间索引 、空间查询 、空 间分析 的能力 ;另 一方面 也 利用了关 系 数 据库 对 属性 数 据的 强 大 的查 询 、定 位 能 力 。但这样的 混合 数据 模型 也存 在以 下几 点明 显的 不 足 :(1)空间数据采用 各个 GIS 厂 商定义 的各种 格式 , 不 利于数据共享 ;(2)空间数据 以文件 格式存储 , 安全性 难 以得到保 证 , 也 不利 于管 理 ;(3)空间 数据 、属 性数 据 的 一致性维护比 较困 难 ;(4)对 C/ S , B/ S 体系 结构 的支 持 能力差 , 不利于数据的传输 。
序数 , Geometry 字段 存放的 是具 体的 坐标 值 。当然 此表 存在的最大的问题是存 储空间的 浪费 。一般 而言 , 很难
确定 Geometry 字 段 的 长 度 , 但 其 优点 是 脱 离 了 具 体的 GIS 软件 , 便于数据 共享 。目 前 , 在我 国的部 分城 市 GIS
4.2 Oracle Spatial
在 Oracle 8i 版本 后 , Oracle 数 据库 中 内置 了空 间数 据库 引擎 Oracle Spatial 。Oracle Spatial 通过 Geometrytype 类型能把复杂的地图对象 存入 Oracle 中 , 能为 其建立 RTree 及 Quad-Tree(四分树)空 间数据 索引 , 并能运 用 SQL 对空间数据查询 , 从而在 Oracle 上 实现了 对空间 图形数 据和属性 数 据的 统一 管 理 。通过 Oracle Spatial , 能 实现 空间数据级的互操作 , 如图 3 所示 。
为克服采用 混合 数据 模型 的缺 点 , 目前 , 商用 成 熟 GIS 软件都朝着将空间数据与属性数据存 储于同一关 系 型数据库 RDBMS 方向发展 。其中比较成熟的有 ESRI 公 司的 ArcSDE , MapInfo 公 司的 SpatialWare 以及 Oracle 的 Oracle8i Spatial , 它们都提供了全关系型或对象-关系型 的 数据模型 。本 文对 目前 几种 常见 的空 间数 据存 储机 制 进行研究 , 并提出相应的 GIS 空间数据存储方案 。
try Type , 用于解决空间 数据的 存储与 查询 , 如 IBM DB2 , Informix ,Oracle Spatial 等 , 其空间数据与 属性数 据存储于
同一表中 , 如表 7 所示 。
表 7 空间 数据的对象关系存储表
FeatureID 街道 街坊 宗地号 宗地面积 权利人 … 几何值 Geometry Type
· 40 ·
计算机应用研究
2003 年
中 ,采用了 上述 表设 计结 构 。为减 少属 性的 重复 存 储 ,
也可把表 1 分解为两个表 , 如表 2(属性表)和表 3 或表 4
(几何表)所示 。其中表 2 在原属性表的 基础上加上 Ob-
jectID 字段以便与表 3 或表 4 关联 ;表 3 的几何实体以 一
FLOAT(64)NOT NULL, FLOAT(64)NOT NULL,
emaxx
FLOAT(64)NOT NULL,
(下转第 74 页)
· 74 ·
计算机应用研究
3 关系数据库存储
目前 , 空间数据采用与属 性数据相 对应的 全关系存 储 ,针对空间数据的类型的 不同 , 有不 同的存 储方式 , 常 见的可分成矢 量格 式的 几何 数据 的存 储和 图像数 据的 存储两种方式 。
3.1 点线面矢量格式的几何数据的存储 一般在 原 属性 表 中 增加 两 个 字 段来 解 决 :一 个为
(1)以二进制方式打开图像文件 , 读取二进制数据 。 (2)把二进制数据存储 , 如下示例所示 :
Set MyConnection =Server.CreateObject(″ADODB .Connection″) MyConnection .open =″Driver={M icrosort Accesss Driver (*.mdb);dbq =″Serve r .Mappath(″CLGL .mdb″)″} Dim Res as New ADODB .Recordset Mystr =″Select * from CLKZD″ Res .open Mystr , MyConnection Res .Addnew Res .(″DZJ″).Appendchunk BufferData Res(″XZBZ″)=坐标值(, 其它字段赋值) … Res .update Res .Close
2 常规的空间数据存储方式
常规的空间数据一般以 数据文 件的方式 存在 , 如 在 ArcInfo 中以 Coverage 方式 存 在 , 由 一 系 列的 文 件 组 成 ,
收稿日期 :2002-04-29;修返日期 :2002-07-08
如 :tic , bad , arc , aat , pat , tol 等 , 对 任一要 素的修改 将引起 一系列文 件的 变化 。在 AutoCAD 中以 Dwg 的 文件 方式 存在 , 所有的空 间操 作都 在 Dwg 中得 以反映 , 这样 的数 据管理模式不利于数据的安全 、共享 、发布 。
街道 街坊 宗地号 宗地面积 权利人 …
5 10
1
123.4 张三 …
5 10
1
123.4 张三 …
…… …
…
……
Geometry 20 ,0 , 20, 10 ,0 , 10
0 ,0 , 20, 0 …
EntitySEQ 1 2 …
按表 1 这样设计的表通过 ObjectID 字段定义了实体 的惟一性 , 通过 EntitySEQ 字段定义了此实体的坐标记录
图 3 基于 Oracle Spatial 的空间数据互操 作
5 空间数据库存储的实践———ARCSDE 的存储
ARCSDE 是全球最大的 GIS 厂商 ESRI 公司的空间数
据库引擎 , 主要由 A 表 、F 表 、S 表 及部 分元 数据表 所构
成 。在 Oracle8i Spatial 对象关 系数据 库中只有 业务表 A
表 ,毋 需关 联业务 表到 F 表和 S 表 , 从 而使 对象关 系数
据运行速度很快 。其中 F 表结构如下 :
fid INTEGER NOT NULL,
numofpt s entity
INTEGER NOT NULL, SMALLINT NOT NULL,
eminx eminy
个点坐标为一条记录 。
表 2 属性表
要素码 街道 街坊 宗地号 …
101
5
10
1
ObjectID 1
பைடு நூலகம்为 加快空 间数 据的搜 索 , 还 需要建 立空间 索引 表 , 首先需建立实体范围表 , 如表 5 所 示 。然后在 此基础 上 根据空间网格化或用 R-Tree 方法 建立空间索 引表 , 如 表 6 所示 。
Abstract :In GIS , the storage of spatial data is important .The paper discussed storage models of spatial data , and pointed out good storage model is extended RDBMS or oriented RDBMS .ORDBMS will become more popular in GIS . Key words :Spatial Data ;RDBMS Storage ;ORDBMS Storage ;ARCSDE ;Oracle Spatial