空间几何函数
最近更新时间: 2026-03-13 09:03:00
本文将为您介绍空间几何函数。
基本概念
空间几何函数支持 Well-Known Text(WKT)及 Well-Known Binary(WKB)格式描述的几何实体,相关概念可参考 Well-known text representation of geometry - Wikipedia。
| 几何实体 |
Well-Known Text(WKT)格式 |
| 点 |
POINT (0 0) |
| 线段 |
LINESTRING (0 0, 1 1, 1 2) |
| 多边形 |
POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)) |
| 多点 |
MULTIPOINT (0 0, 1 2) |
| 多线段 |
MULTILINESTRING ((0 0, 1 1, 1 2), (2 3, 3 2, 5 4)) |
| 多个多边形 |
MULTIPOLYGON (((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((-1 -1, -1 -2, -2 -2, -2 -1, -1 -1))) |
| 几何实体集合 |
GEOMETRYCOLLECTION (POINT(2 3), LINESTRING (2 3, 3 4)) |
几何实体默认采用平面几何,在平面几何中两点之间的最短距离为直线。几何实体也支持球面几何,球面中两点之间的最短距离为大圆弧。使用 to_spherical_geography() 可将平面几何实体转换为球面几何实体。
例如:
ST_Distance(ST_Point(-71.0882, 42.3607), ST_Point(-74.1197, 40.6976)) 计算平面上的两个点的距离,值为3.4577。
ST_Distance(to_spherical_geography(ST_Point(-71.0882, 42.3607)), to_spherical_geography(ST_Point(-74.1197, 40.6976))) 计算球面上两个点的距离,值为312822.179。
计算长度时(例如:ST_Distance()和ST_Length() ),单位为米,计算面积时(例如:ST_Area()),单位为平方米。
构造几何实体
| 函数 |
返回值类型 |
说明 |
| ST_Point(double, double) |
Point |
构造一个点。 |
| ST_LineFromText(varchar) |
LineString |
从 WKT 格式的文本中构造一个线段。 |
| ST_Polygon(varchar) |
Polygon |
从 WKT 格式的文本中构造一个多边形。 |
| ST_GeometryFromText(varchar) |
Geometry |
从 WKT 文本中构造一个几何实体。 |
| ST_GeomFromBinary(varbinary) |
Geometry |
从 WKB 中构造一个几何实体。 |
| ST_AsText(Geometry) |
varchar |
把一个空间几何实体转变成 WKT 格式。 |
| to_spherical_geography(Geometry) |
SphericalGeography |
将平面几何实体转换为球面几何实体。 |
| to_geometry(SphericalGeography) |
Geometry |
将球面几何实体转换为平面几何实体。 |
空间关系判断
| 函数 |
返回值类型 |
说明 |
| ST_Contains(Geometry, Geometry) |
boolean |
当第二个实体的所有点都不在第一个实体外部,并且第一个实体至少有一个内部点在第二个实体内部时,返回 true。如果第二个实体正好在第一个实体的边上,返回 false。 |
| ST_Crosses(Geometry, Geometry) |
boolean |
当两个实体有共同内部点时,返回 true。 |
| ST_Disjoint(Geometry, Geometry) |
boolean |
当两个实体没有任何交集时,返回 true。 |
| ST_Equals(Geometry, Geometry) |
boolean |
当两个实体完全相同时,返回 true。 |
| ST_Intersects(Geometry, Geometry) |
boolean |
当两个实体在两个空间上共享时,返回 true。 |
| ST_Overlaps(Geometry, Geometry) |
boolean |
当两个实体维度相同,并且不是包含关系时,返回 true。 |
| ST_Relate(Geometry, Geometry) |
boolean |
当两个实体相关时,返回 true。 |
| ST_Touches(Geometry, Geometry) |
boolean |
当两个实体仅仅边界有联系,没有共同内部点时,返回 true。 |
| ST_Within(Geometry, Geometry) |
boolean |
当第一个实体完全在第二个实体内部时,返回 true。如果边界有交集,返回 false。 |
Operations
| 函数 |
返回值类型 |
说明 |
| geometry_nearest_points(Geometry, Geometry) |
row(Point, Point) |
返回两个几何实体之间最相近的两个点。 |
| geometry_union(array(Geometry)) |
Geometry |
将多个几何实体合并为一个几何实体。 |
| ST_Boundary(Geometry) |
Geometry |
返回几何实体的闭包。 |
| ST_Buffer(Geometry, distance) |
Geometry |
返回一个多边形,该多边形距离输入参数 Geometry 的距离是 distance。 |
| ST_Difference(Geometry, Geometry) |
Geometry |
返回两个空间实体的不同的点的集合。 |
| ST_Envelope(Geometry) |
Geometry |
返回空间实体的边界多边形。 |
| ST_ExteriorRing(Geometry) |
Geometry |
返回多边形的外部环。 |
| ST_Intersection(Geometry, Geometry) |
Geometry |
返回两个空间实体的交集点。 |
| ST_SymDifference(Geometry, Geometry) |
Geometry |
返回两个空间实体不同的点,组成的新的空间实体。获取两个几何对象不相交的部分。 |
Accessors
| 函数 |
返回值类型 |
说明 |
| ST_Area(Geometry) |
double |
在平面几何中计算多边形面积。 |
| ST_Area(SphericalGeography) |
double |
在球面几何中计算多边形面积。 |
| ST_Centroid(Geometry) |
Geometry |
返回几何实体的中心点。 |
| ST_CoordDim(Geometry) |
bigint |
返回几何实体的坐标维度。 |
| ST_Dimension(Geometry) |
bigint |
返回几何实体的固有维度,必须小于或等于坐标维度。 |
| ST_Distance(Geometry, Geometry) |
double |
计算平面几何中两个实体之间的最小距离。 |
| ST_Distance(SphericalGeography, SphericalGeography) |
double |
计算球面几何中两个实体之间的最小距离。 |
| ST_IsClosed(Geometry) |
boolean |
当实体是一个闭合空间时,返回 true。 |
| ST_IsEmpty(Geometry) |
boolean |
当参数是一个空的几何实体集合或者多边形或者点时,返回 true。 |
| ST_IsRing(Geometry) |
boolean |
当参数是一条线,并且是闭合的简单的线时,返回 true。 |
| ST_Length(Geometry) |
double |
在平面几何中,计算一个线段或者多条线段的长度。 |
| ST_Length(SphericalGeography) |
double |
在球面几何中,计算一个线段或者多条线段的长度。 |
| ST_XMax(Geometry) |
double |
返回几何体边框的 X 最大值。 |
| ST_YMax(Geometry) |
double |
返回几何体边框的 Y 最大值。 |
| ST_XMin(Geometry) |
double |
返回几何体边框的 X 最小值。 |
| ST_YMin(Geometry) |
double |
返回几何体边框的 Y 最小值。 |
| ST_StartPoint(Geometry) |
point |
返回线段类型几何体的第一个点。 |
| ST_EndPoint(Geometry) |
point |
返回线段类型几何体的最后一个点。 |
| ST_X(Point) |
double |
返回点类型的 X 轴。 |
| ST_Y(Point) |
double |
返回点类型的 Y 轴。 |
| ST_NumPoints(Geometry) |
bigint |
计算几何实体的点的个数。 |
| ST_NumInteriorRing(Geometry) |
bigint |
返回多边形内部的环的个数。 |