【地理空间数据库】第一次小测(知识点详解2)
空间几何对象是 PostGIS 中存储地理实体的专用数据类型点类Point(单点,如经纬度坐标:北京市中心)、MultiPoint(多点集合,如多个公交站点)线类LineString(单条线段,如单条道路中心线)、(多线段集合,如整个城市的道路网)面类(重中之重,考点核心)✔Polygon单一封闭区域,由一条外边界 + 可选内边界(孔洞)组成,无分离的部分。→ 适用:形状完整、无飞地的区域(如一个
我来详细拆解这几个空间数据库核心知识点:
一、空间数据管理技术的发展阶段
空间数据(带位置、形状的地理数据)的管理方式,随技术发展经历了 4 个阶段:
-
文件系统阶段
- 方式:用纯文件存储(如 Shapefile、GeoTIFF),通过独立软件(如 ArcGIS)读写。
- 缺点:无统一管理、数据冗余大、无法多用户并发访问。
-
文件混合系统阶段
- 方式:“文件存空间数据 + 关系数据库存属性数据”(如 Shapefile 存几何,MySQL 存名称、ID)。
- 缺点:空间数据与属性数据分离,查询需手动关联,效率低。
-
空间数据库引擎(SDE)阶段
- 方式:通过 “引擎”(如 ArcSDE)将空间数据封装后,存入关系数据库(如 Oracle)。
- 特点:实现空间与属性数据的统一管理,但依赖特定引擎,兼容性差。
-
空间数据库管理系统阶段
- 方式:关系数据库直接支持空间数据类型(如 PostgreSQL+PostGIS、MySQL Spatial)。
- 特点:原生支持空间存储、查询、分析,兼容性强、效率高,是当前主流。
二、空间数据库标准
空间数据库需遵循统一规范,才能实现数据互通与功能兼容:
-
PostGIS 遵循的规范
- 核心遵循 OGC Simple Features 规范(开放地理空间联盟制定),定义了点、线、面等基础几何对象的存储与操作规则。
- 同时支持 ISO SQL/MM Part 3(SQL 多媒体标准的空间部分),扩展了空间函数与数据类型。
-
空间网络模型对应的标准
- 主要遵循 ISO SQL/MM Part 4(SQL 多媒体标准的 “空间网络” 部分),定义了网络拓扑(如道路、管线的节点、边)的存储与分析规则。
三、空间几何对象(以 MultiPolygon 为例)
空间几何对象是描述地理实体形状的 “数据类型”,常用的有:
- 点(Point):表示单个位置(如经纬度坐标)。
- 线(LineString/MultiLineString):表示路径(如道路中心线,MultiLineString 是多条线的集合)。
- 面(Polygon/MultiPolygon):表示区域(如北京市的形状)。
Polygon:单个封闭区域(无孔洞或分离部分)。MultiPolygon:多个 Polygon 的集合(适用于 “有飞地” 的区域,如北京市包含多个分散的行政区域)。
四、九交矩阵(DE-9IM)判断空间关系
九交矩阵(Dimensionally Extended 9-Intersection Model)是判断两个空间对象关系的标准方法,通过两个对象的 “内部(Interior)、边界(Boundary)、外部(Exterior)” 的交集维度,生成一个 3×3 的矩阵,从而定义空间关系(如相接、相交、包含)。
以 “河北省与北京市” 的空间关系为例(用1表示交集维度≥1,0表示维度 = 0,-1表示无交集):
| 北京内部 | 北京边界 | 北京外部 | |
|---|---|---|---|
| 河北内部 | 1(两省区域相邻,内部有接触) | 1(边界重合) | 1(河北外部包含北京外部区域) |
| 河北边界 | 1(河北边界与北京内部接触) | 1(边界重合) | 1(河北边界延伸至北京外部) |
| 河北外部 | 0(北京内部不在河北外部) | 0(北京边界不在河北外部) | 1(河北外部与北京外部有交集) |
常见空间关系(通过矩阵判断):
- 相接(Touch):两个对象仅边界相交,内部不相交(如两个相邻的面)。
- 包含(Contains):一个对象完全在另一个对象内部(如点在面内)。
五、空间数据库扩展(PostGIS 相关应用)
PostGIS 是PostgreSQL 数据库的空间扩展插件,让普通关系数据库具备空间数据管理能力,核心应用包括:
- 空间数据存储:支持点、线、面等几何类型,存储地理实体的形状与坐标。
- 空间查询:通过函数(如
ST_DWithin)查询 “某点 2 公里内的设施”。 - 空间分析:计算面积(
ST_Area)、长度(ST_Length)、缓冲区(ST_Buffer)等。 - 业务场景:城市道路管理(存储道路中心线)、出租车轨迹分析(存储实时位置并关联道路)等。
✅ 空间数据库核心知识点(完整版 + PostGIS 常用函数速查表)
一、空间数据管理技术的发展阶段(4 个阶段,必考,按顺序记)
核心背景:空间数据 = 几何图形 (坐标 / 形状) + 属性信息 (名称 / 编号 / 长度),这 4 个阶段是空间数据与属性数据从分离到统一、从低效到高效的演进,考点常考「阶段特点 + 优缺点」
-
第一阶段:纯文件系统管理阶段
- 存储方式:空间数据和属性数据全部存入独立文件(如 Shapefile、GeoTIFF、CAD 文件),无数据库参与。
- 访问方式:依赖 ArcGIS、QGIS 等 GIS 软件直接读写文件。
- 优点:简单易实现,无数据库部署成本;
- 缺点:无数据约束、数据冗余严重、无法多用户并发访问、查询效率极低,空间和属性数据无关联规则。
-
第二阶段:文件 - 关系数据库混合管理阶段
- 存储方式:分离存储 → 空间几何数据存在文件(如 Shapefile 存面 / 线 / 点),属性数据存入传统关系数据库(MySQL/Oracle/PostgreSQL)。
- 关联方式:通过「唯一 ID」手动关联文件的空间数据和数据库的属性数据。
- 优点:属性数据可利用数据库的索引、约束、查询功能,比纯文件高效;
- 缺点:空间 + 属性数据分离,查询需二次关联,无统一事务管理,易出现数据不一致,空间操作仍依赖 GIS 软件。
-
第三阶段:空间数据库引擎(SDE)管理阶段
- 存储方式:引入「空间数据库引擎」(如 ArcSDE、Oracle Spatial 引擎)作为中间件,将空间数据封装后存入传统关系数据库,实现空间 + 属性数据同库存储。
- 核心特点:引擎负责解析空间数据格式、执行空间运算,数据库只负责存储。
- 优点:首次实现空间与属性数据的统一管理,支持并发访问、数据安全;
- 缺点:高度依赖专属引擎,兼容性差、成本高,空间运算效率受引擎性能限制,非开源。
-
第四阶段:原生空间数据库管理系统阶段(主流,重中之重)
- 存储方式:传统关系数据库原生支持空间数据类型和空间函数,无需中间件,直接存储、管理、运算空间数据。
- 代表技术:
PostgreSQL + PostGIS、MySQL Spatial、Oracle Spatial;PostGIS 是考试核心考点。 - 优点:开源免费、兼容性极强,空间运算效率最高,完美结合关系数据库的所有优点(约束、索引、事务、多表连接)+ 空间数据处理能力,是目前行业主流方案。
二、空间数据库标准(必考,精准考点,无混淆)
所有空间数据库 / 空间扩展(如 PostGIS)的设计和开发,都遵循统一国际标准,保证不同软件 / 数据库的空间数据互通、函数通用,考点集中在「对应关系」
✔ 核心两大标准体系
-
OGC 开放地理空间联盟规范 → PostGIS 的核心遵循标准
- 全称:
OGC Simple Features for SQL(SQL 简单要素规范) - 定义内容:规定了「点、线、面、复合几何」等基础空间几何对象的数据结构、存储格式、基础空间函数,是所有空间数据库的通用基础。
- 考点:
PostGIS 首要遵循 OGC Simple Features 规范。
- 全称:
-
ISO SQL/MM 国际标准化组织规范 → 分模块对应不同空间需求
- 全称:SQL Multimedia and Application Packages(SQL 多媒体应用包),是对 SQL 标准的空间扩展;
- 分模块考点(必背):
- ✅
ISO SQL/MM Part 3:定义「基础空间几何对象」的操作规则,PostGIS 兼容此标准,补充 OGC 规范的细节; - ✅
ISO SQL/MM Part 4:定义「空间网络模型」的标准,专门针对道路、管线、水系这类「节点 + 边」的网络型空间数据,是空间网络分析的统一标准。
- ✅
考试高频题:PostGIS 遵循什么规范?→ 主要遵循 OGC Simple Features,同时兼容 ISO SQL/MM Part3;空间网络模型对应的标准是?→ ISO SQL/MM Part4。
三、空间几何对象(核心:MultiPolygon,必考定义 + 区分)
空间几何对象是 PostGIS 中存储地理实体的专用数据类型,所有地理事物都能抽象为以下几类,考点集中在「Polygon 与 MultiPolygon 的区别」「适用场景」,所有类型均兼容 OGC 规范,按复杂度排序:
- 点类:
Point(单点,如经纬度坐标:北京市中心)、MultiPoint(多点集合,如多个公交站点) - 线类:
LineString(单条线段,如单条道路中心线)、MultiLineString(多线段集合,如整个城市的道路网) - 面类(重中之重,考点核心):
- ✔
Polygon:单一封闭区域,由一条外边界 + 可选内边界(孔洞)组成,无分离的部分。→ 适用:形状完整、无飞地的区域(如一个圆形公园、一个矩形小区)。 - ✔
MultiPolygon:多个 Polygon 的集合,是 PostGIS 中表示「区域形状」的核心类型。→ 定义:专门用于表示「由多个分离的封闭区域组成的地理实体」,多个 Polygon 之间无交集。→ 适用:带飞地 / 分散的行政区域(如中国版图、北京市行政区,包含多个分离的区块)、湖泊群、岛屿群,考试 100% 考此类型的应用场景。
- ✔
核心考点:什么几何对象适合表示区域形状?→ MultiPolygon。
四、九交矩阵 DE-9IM(Dimensionally Extended 9-Intersection Model)【必考核心,精准背诵】
✅ 1. 核心定义
九交矩阵是判断两个空间几何对象之间空间关系的国际标准方法,是空间关系判断的「底层逻辑」,所有 PostGIS 的空间关系函数(如 ST_Touches、ST_Contains)都是基于九交矩阵实现的。
✅ 2. 矩阵的构成(3×3 矩阵,必背,无例外)
判断逻辑:对任意两个空间对象 A 和 B,都将其拆解为 3 个部分:
- 内部(Interior, I):对象的核心区域,不含边界(如北京市的城区内部)
- 边界(Boundary, B):对象的轮廓线 / 边界点(如北京市的行政区边界)
- 外部(Exterior, E):对象以外的所有空间
九交矩阵 = A 的 3 个部分 与 B 的 3 个部分 依次求交集,形成 3×3 的矩阵,矩阵中每个单元格的值表示「交集的维度」:
-1:无交集(两个部分完全分离)0:交集为点(维度为 0)1:交集为线(维度为 1)2:交集为面(维度为 2)
矩阵固定格式(必记):
I(A)∩I(B) B(A)∩I(B) E(A)∩I(B)
I(A)∩B(B) B(A)∩B(B) E(A)∩B(B)
I(A)∩E(B) B(A)∩E(B) E(A)∩E(B)
✅ 3. 必考应用:九交矩阵判断「相接 (Touch)」关系
相接(ST_Touches)是考试最高频的空间关系考点,用九交矩阵的判定规则:
✔ 两个空间对象「相接」的核心条件:仅边界相交,内部完全不相交矩阵特征:I(A)∩I(B)=−1 且 B(A)∩B(B)=−1
→ 例子:河北省和北京市、两个相邻的小区、两条首尾相连的道路,都是「相接」关系。
✅ 4. 补充高频空间关系(九交矩阵推导,必背)
- 包含(ST_Contains):A 完全包裹 B,B 的内部 + 边界都在 A 的内部 → I(A)∩I(B)=2
- 相交(ST_Intersects):A 和 B 的任意部分有交集(内部 / 边界),是最宽泛的关系
- 相离(ST_Disjoint):A 和 B 无任何交集,所有单元格都是 - 1
五、空间数据库扩展 - PostGIS(必考,核心中的核心)
✅ 1. 定义(必背)
PostGIS 是 开源关系型数据库 PostgreSQL 的空间扩展插件,通过这个插件,原本只能存储普通数据的 PostgreSQL,被赋予了「存储空间数据、执行空间运算、空间分析」的全部能力,是目前最主流的开源空间数据库方案。
✅ 2. 核心核心能力(考试全考这 5 点)
- 支持 OGC/ISO 标准的所有空间几何数据类型(Point、Polygon、MultiPolygon 等);
- 提供几百个空间函数,实现空间查询、分析、运算;
- 支持空间索引,大幅提升空间查询效率;
- 完美兼容 PostgreSQL 的所有特性(主键、外键、约束、多表连接、嵌套查询);
- 支持空间参考系(如 4326 坐标系,经纬度),可实现坐标转换。
✅ 重磅:PostGIS 高频空间函数速查表(考试 100% 考,分模块整理,无多余,直接背诵)
【说明】
- 所有函数均为考试高频考点,来自你这份测试卷的原题;
- 函数名大小写不敏感(PostgreSQL 特性),如
ST_Area()和st_area()均可; - 所有函数返回值、作用、应用场景一一对应,完美匹配你的考点,直接用!
一、几何对象「创建 / 构造」函数(建表 + 插入数据必考)
| 函数名称 | 核心作用 | 语法示例 | 应用场景 |
|---|---|---|---|
ST_GeomFromText('几何文本', 坐标系) |
将 WKT 格式的文本,转为 PostGIS 的 geometry 空间类型;坐标系4326 是必考值(全球通用经纬度) | ST_GeomFromText('POINT(116.4 39.9)',4326)ST_GeomFromText('LineString(116 39,117 40)',4326)ST_GeomFromText('MultiPolygon(((xxx)))',4326) |
插入空间数据时必用,如插入道路、区域、点位的坐标 |
ST_MakePoint(经度,纬度) |
快速构造「点对象」,最常用的点构造函数,效率高于上面的函数 | ST_MakePoint(116.3972,39.9075) |
存储出租车位置、POI 点位、传感器坐标等 |
ST_AsText(geom) |
把 PostGIS 的 geometry 空间类型,转回文本格式,便于查看 | SELECT ST_AsText(position) FROM taxi; |
查询时查看空间对象的具体坐标,调试必备 |
二、空间「关系判断」函数(基于九交矩阵,必考 TOP 级)
| 函数名称 | 核心作用(九交矩阵实现) | 返回值 | 应用场景 |
|---|---|---|---|
ST_Touches(A,B) |
判断 A 和 B 是否「相接」:仅边界相交,内部不相交 | true/false | 判断两个区域是否相邻、两条道路是否相连 |
ST_Contains(A,B) |
判断 A 是否完全包含 B | true/false | 判断一个点位是否在某个行政区内、一个小区是否在某个街道内 |
ST_Intersects(A,B) |
判断 A 和 B 是否有任意交集(最常用) | true/false | 判断两个几何对象是否重叠、相交、相接 |
ST_Disjoint(A,B) |
判断 A 和 B 是否完全分离(无交集) | true/false | 判断两个区域是否互不相邻 |
三、空间「距离计算」函数(业务应用题必考,测试卷原题全有)
| 函数名称 | 核心作用 | 语法示例 | 应用场景(原题考点) |
|---|---|---|---|
ST_Distance(A,B) |
计算两个空间对象的最短直线距离,单位与坐标系一致(4326 为米) | SELECT ST_Distance(t1.position,t2.position) FROM taxi t1,taxi t2; |
计算两辆出租车的距离、点位到道路的距离 |
ST_DWithin(A,B,距离值) |
判断 A 和 B 的最短距离是否小于等于指定值,效率极高(走空间索引),考试第一高频函数 | SELECT * FROM taxi WHERE ST_DWithin(position, ST_MakePoint(116,39), 2000); |
✅ 查询 2 公里内的空车✅ 查询某点位 100 米内的所有车辆✅ 筛选指定范围内的地理实体 |
四、空间「属性计算」函数(基础分析必考)
| 函数名称 | 核心作用 | 语法示例 | 应用场景 |
|---|---|---|---|
ST_Area(geom) |
计算面 / 多边形的面积 | SELECT ST_Area(geom) FROM district; |
计算行政区面积、公园面积、地块面积 |
ST_Length(geom) |
计算线 / 道路的长度 | SELECT ST_Length(geom) FROM road; |
计算道路长度、河流长度、管线长度 |
ST_NumGeometries(geom) |
计算复合几何对象的个数 | SELECT ST_NumGeometries(geom) FROM china; |
查看 MultiPolygon 有多少个分离的区域 |
五、空间「分析处理」函数(进阶应用,测试卷考点)
| 函数名称 | 核心作用 | 应用场景 |
|---|---|---|
ST_Buffer(geom, 距离) |
给空间对象生成「缓冲区」,如点生成圆形缓冲区、线生成带状缓冲区 | 查询某道路两侧 50 米内的所有商铺、某点位 1 公里的辐射范围 |
ST_Centroid(geom) |
计算面对象的「几何中心点」 | 求行政区的中心坐标、公园的中心点 |
✅ 最后补充:2 个考试「高频易错点」(必看,避坑)
- 关系代数的「投影 (π)」和空间几何的「投影」不是一个概念:前者是取表的列,后者是坐标系统的转换,考试不会混淆,只需区分即可;
- PostGIS 的空间字段定义固定语法:
geometry(几何类型, 坐标系),如geometry(Point,4326)、geometry(MultiPolygon,4326),建表题必考此写法。
更多推荐
所有评论(0)