空间几何函数

最近更新时间:2023-11-22 09:33:53

我的收藏
本文将为您介绍空间几何函数。

基本概念

空间几何函数支持 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
返回多边形内部的环的个数。