空间数据库支持哪些几何图形
Posted: Thu May 29, 2025 3:53 am
空间数据库的核心功能是能够存储、管理和操作地理空间数据。为了实现这一目标,它们提供了专门的空间数据类型,这些类型能够表示现实世界中各种地理特征的几何形状。这些几何图形的定义通常遵循 OGC (Open Geospatial Consortium) 的简单特征 (Simple Features) 规范,确保了不同空间数据库和 GIS 软件之间的数据互操作性。
1. OGC 简单特征几何类型
OGC 简单特征规范定义了一套标准的几何类型层次结构,这是大多数空间数据库所支持的基础。
GEOMETRY (基类): 所有其他几何类型的抽象基类。在实际应用中,很少直接使用 GEOMETRY 类型存储数据,而是使用其子类。
POINT (点):
表示一个单一的位置。
由一对 (X, Y) 坐标(二维)或 (X, Y, Z) / (X, Y, Z, M) 坐标(三维或带测量值)定义。
应用: 城市、兴趣点 (POI)、GPS 航点、传感器位置。
LINESTRING (线串):
表示一系列连接的点,形成一条线段序列。
可以表示直线或折线。
应用: 道路、河流、管线、边界线、轨迹。
POLYGON (多边形):
表示一个封闭区域,由一个外部边界和一个或多个可选的内部边界(表示孔洞)组成。
边界是闭合的 LINESTRING。
应用: 行政区划、湖泊、建筑物、土地利用区。
2. 多部分几何与几何集合
除了基本的单一部分几何外,OGC 规范还定义了多部分几何和几何集合,以处理更复杂的地理特征。
MULTIPOINT (多点):
由一个或多个不连续的 POINT 对象组成。
应用: 多个样本点、一组独立的标记点。
MULTILINESTRING (多线串):
由一个或多个不连续的 LINESTRING 对象组成。
应用: 岛屿国家由多个不相连的 特殊数据库 海岸线组成、一个城市的多个不相连的地铁线路。
MULTIPOLYGON (多面):
由一个或多个不连续的 POLYGON 对象组成。
应用: 由多个不相连的岛屿组成的国家、零散分布的公园区域。
GEOMETRYCOLLECTION (几何集合):
最灵活的类型,可以包含任何类型(包括单部分和多部分)的几何对象的混合集合。
应用: 一个复杂的地理特征,例如一个包含建筑物、道路和点的综合设施。
3. 空间数据库对几何图形的支持示例
不同的空间数据库平台在支持这些几何类型方面存在细微差异,但核心 OGC 类型是普遍支持的。
PostGIS (基于 PostgreSQL):
支持所有 OGC Simple Features 几何类型。
通过 GEOMETRY 类型及其约束(例如 GEOMETRY(Point, 4326))来指定特定的几何类型和SRID。
还支持 3D (Z) 和带测量值 (M) 的几何。
Oracle Spatial (基于 Oracle Database):
使用 SDO_GEOMETRY 数据类型,这是一个高度灵活的结构,通过内部编码(SDO_GTYPE)来表示各种 OGC 几何类型。
全面支持 2D、3D、4D (Z, M) 几何。
SQL Server Spatial (基于 SQL Server):
提供 GEOMETRY 和 GEOGRAPHY 两种空间数据类型。
GEOMETRY 用于平面坐标系,GEOGRAPHY 用于球面坐标系。
这两种类型都支持 OGC 定义的点、线、面及其多部分类型。
MySQL Spatial (基于 MySQL):
支持 POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION。
相对而言,其对 Z 和 M 维度的支持以及复杂几何函数的数量可能不如 PostGIS 和 Oracle Spatial 强大。
通过支持这些标准化的几何图形,空间数据库能够有效地对现实世界的地理特征进行建模,并在此基础上进行强大的空间查询和分析。
1. OGC 简单特征几何类型
OGC 简单特征规范定义了一套标准的几何类型层次结构,这是大多数空间数据库所支持的基础。
GEOMETRY (基类): 所有其他几何类型的抽象基类。在实际应用中,很少直接使用 GEOMETRY 类型存储数据,而是使用其子类。
POINT (点):
表示一个单一的位置。
由一对 (X, Y) 坐标(二维)或 (X, Y, Z) / (X, Y, Z, M) 坐标(三维或带测量值)定义。
应用: 城市、兴趣点 (POI)、GPS 航点、传感器位置。
LINESTRING (线串):
表示一系列连接的点,形成一条线段序列。
可以表示直线或折线。
应用: 道路、河流、管线、边界线、轨迹。
POLYGON (多边形):
表示一个封闭区域,由一个外部边界和一个或多个可选的内部边界(表示孔洞)组成。
边界是闭合的 LINESTRING。
应用: 行政区划、湖泊、建筑物、土地利用区。
2. 多部分几何与几何集合
除了基本的单一部分几何外,OGC 规范还定义了多部分几何和几何集合,以处理更复杂的地理特征。
MULTIPOINT (多点):
由一个或多个不连续的 POINT 对象组成。
应用: 多个样本点、一组独立的标记点。
MULTILINESTRING (多线串):
由一个或多个不连续的 LINESTRING 对象组成。
应用: 岛屿国家由多个不相连的 特殊数据库 海岸线组成、一个城市的多个不相连的地铁线路。
MULTIPOLYGON (多面):
由一个或多个不连续的 POLYGON 对象组成。
应用: 由多个不相连的岛屿组成的国家、零散分布的公园区域。
GEOMETRYCOLLECTION (几何集合):
最灵活的类型,可以包含任何类型(包括单部分和多部分)的几何对象的混合集合。
应用: 一个复杂的地理特征,例如一个包含建筑物、道路和点的综合设施。
3. 空间数据库对几何图形的支持示例
不同的空间数据库平台在支持这些几何类型方面存在细微差异,但核心 OGC 类型是普遍支持的。
PostGIS (基于 PostgreSQL):
支持所有 OGC Simple Features 几何类型。
通过 GEOMETRY 类型及其约束(例如 GEOMETRY(Point, 4326))来指定特定的几何类型和SRID。
还支持 3D (Z) 和带测量值 (M) 的几何。
Oracle Spatial (基于 Oracle Database):
使用 SDO_GEOMETRY 数据类型,这是一个高度灵活的结构,通过内部编码(SDO_GTYPE)来表示各种 OGC 几何类型。
全面支持 2D、3D、4D (Z, M) 几何。
SQL Server Spatial (基于 SQL Server):
提供 GEOMETRY 和 GEOGRAPHY 两种空间数据类型。
GEOMETRY 用于平面坐标系,GEOGRAPHY 用于球面坐标系。
这两种类型都支持 OGC 定义的点、线、面及其多部分类型。
MySQL Spatial (基于 MySQL):
支持 POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION。
相对而言,其对 Z 和 M 维度的支持以及复杂几何函数的数量可能不如 PostGIS 和 Oracle Spatial 强大。
通过支持这些标准化的几何图形,空间数据库能够有效地对现实世界的地理特征进行建模,并在此基础上进行强大的空间查询和分析。