Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 13249-3:2016 是国际标准化组织(ISO)与国际电工委员会(IEC)联合发布的《信息技术 — 数据库语言 — SQL多媒体和应用包》(SQL/MM)系列标准的第3部分,专门针对空间数据管理与查询。该标准定义了在SQL环境中表示和处理空间几何对象所必需的数据类型、函数以及谓词,使得关系型数据库能够原生支持地理信息系统(GIS)中的点、线、面等空间特征。
ST_Geometry 为根的几何类型层次结构,并提供了丰富的空间操作函数,完整覆盖了开放地理空间联盟(OGC)的简单要素访问规范(SFS)。 该标准主要适用于以下场景:
截至2026年,该标准(最初发布于2003年,2016年为第三版)已被几乎所有主流关系数据库厂商部分或完全实现,成为业界事实上遵循的空间SQL规范。
标准定义了一个以 ST_Geometry 为抽象基类的几何类型体系,所有具体类型均继承自该基类。
ST_Point — 零维几何体,表示单个坐标点;ST_Curve — 一维几何体的抽象基类,其子类型包括 ST_LineString、ST_CircularString;ST_Surface — 二维几何体的抽象基类,其子类型 ST_Polygon 为最基本的区域类型;ST_GeomCollection — 几何集合的抽象基类,包含 ST_MultiPoint、ST_MultiCurve、ST_MultiLineString、ST_MultiSurface 及 ST_MultiPolygon。每个几何对象必须关联一个空间参考标识(SRID),用于表示其坐标参考系统(如WGS84、EPSG:4326)。标准要求数据库提供系统表以管理SRID映射,并支持投影坐标系之间简单的转换函数。
| 函数类别 | 代表函数 | 功能说明 |
|---|---|---|
| 几何构造与访问 | ST_PointFromText, ST_AsBinary, ST_GeometryN | 从WKT/WKB创建几何,输出几何成员 |
| 空间关系谓词 | ST_Equals, ST_Intersects, ST_Touches, ST_Within | 基于DE-9IM模型判断空间关系 |
| 空间计算与度量 | ST_Distance, ST_Length, ST_Area, ST_Perimeter | 计算距离、面积、周长等标量值 |
| 空间分析与处理 | ST_Buffer, ST_Union, ST_Intersection, ST_ConvexHull | 生成缓冲区、进行集合运算和几何变换 |
ISO/IEC 13249-3 建立在 ISO/IEC 9075(SQL标准) 基础之上,使用SQL类型扩展、用户定义类型(UDT)、方法定义以及表函数机制。实现该标准的数据库应同时支持SQL:2011及以上核心特性。
标准不强制规定索引算法,但建议实现空间索引以提高空间谓词的过滤效率。实践中多采用R-tree或四叉树。开发人员在创建空间列时应当显式创建空间索引,最常用的语法为:
CREATE SPATIAL INDEX idx_geom ON spatial_table (geom_column);
ST_Intersects 和 ST_Distance)时,必须确保参与计算的几何对象具有相同的空间参考系统(SRID)。不同SRID间的直接比较将被视为未定义行为,可能导致严重错误的空间关系判定。实施过程中应由应用层统一SRID或使用标准提供的坐标转换函数。在企业级实施时,建议采用最新稳定的数据库版本(如PostgreSQL 16+,PostGIS 3.4+),它们对标准中的大部分函数提供了高契合度的支持,并额外扩展了3D几何、线性参考等实用功能。
ST_前缀,而OGC标准早期采用不同前缀(如centroid)。目前主流数据库已基本融合两种规范,以ST_前缀为主。 ST_IsValid、ST_IsSimple),在数据入库前对几何对象进行验证;配合CHECK约束强制SRID一致。定期运行ST_MakeValid修复无效几何,保证空间索引与查询的正确性。