第 7 章。PostGIS 参考

目录
7.1. PostGIS 几何/地理/框数据类型
7.2. 表管理函数
7.3. 几何构造函数
7.4. 几何访问器
7.5. 几何编辑器
7.6. 几何验证
7.7. 空间参考系统函数
7.8. 几何输入
7.8.1. 众所周知的文本 (WKT)
7.8.2. 众所周知的二进制 (WKB)
7.8.3. 其他格式
7.9. 几何输出
7.9.1. 众所周知的文本 (WKT)
7.9.2. 众所周知的二进制 (WKB)
7.9.3. 其他格式
7.10. 运算符
7.10.1. 边界框运算符
7.10.2. 距离运算符
7.11. 空间关系
7.11.1. 拓扑关系
7.11.2. 距离关系
7.12. 测量函数
7.13. 叠加函数
7.14. 几何处理
7.15. 覆盖
7.16. 仿射变换
7.17. 聚类函数
7.18. 边界框函数
7.19. 线性参考
7.20. 轨迹函数
7.21. SFCGAL 函数
7.22. 长事务支持
7.23. 版本函数
7.24. 大一统自定义变量 (GUC)
7.25. 故障排除函数

下面给出的函数是 PostGIS 用户可能需要的函数。还有一些其他函数是 PostGIS 对象所需的支撑函数,对一般用户没有用。

[Note]

PostGIS 已开始从现有命名约定过渡到以 SQL-MM 为中心的约定。因此,您所熟知和喜爱的多数函数已使用标准空间类型 (ST) 前缀重命名。以前的函数仍然可用,但本文档中没有列出,因为更新后的函数等效。本文档中未列出的非 ST_ 函数已弃用,将在未来版本中删除,因此请停止使用它们。

7.1. PostGIS 几何/地理/框数据类型

摘要

本节列出了 PostGIS 安装的用于表示空间数据的自定义 PostgreSQL 数据类型。

每个数据类型都描述了它的类型转换行为。一个 类型转换 将一种数据类型的数值转换为另一种类型。PostgreSQL 允许为自定义类型定义转换行为,以及用于转换类型值的函数。转换可以具有 自动 行为,这允许将函数参数自动转换为函数支持的类型。

一些转换具有 显式 行为,这意味着必须使用语法 CAST(myval As sometype)myval::sometype 指定转换。显式转换避免了使用重载函数时可能出现的歧义转换问题,该函数不支持给定类型。例如,一个函数可以接受 box2d 或 box3d,但不能接受 geometry。由于 geometry 具有对两种框类型的自动转换,这会导致“歧义函数”错误。为了防止错误,请使用显式转换到所需的框类型。

所有数据类型都可以转换为 text,因此无需显式指定。

box2d — 表示二维边界框的类型。
box3d — 表示三维边界框的类型。
geometry — 表示具有平面坐标系的地理空间特征的类型。
geometry_dump — 用于描述复杂几何图形部分的复合类型。
geography — 表示具有大地(椭球)坐标系的地理空间特征的类型。

7.2. 表管理函数

摘要

这些函数有助于定义包含几何列的表。

AddGeometryColumn — 向现有表添加几何列。
DropGeometryColumn — 从空间表中删除几何列。
DropGeometryTable — 删除表及其在 geometry_columns 中的所有引用。
Find_SRID — 返回为几何列定义的 SRID。
Populate_Geometry_Columns — 确保几何列使用类型修饰符定义或具有适当的空间约束。
UpdateGeometrySRID — 更新几何列中所有要素的 SRID 以及表元数据。

7.3. 几何构造函数

ST_Collect — 从一组几何图形创建 GeometryCollection 或 Multi* 几何图形。
ST_LineFromMultiPoint — 从 MultiPoint 几何图形创建 LineString。
ST_MakeEnvelope — 从最小和最大坐标创建矩形 Polygon。
ST_MakeLine — 从 Point、MultiPoint 或 LineString 几何图形创建 LineString。
ST_MakePoint — 创建二维、三维 Z 或四维点。
ST_MakePointM — 从 X、Y 和 M 值创建点。
ST_MakePolygon — 从外环和可选的孔列表创建 Polygon。
ST_Point — 创建具有 X、Y 和 SRID 值的点。
ST_PointZ — 创建具有 X、Y、Z 和 SRID 值的点。
ST_PointM — 创建具有 X、Y、M 和 SRID 值的点。
ST_PointZM — 创建一个具有 X、Y、Z、M 和 SRID 值的点。
ST_Polygon — 从具有指定 SRID 的 LineString 创建一个多边形。
ST_TileEnvelope — 使用 XYZ 瓦片系统在 Web 墨卡托 (SRID:3857) 中创建一个矩形多边形。
ST_HexagonGrid — 返回一组完全覆盖几何体参数边界的六边形和单元格索引。
ST_Hexagon — 返回单个六边形,使用提供的边长和六边形网格空间内的单元格坐标。
ST_SquareGrid — 返回一组完全覆盖几何体参数边界的网格正方形和单元格索引。
ST_Square — 返回单个正方形,使用提供的边长和正方形网格空间内的单元格坐标。
ST_Letters — 返回输入字母作为几何体渲染,默认起始位置为原点,默认文本高度为 100。

7.4. 几何体访问器

GeometryType — 以文本形式返回几何体的类型。
ST_Boundary — 返回几何体的边界。
ST_BoundingDiagonal — 返回几何体边界框的对角线。
ST_CoordDim — 返回几何体的坐标维数。
ST_Dimension — 返回几何体的拓扑维数。
ST_Dump — 返回几何体组件的 geometry_dump 行集。
ST_DumpPoints — 返回几何图形中坐标的 geometry_dump 行集。
ST_DumpSegments — 返回几何图形中线段的 geometry_dump 行集。
ST_DumpRings — 返回多边形的外环和内环的 geometry_dump 行集。
ST_EndPoint — 返回 LineString 或 CircularLineString 的最后一个点。
ST_Envelope — 返回表示几何图形边界框的几何图形。
ST_ExteriorRing — 返回表示多边形外环的 LineString。
ST_GeometryN — 返回几何图形集合中的一个元素。
ST_GeometryType — 以文本形式返回几何图形的 SQL-MM 类型。
ST_HasArc — 测试几何图形是否包含圆弧。
ST_InteriorRingN — 返回多边形的第 N 个内环(孔)。
ST_IsClosed — 测试 LineStrings 的起点和终点是否重合。对于多面体曲面,测试它是否闭合(体积)。
ST_IsCollection — 测试几何图形是否为几何图形集合类型。
ST_IsEmpty — 测试几何图形是否为空。
ST_IsPolygonCCW — 测试多边形的外环是否为逆时针方向,内环是否为顺时针方向。
ST_IsPolygonCW — 测试多边形的外环是否为顺时针方向,内环是否为逆时针方向。
ST_IsRing — 测试 LineString 是否闭合且简单。
ST_IsSimple — 测试几何图形是否没有自相交点或自切点。
ST_M — 返回点的 M 坐标。
ST_MemSize — 返回几何图形占用的内存空间大小。
ST_NDims — 返回几何图形的坐标维度。
ST_NPoints — 返回几何图形中的点数(顶点)。
ST_NRings — 返回多边形几何图形中的环数。
ST_NumGeometries — 返回几何图形集合中的元素数量。
ST_NumInteriorRings — 返回多边形中的内环(孔)数量。
ST_NumInteriorRing — 返回多边形中的内环(孔)数量。ST_NumInteriorRings 的别名。
ST_NumPatches — 返回多面体表面上的面数。对于非多面体几何图形将返回 null。
ST_NumPoints — 返回 LineString 或 CircularString 中的点数。
ST_PatchN — 返回多面体表面的第 N 个几何图形(面)。
ST_PointN — 返回几何图形中第一个 LineString 或圆形 LineString 中的第 N 个点。
ST_Points — 返回包含几何图形坐标的多点。
ST_StartPoint — 返回 LineString 的第一个点。
ST_Summary — 返回几何图形内容的文本摘要。
ST_X — 返回点的 X 坐标。
ST_Y — 返回点的 Y 坐标。
ST_Z — 返回点的 Z 坐标。
ST_Zmflag — 返回一个代码,指示几何体的 ZM 坐标维度。

7.5. 几何编辑器

摘要

这些函数通过更改类型、结构或顶点来创建修改后的几何体。

ST_AddPoint — 向 LineString 添加一个点。
ST_CollectionExtract — 给定一个几何体集合,返回一个仅包含指定类型元素的多几何体。
ST_CollectionHomogenize — 返回几何体集合的最简单表示形式。
ST_CurveToLine — 将包含曲线的几何体转换为线性几何体。
ST_Scroll — 更改封闭 LineString 的起点。
ST_FlipCoordinates — 返回一个几何体的版本,其中 X 和 Y 轴翻转。
ST_Force2D — 强制几何体进入“二维模式”。
ST_Force3D — 强制几何体进入 XYZ 模式。这是 ST_Force3DZ 的别名。
ST_Force3DZ — 强制几何体进入 XYZ 模式。
ST_Force3DM — 强制几何体进入 XYM 模式。
ST_Force4D — 强制几何体进入 XYZM 模式。
ST_ForcePolygonCCW — 将所有外环定向为逆时针,所有内环定向为顺时针。
ST_ForceCollection — 将几何体转换为 GEOMETRYCOLLECTION。
ST_ForcePolygonCW — 将所有外环方向设置为顺时针,所有内环方向设置为逆时针。
ST_ForceSFS — 强制几何体仅使用 SFS 1.1 几何类型。
ST_ForceRHR — 强制多边形顶点方向遵循右手法则。
ST_ForceCurve — 将几何体向上转换为其曲线类型(如果适用)。
ST_LineToCurve — 将线性几何体转换为曲线几何体。
ST_Multi — 将几何体作为 MULTI* 几何体返回。
ST_LineExtend — 返回一条线,其最后一段和第一段分别延长了指定的距离。
ST_Normalize — 以规范形式返回几何体。
ST_Project — 返回从起点以距离和方位角(方位)投影的点。
ST_QuantizeCoordinates — 将坐标的最低有效位设置为零
ST_RemovePoint — 从线串中删除一个点。
ST_RemoveRepeatedPoints — 返回一个几何体版本,其中已删除重复点。
ST_Reverse — 返回顶点顺序反转的几何体。
ST_Segmentize — 返回一个修改后的几何体/地理体,其所有线段长度均不超过给定距离。
ST_SetPoint — 用给定点替换线串中的点。
ST_ShiftLongitude — 将几何体的经度坐标在 -180..180 和 0..360 之间进行转换。
ST_WrapX — 将几何体绕 X 值进行环绕。
ST_SnapToGrid — 将输入几何体的所有点捕捉到规则网格上。
ST_Snap — 将输入几何体的线段和顶点捕捉到参考几何体的顶点上。
ST_SwapOrdinates — 返回给定几何体的版本,其中给定的坐标值已交换。

7.6. 几何体验证

摘要

这些函数测试几何体是否根据 OGC SFS 标准有效。它们还提供有关无效性的性质和位置的信息。还有一个函数可以从无效几何体中创建有效几何体。

ST_IsValid — 测试几何体在 2D 中是否格式良好。
ST_IsValidDetail — 返回一个 valid_detail 行,说明几何图形是否有效,如果无效,则说明原因和位置。
ST_IsValidReason — 返回文本,说明几何图形是否有效,或无效的原因。
ST_MakeValid — 尝试使无效的几何图形有效,而不会丢失顶点。

7.7. 空间参考系统函数

摘要

这些函数使用 spatial_ref_sys 表中定义的几何图形的空间参考系统。

ST_InverseTransformPipeline — 返回一个新的几何图形,其坐标使用定义的坐标转换管道的逆向转换到不同的空间参考系统。
ST_SetSRID — 在几何图形上设置 SRID。
ST_SRID — 返回几何图形的空间参考标识符。
ST_Transform — 返回一个新的几何图形,其坐标转换到不同的空间参考系统。
ST_TransformPipeline — 返回一个新的几何图形,其坐标使用定义的坐标转换管道转换到不同的空间参考系统。
postgis_srs_codes — 返回与给定机构关联的 SRS 代码列表。
postgis_srs — 返回请求的机构和 srid 的元数据记录。
postgis_srs_all — 返回基础 Proj 数据库中每个空间参考系统的元数据记录。
postgis_srs_search — 返回投影坐标系统的元数据记录,这些坐标系统的使用区域完全包含边界参数。

7.8. 几何图形输入

摘要

这些函数从各种文本或二进制格式创建几何图形对象。

7.8.1. Well-Known Text (WKT)

ST_BdPolyFromText — 给定任意闭合线字符串集合作为 MultiLineString Well-Known 文本表示,构造一个多边形。
ST_BdMPolyFromText — 给定任意闭合线字符串集合作为 MultiLineString 文本表示 Well-Known 文本表示,构造一个多边形。
ST_GeogFromText — 从 Well-Known Text 表示或扩展 (WKT) 返回指定的地理值。
ST_GeographyFromText — 从 Well-Known Text 表示或扩展 (WKT) 返回指定的地理值。
ST_GeomCollFromText — 使用给定的 SRID 从集合 WKT 创建一个集合几何图形。如果未提供 SRID,则默认为 0。
ST_GeomFromEWKT — 从扩展的 Well-Known Text 表示 (EWKT) 返回指定的 ST_Geometry 值。
ST_GeomFromMARC21 — 以 MARC21/XML 地理数据作为输入,并返回一个 PostGIS 几何对象。
ST_GeometryFromText — 从 Well-Known Text 表示 (WKT) 返回指定的 ST_Geometry 值。这是 ST_GeomFromText 的别名。
ST_GeomFromText — 从 Well-Known Text 表示 (WKT) 返回指定的 ST_Geometry 值。
ST_LineFromText — 使用给定的 SRID 从 WKT 表示创建几何图形。如果未提供 SRID,则默认为 0。
ST_MLineFromText — 从 WKT 表示返回指定的 ST_MultiLineString 值。
ST_MPointFromText — 使用给定的 SRID 从 WKT 创建几何图形。如果未提供 SRID,则默认为 0。
ST_MPolyFromText — 使用给定的 SRID 从 WKT 创建一个多边形几何图形。如果未提供 SRID,则默认为 0。
ST_PointFromText — 使用给定的 SRID 从 WKT 创建一个点几何图形。如果未提供 SRID,则默认为未知。
ST_PolygonFromText — 使用给定的 SRID 从 WKT 创建几何图形。如果未提供 SRID,则默认为 0。
ST_WKTToSQL — 从 Well-Known Text 表示 (WKT) 返回指定的 ST_Geometry 值。这是 ST_GeomFromText 的别名。

7.8.2. Well-Known Binary (WKB)

ST_GeogFromWKB — 从 Well-Known Binary 几何图形表示 (WKB) 或扩展的 Well Known Binary (EWKB) 创建一个地理实例。
ST_GeomFromEWKB — 从扩展的 Well-Known Binary 表示 (EWKB) 返回指定的 ST_Geometry 值。
ST_GeomFromWKB — 从 Well-Known Binary 几何表示 (WKB) 和可选 SRID 创建一个几何实例。
ST_LineFromWKB — 使用给定的 SRID 从 WKB 创建一个 LINESTRING
ST_LinestringFromWKB — 使用给定的 SRID 从 WKB 创建一个几何。
ST_PointFromWKB — 使用给定的 SRID 从 WKB 创建一个几何。
ST_WKBToSQL — 从 Well-Known Binary 表示 (WKB) 返回指定的 ST_Geometry 值。这是 ST_GeomFromWKB 的别名,不接受 srid。

7.8.3. 其他格式

ST_Box2dFromGeoHash — 从 GeoHash 字符串返回一个 BOX2D。
ST_GeomFromGeoHash — 从 GeoHash 字符串返回一个几何。
ST_GeomFromGML — 以 GML 几何表示作为输入,输出一个 PostGIS 几何对象。
ST_GeomFromGeoJSON — 以 geojson 几何表示作为输入,输出一个 PostGIS 几何对象。
ST_GeomFromKML — 以 KML 几何表示作为输入,输出一个 PostGIS 几何对象。
ST_GeomFromTWKB — 从 TWKB ("Tiny Well-Known Binary") 几何表示创建一个几何实例。
ST_GMLToSQL — 从 GML 表示返回指定的 ST_Geometry 值。这是 ST_GeomFromGML 的别名。
ST_LineFromEncodedPolyline — 从编码的多段线创建一个 LineString。
ST_PointFromGeoHash — 从 GeoHash 字符串返回一个点。
ST_FromFlatGeobufToTable — 基于 FlatGeobuf 数据结构创建表。
ST_FromFlatGeobuf — 读取 FlatGeobuf 数据。

7.9. 几何输出

摘要

这些函数将几何对象转换为各种文本或二进制格式。

7.9.1. Well-Known Text (WKT)

ST_AsEWKT — 返回带有 SRID 元数据的几何图形的 Well-Known Text (WKT) 表示。
ST_AsText — 返回几何图形/地理图形的 Well-Known Text (WKT) 表示,不包含 SRID 元数据。

7.9.2. Well-Known Binary (WKB)

ST_AsBinary — 返回几何图形/地理图形的 OGC/ISO Well-Known Binary (WKB) 表示,不包含 SRID 元数据。
ST_AsEWKB — 返回带有 SRID 元数据的几何图形的扩展 Well-Known Binary (EWKB) 表示。
ST_AsHEXEWKB — 返回使用小端序 (NDR) 或大端序 (XDR) 编码的 HEXEWKB 格式的几何图形(作为文本)。

7.9.3. 其他格式

ST_AsEncodedPolyline — 从 LineString 几何图形返回编码的多段线。
ST_AsFlatGeobuf — 返回一组行的 FlatGeobuf 表示。
ST_AsGeobuf — 返回一组行的 Geobuf 表示。
ST_AsGeoJSON — 返回几何图形作为 GeoJSON 元素。
ST_AsGML — 返回几何图形作为 GML 版本 2 或 3 元素。
ST_AsKML — 返回几何图形作为 KML 元素。
ST_AsLatLonText — 返回给定点的度、分、秒表示。
ST_AsMARC21 — 返回带有地理数据字段 (034) 的 MARC21/XML 记录的几何图形。
ST_AsMVTGeom — 将几何图形转换为 MVT 瓦片的坐标空间。
ST_AsMVT — 聚合函数,返回一组行的 MVT 表示。
ST_AsSVG — 返回几何图形的 SVG 路径数据。
ST_AsTWKB — 返回几何图形作为 TWKB,也称为“Tiny Well-Known Binary”。
ST_AsX3D — 返回 X3D xml 节点元素格式的几何图形:ISO-IEC-19776-1.2-X3DEncodings-XML。
ST_GeoHash — 返回几何图形的 GeoHash 表示。

7.10. 运算符

7.10.1. 边界框运算符

&& — 如果 A 的 2D 边界框与 B 的 2D 边界框相交,则返回 TRUE
&&(geometry,box2df) — 如果几何图形的(缓存)2D 边界框与 2D 浮点精度边界框(BOX2DF)相交,则返回 TRUE
&&(box2df,geometry) — 如果 2D 浮点精度边界框(BOX2DF)与几何图形的(缓存)2D 边界框相交,则返回 TRUE
&&(box2df,box2df) — 如果两个 2D 浮点精度边界框(BOX2DF)相互相交,则返回 TRUE
&&& — 如果 A 的 n 维边界框与 B 的 n 维边界框相交,则返回 TRUE
&&&(geometry,gidx) — 如果几何图形的(缓存)n 维边界框与 n 维浮点精度边界框(GIDX)相交,则返回 TRUE
&&&(gidx,geometry) — 如果 n 维浮点精度边界框(GIDX)与几何图形的(缓存)n 维边界框相交,则返回 TRUE
&&&(gidx,gidx) — 如果两个 n 维浮点精度边界框(GIDX)相互相交,则返回 TRUE
&< — 如果 A 的边界框与 B 的边界框重叠或位于 B 的左侧,则返回 TRUE
&<| — 如果 A 的边界框与 B 的边界框重叠或位于 B 的下方,则返回 TRUE
&> — 如果 A 的边界框与 B 的边界框重叠或位于 B 的右侧,则返回 TRUE
<< — 如果 A 的边界框严格位于 B 的左侧,则返回 TRUE
<<| — 如果 A 的边界框严格位于 B 的下方,则返回 TRUE
= — 如果几何/地理 A 的坐标和坐标顺序与几何/地理 B 的坐标和坐标顺序相同,则返回 TRUE
>> — 如果 A 的边界框严格位于 B 的右侧,则返回 TRUE
@ — 如果 A 的边界框被 B 的边界框包含,则返回 TRUE
@(geometry,box2df) — 如果几何的二维边界框包含在二维浮点精度边界框 (BOX2DF) 中,则返回 TRUE
@(box2df,geometry) — 如果二维浮点精度边界框 (BOX2DF) 包含在几何的二维边界框中,则返回 TRUE
@(box2df,box2df) — 如果二维浮点精度边界框 (BOX2DF) 包含在另一个二维浮点精度边界框中,则返回 TRUE
|&> — 如果 A 的边界框与 B 的边界框重叠或位于 B 的上方,则返回 TRUE
|>> — 如果 A 的边界框严格位于 B 的上方,则返回 TRUE
~ — 如果 A 的边界框包含 B 的边界框,则返回 TRUE
~(geometry,box2df) — 如果几何的二维边界框包含二维浮点精度边界框 (GIDX),则返回 TRUE
~(box2df,geometry) — 如果二维浮点精度边界框 (BOX2DF) 包含几何的二维边界框,则返回 TRUE
~(box2df,box2df) — 如果二维浮点精度边界框 (BOX2DF) 包含另一个二维浮点精度边界框 (BOX2DF),则返回 TRUE
~= — 如果 A 的边界框与 B 的边界框相同,则返回 TRUE

7.10.2. 距离运算符

<-> — 返回 A 和 B 之间的二维距离。
|=| — 返回 A 和 B 轨迹在最近点处的距离。
<#> — 返回 A 和 B 边界框之间的二维距离。
<<->> — 返回 A 和 B 边界框的质心之间的 n 维距离。
<<#>> — 返回 A 和 B 边界框之间的 n 维距离。

7.11. 空间关系

摘要

这些函数确定几何之间的空间关系。

7.11.1. 拓扑关系

ST_3DIntersects — 测试两个几何体在 3D 中是否空间相交 - 仅适用于点、线串、多边形、多面体表面(面积)
ST_Contains — 测试 B 的每个点是否都在 A 中,以及它们的内部是否有公共点
ST_ContainsProperly — 测试 B 的每个点是否都在 A 的内部
ST_CoveredBy — 测试 A 的每个点是否都在 B 中
ST_Covers — 测试 B 的每个点是否都在 A 中
ST_Crosses — 测试两个几何图形是否有一些但不是全部的内部点重合
ST_Disjoint — 测试两个几何图形是否没有任何公共点
ST_Equals — 测试两个几何图形是否包含相同的点集
ST_Intersects — 测试两个几何图形是否相交(它们至少有一个公共点)
ST_LineCrossingDirection — 返回一个数字,指示两条 LineString 的交叉行为
ST_OrderingEquals — 测试两个几何图形是否表示相同的几何图形,并且点具有相同的定向顺序
ST_Overlaps — 测试两个几何图形是否具有相同的维数并相交,但每个几何图形至少有一个点不在另一个几何图形中
ST_Relate — 测试两个几何图形是否具有与交集矩阵模式匹配的拓扑关系,或计算它们的交集矩阵
ST_RelateMatch — 测试 DE-9IM 交集矩阵是否与交集矩阵模式匹配
ST_Touches — 测试两个几何图形是否至少有一个公共点,但它们的内部不相交
ST_Within — 测试 A 的每个点是否都在 B 中,并且它们的内部有一个公共点

7.11.2. 距离关系

ST_3DDWithin — 测试两个 3D 几何图形是否在给定的 3D 距离内
ST_3DDFullyWithin — 测试两个 3D 几何图形是否完全在给定的 3D 距离内
ST_DFullyWithin — 测试两个几何图形是否完全在给定的距离内
ST_DWithin — 测试两个几何图形是否在给定的距离内
ST_PointInsideCircle — 判断一个点几何图形是否在由中心点和半径定义的圆形内

7.12. 测量函数

摘要

这些函数计算距离、面积和角度的测量值。还有一些函数可以计算由测量值确定的几何值。

ST_Area — 返回多边形几何图形的面积。
ST_Azimuth — 返回两点之间线的北基方位角。
ST_Angle — 返回由 3 或 4 个点或 2 条线定义的两个向量之间的角度。
ST_ClosestPoint — 返回 g1 上距离 g2 最近的二维点。这是从一个几何图形到另一个几何图形的最短线的第一个点。
ST_3DClosestPoint — 返回 g1 上距离 g2 最近的三维点。这是三维最短线的第一个点。
ST_Distance — 返回两个几何图形或地理图形值之间的距离。
ST_3DDistance — 返回两个几何图形在投影单位中基于空间参考的三维笛卡尔最小距离。
ST_DistanceSphere — 使用球形地球模型返回两个经纬度几何图形之间的最小距离(以米为单位)。
ST_DistanceSpheroid — 使用球体地球模型返回两个经纬度几何图形之间的最小距离。
ST_FrechetDistance — 返回两个几何图形之间的弗雷歇距离。
ST_HausdorffDistance — 返回两个几何图形之间的豪斯多夫距离。
ST_Length — 返回线性几何图形的二维长度。
ST_Length2D — 返回线性几何图形的二维长度。是 ST_Length 的别名
ST_3DLength — 返回线性几何图形的三维长度。
ST_LengthSpheroid — 返回球体上经纬度几何图形的二维或三维长度/周长。
ST_LongestLine — 返回两个几何图形之间的二维最长线。
ST_3DLongestLine — 返回两个几何图形之间的三维最长线。
ST_MaxDistance — 返回两个几何图形在投影单位中二维最大距离。
ST_3DMaxDistance — 返回两个几何图形在投影单位中基于空间参考的三维笛卡尔最大距离。
ST_MinimumClearance — 返回几何图形的最小间隙,这是衡量几何图形鲁棒性的指标。
ST_MinimumClearanceLine — 返回跨越几何图形最小间隙的双点线字符串。
ST_Perimeter — 返回多边形几何图形或地理图形边界的长度。
ST_Perimeter2D — 返回多边形几何图形的二维周长。它是 ST_Perimeter 的别名。
ST_3DPerimeter — 返回多边形几何图形的三维周长。
ST_ShortestLine — 返回两个几何图形之间的二维最短线。
ST_3DShortestLine — 返回两个几何图形之间的三维最短线。

7.13. 叠加函数

摘要

这些函数计算两个几何图形叠加产生的结果。这些也被称为点集理论布尔运算。还提供了一些相关函数。

ST_ClipByBox2D — 计算落在矩形内的几何图形部分。
ST_Difference — 计算表示几何图形 A 不与几何图形 B 相交的部分的几何图形。
ST_Intersection — 计算表示几何图形 A 和 B 共享部分的几何图形。
ST_MemUnion — 以内存高效但速度较慢的方式对几何图形进行聚合函数
ST_Node — 对线集合进行节点化。
ST_Split — 返回通过另一个几何图形分割几何图形而创建的几何图形集合。
ST_Subdivide — 计算几何图形的直线分割。
ST_SymDifference — 计算表示几何图形 A 和 B 不相交部分的几何图形。
ST_UnaryUnion — 计算单个几何图形的组成部分的并集。
ST_Union — 计算表示输入几何图形的点集并集的几何图形。

7.14. 几何处理

摘要

这些函数计算几何构造,或改变几何尺寸或形状。

ST_Buffer — 计算覆盖几何图形给定距离内所有点的几何图形。
ST_BuildArea — 创建由几何图形的线状结构形成的多边形几何图形。
ST_Centroid — 返回几何图形的几何中心。
ST_ChaikinSmoothing — 使用 Chaikin 算法返回几何图形的平滑版本。
ST_ConcaveHull — 计算包含所有输入几何图形顶点的可能凹陷的几何图形。
ST_ConvexHull — 计算几何图形的凸包。
ST_DelaunayTriangles — 返回几何图形顶点的 Delaunay 三角剖分。
ST_FilterByM — 根据顶点的 M 值删除顶点。
ST_GeneratePoints — 生成包含在多边形或多边形中的随机点。
ST_GeometricMedian — 返回多点几何图形的几何中位数。
ST_LineMerge — 将 MultiLineString 缝合在一起形成的线。
ST_MaximumInscribedCircle — 计算几何图形内最大的圆。
ST_LargestEmptyCircle — 计算不与几何图形重叠的最大圆。
ST_MinimumBoundingCircle — 返回包含几何图形的最小圆形多边形。
ST_MinimumBoundingRadius — 返回包含几何图形的最小圆的中心点和半径。
ST_OrientedEnvelope — 返回包含几何图形的最小面积矩形。
ST_OffsetCurve — 返回给定距离和侧边从输入线偏移的线。
ST_PointOnSurface — 计算保证位于多边形内或几何图形上的点。
ST_Polygonize — 从一组几何图形的线段计算出一组多边形。
ST_ReducePrecision — 返回一个有效的几何图形,其点被四舍五入到网格容差。
ST_SharedPaths — 返回包含两个输入线字符串/多线字符串共享的路径的集合。
ST_Simplify — 使用 Douglas-Peucker 算法返回几何图形的简化版本。
ST_SimplifyPreserveTopology — 使用 Douglas-Peucker 算法返回几何图形的简化且有效的版本。
ST_SimplifyPolygonHull — 计算多边形几何图形的简化拓扑保持外壳或内壳。
ST_SimplifyVW — 使用 Visvalingam-Whyatt 算法返回几何图形的简化版本。
ST_SetEffectiveArea — 使用 Visvalingam-Whyatt 算法为每个顶点设置有效面积。
ST_TriangulatePolygon — 计算多边形的约束 Delaunay 三角剖分。
ST_VoronoiLines — 返回几何图形顶点 Voronoi 图的边界。
ST_VoronoiPolygons — 返回几何图形顶点 Voronoi 图的单元格。

7.15. 覆盖范围

摘要

这些函数操作形成“隐式覆盖范围”的多边形几何集合。为了形成有效的覆盖范围,多边形不得重叠,并且相邻边的顶点必须完全匹配。覆盖范围处理速度快,并且可以使用窗口函数进行操作,这些函数在改变边时保留窗口分区内的覆盖范围拓扑。

ST_CoverageInvalidEdges — 窗口函数,用于查找多边形无法形成有效覆盖范围的位置。
ST_CoverageSimplify — 窗口函数,用于简化多边形覆盖范围的边。
ST_CoverageUnion — 通过移除共享边来计算形成覆盖范围的多边形集合的并集。

7.16. 仿射变换

摘要

这些函数使用仿射变换改变几何图形的位置和形状。

ST_Affine — 将 3D 仿射变换应用于几何图形。
ST_Rotate — 围绕原点旋转几何图形。
ST_RotateX — 围绕 X 轴旋转几何图形。
ST_RotateY — 围绕 Y 轴旋转几何图形。
ST_RotateZ — 围绕 Z 轴旋转几何图形。
ST_Scale — 按给定因子缩放几何图形。
ST_Translate — 按给定偏移量平移几何图形。
ST_TransScale — 按给定偏移量和平移因子平移和缩放几何图形。

7.17. 聚类函数

摘要

这些函数为几何图形集实现聚类算法。

ST_ClusterDBSCAN — 窗口函数,使用 DBSCAN 算法为每个输入几何图形返回一个聚类 ID。
ST_ClusterIntersecting — 聚合函数,将输入几何图形聚集成连接集。
ST_ClusterIntersectingWin — 窗口函数,为每个输入几何图形返回一个聚类 ID,将输入几何图形聚集成连接集。
ST_ClusterKMeans — 窗口函数,使用 K 均值算法为每个输入几何图形返回一个聚类 ID。
ST_ClusterWithin — 聚合函数,根据分离距离对几何图形进行聚类。
ST_ClusterWithinWin — 窗口函数,为每个输入几何图形返回一个聚类 ID,使用分离距离进行聚类。

7.18. 边界框函数

摘要

这些函数生成或操作边界框。它们还可以通过使用自动或显式转换来提供和接受几何值。

另请参见 第 12.7 节,“PostGIS Box 函数”

Box2D — 返回表示几何图形的 2D 范围的 BOX2D。
Box3D — 返回表示几何图形的 3D 范围的 BOX3D。
ST_EstimatedExtent — 返回空间表的估计范围。
ST_Expand — 返回从另一个边界框或几何图形扩展的边界框。
ST_Extent — 聚合函数,返回几何图形的边界框。
ST_3DExtent — 聚合函数,返回几何图形的 3D 边界框。
ST_MakeBox2D — 创建由两个 2D 点几何图形定义的 BOX2D。
ST_3DMakeBox — 使用两个 3D 点几何体创建 BOX3D。
ST_XMax — 返回 2D 或 3D 边界框或几何体的 X 最大值。
ST_XMin — 返回 2D 或 3D 边界框或几何体的 X 最小值。
ST_YMax — 返回 2D 或 3D 边界框或几何体的 Y 最大值。
ST_YMin — 返回 2D 或 3D 边界框或几何体的 Y 最小值。
ST_ZMax — 返回 2D 或 3D 边界框或几何体的 Z 最大值。
ST_ZMin — 返回 2D 或 3D 边界框或几何体的 Z 最小值。

7.19. 线性参照

ST_LineInterpolatePoint — 返回沿线以分数位置插值的点。
ST_3DLineInterpolatePoint — 返回沿 3D 线以分数位置插值的点。
ST_LineInterpolatePoints — 返回沿线以分数间隔插值的点。
ST_LineLocatePoint — 返回线上最靠近点的分数位置。
ST_LineSubstring — 返回线在两个分数位置之间的部分。
ST_LocateAlong — 返回与度量值匹配的几何体上的点。
ST_LocateBetween — 返回与度量范围匹配的几何体部分。
ST_LocateBetweenElevations — 返回几何图形中位于高程(Z)范围内的部分。
ST_InterpolatePoint — 返回几何图形中与点最接近的插值测量值。
ST_AddMeasure — 在线性几何图形上插值测量值。

7.20. 轨迹函数

摘要

这些函数支持处理轨迹。轨迹是线性几何图形,每个坐标上都有递增的测量值(M 值)。时空数据可以通过使用相对时间(例如纪元)作为测量值来建模。

ST_IsValidTrajectory — 测试几何图形是否为有效的轨迹。
ST_ClosestPointOfApproach — 返回两个轨迹最近点处的测量值。
ST_DistanceCPA — 返回两个轨迹最近点之间的距离。
ST_CPAWithin — 测试两个轨迹的最近点是否在指定的距离内。

7.21. SFCGAL 函数

摘要

SFCGAL 是一个围绕 CGAL 的 C++ 包装库,它提供高级的 2D 和 3D 空间函数。为了稳健性,几何坐标具有精确的有理数表示。

库的安装说明可以在 SFCGAL 主页上找到 (http://www.sfcgal.org)。要启用这些函数,请使用 create extension postgis_sfcgal

postgis_sfcgal_version — 返回正在使用的 SFCGAL 版本
postgis_sfcgal_full_version — 返回正在使用的 SFCGAL 的完整版本,包括 CGAL 和 Boost 版本
ST_3DArea — 计算 3D 表面几何图形的面积。对于实体将返回 0。
ST_3DConvexHull — 计算几何图形的 3D 凸包。
ST_3DIntersection — 执行 3D 交叉
ST_3DDifference — 执行 3D 差集
ST_3DUnion — 执行 3D 并集。
ST_AlphaShape — 计算包围几何图形的 Alpha 形状
ST_ApproximateMedialAxis — 计算区域几何图形的近似中轴。
ST_ConstrainedDelaunayTriangles — 返回给定输入几何图形周围的约束 Delaunay 三角剖分。
ST_Extrude — 将曲面挤出到相关体积
ST_ForceLHR — 强制 LHR 方向
ST_IsPlanar — 检查曲面是否为平面
ST_IsSolid — 测试几何图形是否为实体。不执行有效性检查。
ST_MakeSolid — 将几何图形转换为实体。不执行检查。要获得有效的实体,输入几何图形必须是封闭的多面体曲面或封闭的 TIN。
ST_MinkowskiSum — 执行 Minkowski 和
ST_OptimalAlphaShape — 使用“最佳” alpha 值计算包围几何图形的 Alpha 形状。
ST_Orientation — 确定曲面方向
ST_StraightSkeleton — 从几何图形计算直骨架
ST_Tesselate — 执行多边形或多面体曲面的曲面细分,并作为 TIN 或 TIN 集合返回
ST_Volume — 计算 3D 实体的体积。如果应用于曲面(即使是封闭的)几何图形,将返回 0。

7.22. 长事务支持

摘要

这些函数实现了一种行锁定机制来支持长事务。它们主要提供给 Web 特征服务 规范的实现者。

AddAuth — 添加要在当前事务中使用的授权令牌。
CheckAuth — 基于授权令牌创建表触发器,以阻止/允许更新和删除行。
DisableLongTransactions — 禁用长事务支持。
EnableLongTransactions — 启用长事务支持。
LockRow — 设置表中行的锁定/授权。
UnlockRows — 删除授权令牌持有的所有锁。
[Note]

为了使锁定机制正常运行,必须使用可序列化 事务隔离级别

7.23. 版本函数

摘要

这些函数报告和升级 PostGIS 版本。

PostGIS_Extensions_Upgrade — 打包和升级 PostGIS 扩展(例如 postgis_raster、postgis_topology、postgis_sfcgal)到给定或最新版本。
PostGIS_Full_Version — 报告完整的 PostGIS 版本和构建配置信息。
PostGIS_GEOS_Version — 返回 GEOS 库的版本号。
PostGIS_GEOS_Compiled_Version — 返回 PostGIS 构建时使用的 GEOS 库的版本号。
PostGIS_Liblwgeom_Version — 返回 liblwgeom 库的版本号。这应该与 PostGIS 的版本匹配。
PostGIS_LibXML_Version — 返回 libxml2 库的版本号。
PostGIS_Lib_Build_Date — 返回 PostGIS 库的构建日期。
PostGIS_Lib_Version — 返回 PostGIS 库的版本号。
PostGIS_PROJ_Version — 返回 PROJ4 库的版本号。
PostGIS_Wagyu_Version — 返回内部 Wagyu 库的版本号。
PostGIS_Scripts_Build_Date — 返回 PostGIS 脚本的构建日期。
PostGIS_Scripts_Installed — 返回此数据库中安装的 PostGIS 脚本的版本。
PostGIS_Scripts_Released — 返回与安装的 PostGIS 库一起发布的 postgis.sql 脚本的版本号。
PostGIS_Version — 返回 PostGIS 版本号和编译时选项。

7.24. 全局统一自定义变量 (GUC)

摘要

本节列出了自定义 PostGIS 全局统一自定义变量 (GUC)。这些变量可以在全局、数据库、会话或事务级别设置。最好在全局或数据库级别设置。

postgis.backend — 为 GEOS 和 SFCGAL 重叠的功能提供服务的后台。选项:geos 或 sfcgal。默认为 geos。
postgis.gdal_datapath — 用于分配 GDAL 的 GDAL_DATA 选项值的配置选项。如果未设置,则使用环境设置的 GDAL_DATA 变量。
postgis.gdal_enabled_drivers — 用于在 PostGIS 环境中设置启用的 GDAL 驱动程序的配置选项。影响 GDAL 配置变量 GDAL_SKIP。
postgis.enable_outdb_rasters — 用于启用对数据库外光栅波段访问的布尔配置选项。
postgis.gdal_vsi_options — 用于设置处理数据库外光栅时使用的选项的字符串配置。

7.25. 故障排除函数

摘要

这些函数是用于故障排除和修复几何数据的工具。只有在几何数据以某种方式损坏时才需要它们,这种情况在正常情况下不应该发生。

PostGIS_AddBBox — 向几何添加边界框。
PostGIS_DropBBox — 从几何中删除边界框缓存。
PostGIS_HasBBox — 如果此几何的边界框已缓存,则返回 TRUE,否则返回 FALSE。