# 数据管理概述
# GIS数据库的特点
- 空间数据和属性数据
- 数据具有非结构化的特点
- 数据应用面广
- 数据量大
# OGC简单要素模型
OGC(Open Geospatial Consortium- OGC,即开放地理空间信息联盟)
不同GIS软件对空间数据定义和存储结构是有差别的,其所支持的数据格式需经过转换才能被相互使用
在GIS领域,OGC定义了一组与平台无关的空间二维几何对象模型和一系列函数访问接口
# 几何对象模型
对地理几何类型和空间参考的定义
# 常用的空间对象信息查询函数接口
- Geometry对象属性获取接口:GeometryType、Dimension、Area
- Geometry对象的空间操作函数:Equals、Intersects、Contains
# 数据格式
用于空间要素的交换与存储,WKT示例:
- WKT:一种文本标记语言,表示空间几何对象及空间参考信息
- WKB:WKT的二进制形式,在数据传输与数据库存储时用
# 空间数据组织
指按照一定的方式和规则对空间数据进行整理与存储的过程
# 图幅内空间数据的组织
- 工作区:一幅图或几幅图的范围
- 逻辑层:如果一个工作区包含的内容很多,为了显示、制图和查询方便,可以定义逻辑层
- 地物类:类型相同的地物组合,一个工作区通常包含多个地物类
# 图库管理
GIS大型工程管理的一种模式
建立图幅索引,即基于工作区的二维空间索引
# 矢量数据库
空间点、线、面等要素的表达、组织和存储
# 组织方式
- 空间实体的几何形状: 坐标
- 空间实体的属性特征: 属性表
- 空间实体的空间关系: 建立拓扑关系
# 存储方案
- 几何数据以自定义格式的二进制形式和其相关属性数据一起存储在关系表中
- 充分利用关系数据库的优点进行数据管理查询
- 关系表的组织方式依数据库软件不同而有所差异
# 存储特点
- 不保存对象之间的拓扑关系
- 空间属性数据采用关系模型进行组织
- 空间几何数据使用对象进行表达
- 对象多采用较为OGC简单要素模型
# 栅格数据库
大部分对象-关系数据库系统支持栅格数据存储(例如:GeoRaster、PostGIS)
# 栅格对象信息
存储在栅格数据的关系表中一列,包含栅格数据的一些基本信息,比如空间范围,波段信息,坐标系统等
# 数据分块信息等其他信息
根据空间数据库预定义的关系模式进行存储
# 栅格像元数据
在分块以后以二进制块(BLOB)的形式存储在关系表中,并与栅格数据对象关联
# 无缝数据库
大型GIS图库工程管理
不分幅,将某区域内的地理数据统一存储在数据
物理无缝
不分幅,将某区域内的地理数据统一存储在数据库中,实现空间数据库的物理无缝连接逻辑无缝
在大型GIS图库工程管理中,选择物理分幅,但保持逻辑上空间数据的无缝
# 空间数据索引
依据空间对象的位置和形状或空间对象之间的某种空间关系按一定的顺序排列的一种数据结构
实现空间数据快速查询和检索的重要手段
# 对象范围索引
当记录每个空间对象的坐标时,同时记录该对象的最大、最小窗坐标
根据空间对象的最大最小范围,预先排除那些没有落入检索窗口内的空间对象
# 空间格网索引
将工作区按一定的规则划分为格网,记录每一格网内所包含的空间对象
建立空间索引的线性表,将格网按Morton码进行编码,建立Morton码与空间对象的关系
# 二叉树空间索引
每个节点最多有两个子节点的树结构
常见的基于二叉树的空间索引结构:BSP树、KD树
# BSP树
将目标空间逐级一分为二的划分
# KD树
BSP树向多维空间的扩展,用𝑘−1维超平面把𝑘维空间递归地分割成两部分
# 四叉树空间索引
# 线性四叉树空间索引
先采用Morton编码(Peano键),再根据空间对象覆盖的范围,进行四叉树分割,只存储最后叶节点信息
# 层次四叉树空间索引
需要记录中间节点和父节点到子节点之间的指针,如果某个地物覆盖了中间节点,还要记录该空间对象的标识
# R与R+树空间索引
# R树
设计一些虚拟的矩形,将空间对象包含在这些矩形框内,矩形框包含空间对象的指针
判断哪些虚拟矩形落在检索窗口内
进一步判断虚拟矩形中的哪些空间对象为被检索对象
# R+树
改进的R树空间索引
# 空间数据管理
# 全关系型空间数据库管理
图形数据和属性数据都采用关系数据管理系统管理,在标准的关系数据库上增加空间数据管理层,利用该层将结构查询语言(GeoSQL)转化成标准的SQL查询
# 基于关系模型方式
- 图形数据都按照关系数据模型组织
- 涉及一系列关系连接运算,相当费时
- 处理空间目标效率不高
# Blob字段方式
- 将图形数据的变长部分处理成二进制块BLOB字段
- 大部分关系数据库管理系统都提供了二进制块的字段域
- 二进制块的读写效率要比定长的属性字段慢得多,特别是涉及对象的嵌套时,速度更慢
# 空间数据库引擎SDE(Spatial Database Engine)
- 介于GIS应用程序和空间数据库间的中间件,为用户提供访问空间数据库的统一接口
- SDE引擎本身不具有存储功能,只提供和底层存储数据库之间访问的标准接口
- SDE屏蔽了不同底层数据库的差异,建立了上层抽象数据模型到底层数据库之间的数据映射关系
- 空间数据库引擎支持矢量和栅格数据在关系数据库中的存储
# 对象关系数据库管理
对传统的关系数据库进行扩展,使之能够直接存储和管理非结构化的空间数据
可以通过空间数据管理专用模块定义操作点、线、面等空间对象的API函数
对象之间一般不能带有拓扑关系,没有解决对象嵌套的问题,因此具有拓扑数据结构的数据不能采用对象-关系数据据库进行管理
# Oracle Spatial
- 矢量数据管理:SDO_GEOMETRY对象类型
- 栅格数据存储:GeoRaster
# 空间数据查询
# 空间查询基本步骤
- 通过属性过滤和空间索引在空间数据库中快速检索出被选空间实体的标识码(OID)
- 空间数据和属性数据进行连接,返回该空间实体
# 基于空间关系的查询
# 邻接查询
- 多边形邻接查询:查询与面状地物A相邻的所有多边形
- 线与线的邻接查询:查询与线状地物A相邻的所有线
# 包含关系查询
查询某一个面状地物所包含的某一类的空间对象
# 穿越查询
查询某一条公路或一条河流穿越了哪些县、乡
# 落入查询
确定一个空间对象落在哪个空间对象之内
# 缓冲区查询
- 用户给定一个点缓冲、线缓冲或面缓冲的距离
- 从而形成一个缓冲区多边形
- 检索出该缓冲区多边形内的空间地物
# 常用的空间关系谓词
- Ajacent—相邻
- Contain —包含
- Cross —穿过
- Inside —在……之内
- Buffer —缓冲区
Select 所有属性项
From 县或市
Where 县或市·人口>50万
And Cross(河流ꞏ名称=“长江”)