常用的PostGIS空间分析函数清单:
序号 | 函数名 | 描述 | 示例 |
---|---|---|---|
1 | ST_AsText(geometry) | 将几何对象转换为文本形式的WKT字符串 | ST_AsText(ST_GeomFromText(‘POINT(1 2)’)) 返回 ‘POINT(1 2)’ |
2 | ST_GeometryType(geometry) | 返回几何对象的类型,如POINT、LINESTRING、POLYGON等 | ST_GeometryType(ST_GeomFromText(‘LINESTRING(1 2, 3 4)’)) 返回 ‘LINESTRING’ |
3 | ST_SRID(geometry) | 返回几何对象的空间参考系ID | ST_SRID(ST_GeomFromText(‘POINT(1 2)’, 4326)) 返回 4326 |
4 | ST_SetSRID(geometry, srid) | 设置几何对象的空间参考系ID | ST_SetSRID(ST_GeomFromText(‘POINT(1 2)’), 4326) 返回 SRID 为 4326 的 POINT(1 2) |
5 | ST_Dimension(geometry) | 返回几何对象的维度,如0表示点、1表示线、2表示面 | ST_Dimension(ST_GeomFromText(‘POINT(1 2)’)) 返回 0 |
6 | ST_Envelope(geometry) | 返回几何对象的最小外接矩形(MBR) | ST_Envelope(ST_GeomFromText(‘LINESTRING(1 2, 3 4)’)) 返回 POLYGON((1 2, 1 4, 3 4, 3 2, 1 2)) |
7 | ST_Length(geometry) | 计算线或多线段的长度 | ST_Length(ST_GeomFromText(‘LINESTRING(1 2, 3 4)’)) 返回 2.828427 |
8 | ST_Area(geometry) | 计算面或多边形的面积 | ST_Area(ST_GeomFromText(‘POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))’)) 返回 1 |
9 | ST_Buffer(geometry, distance) | 计算几何对象的缓冲区,参数distance表示缓冲区的半径或者宽度 | ST_Buffer(ST_GeomFromText(‘POINT(1 2)’), 0.5) 返回以 POINT(1 2) 为中心,半径为0.5的圆 |
10 | ST_Intersection(geometry A, geometry B) | 计算两个几何对象的交集 | ST_Intersection(ST_GeomFromText(‘LINESTRING(0 0, 2 2)’), ST_GeomFromText(‘LINESTRING(1 0, 0 1)’)) 返回 POINT(0.5 0.5) |
11 | ST_Union(geometry A, geometry B) | 计算两个几何对象的并集 | ST_Union(ST_GeomFromText(‘LINESTRING(0 0, 1 1)’), ST_GeomFromText(‘LINESTRING(1 1, 2 2)’)) 返回 MULTILINESTRING((0 0, 1 1, 2 2)) |
12 | ST_Difference(geometry A, geometry B) | 计算两个几何对象的差集 | ST_Difference(ST_GeomFromText(‘LINESTRING(0 0, 2 2)’), ST_GeomFromText(‘LINESTRING(1 0, 0 1)’)) 返回 MULTILINESTRING((0 0, 1 1)) |
13 | ST_SymDifference(geometry A, geometry B) | 计算两个几何对象的对称差集 | ST_SymDifference(ST_GeomFromText(‘LINESTRING(0 0, 2 2)’), ST_GeomFromText(‘LINESTRING(1 0, 0 1)’)) 返回 MULTILINESTRING((0 0, 1 1), (1 1, 2 2)) |
14 | ST_Equals(geometry A, geometry B) | 判断两个几何对象是否相等 | ST_Equals(ST_GeomFromText(‘POINT(1 2)’), ST_GeomFromText(‘POINT(1 2)’)) 返回 true |
15 | ST_Disjoint(geometry A, geometry B) | 判断两个几何对象是否不相交 | ST_Disjoint(ST_GeomFromText(‘POINT(1 2)’), ST_GeomFromText(‘LINESTRING(0 0, 2 2)’)) 返回 true |
16 | ST_Touches(geometry A, geometry B) | 判断两个几何对象是否相接触 | ST_Touches(ST_GeomFromText(‘LINESTRING(0 0, 1 1)’), ST_GeomFromText(‘LINESTRING(1 1, 2 2)’)) 返回 true |
17 | ST_Crosses(geometry A, geometry B) | 判断两个几何对象是否相交但不在同一平面内 | ST_Crosses(ST_GeomFromText(‘LINESTRING(0 0, 1 1)’), ST_GeomFromText(‘LINESTRING(1 0, 0 1)’)) 返回 true |
18 | ST_Within(geometry A, geometry B) | 判断几何对象A是否在几何对象B内部 | ST_Within(ST_GeomFromText(‘POINT(1 2)’), ST_GeomFromText(‘POLYGON((0 0, 0 3, 3 3, 3 0, 0 0))’)) 返回 true |
19 | ST_Contains(geometry A, geometry B) | 判断几何对象A是否包含几何对象B | ST_Contains(ST_GeomFromText(‘POLYGON((0 0, 0 3, 3 3, 3 0, 0 0))’), ST_GeomFromText(‘POINT(1 2)’)) 返回 true |
20 | ST_Intersects(geometry A, geometry B) | 判断两个几何对象是否相交 | ST_Intersects(ST_GeomFromText(‘POINT(1 2)’), ST_GeomFromText(‘LINESTRING(0 0, 2 2)’)) 返回 true |
21 | ST_Centroid(geometry) | 计算几何对象的中心点 | ST_Centroid(ST_GeomFromText(‘POLYGON((0 0, 0 3, 3 3, 3 0, 0 0))’)) 返回 POINT(1.5 1.5) |
22 | ST_PointOnSurface(geometry) | 计算几 何对象的表面上的点 | ST_PointOnSurface(ST_GeomFromText(‘POLYGON((0 0, 0 3, 3 3, 3 0, 0 0))’)) 返回 POINT(1.5 1.5) |
23 | ST_Transform(geometry, srid) | 将几何对象从一个空间参考系转换为另一个空间参考系 | ST_Transform(ST_GeomFromText(‘POINT(1 2)’, 4326), 3857) 返回在Web墨卡托投影下的 POINT(111319.49079327357 222684.20875941086) |
24 | ST_Distance(geometry A, geometry B) | 计算两个几何对象之间的距离 | ST_Distance(ST_GeomFromText(‘POINT(1 2)’), ST_GeomFromText(‘POINT(3 4)’)) 返回 2.828427 |
25 | ST_Distance_Sphere(geometry A, geometry B) | 计算两个几何对象之间的球面距离,单位为米 | ST_Distance_Sphere(ST_GeomFromText(‘POINT(1 2)’, 4326), ST_GeomFromText(‘POINT(3 4)’, 4326)) 返回 314274.3882001206 |
26 | ST_Azimuth(geometry A, geometry B) | 计算从几何对象A到几何对象B的方位角,单位为弧度 | ST_Azimuth(ST_GeomFromText(‘POINT(1 2)’, 4326), ST_GeomFromText(‘POINT(3 4)’, 4326)) 返回 0.785398 |
27 | ST_MakePoint(x, y) | 创建一个二维点 | ST_MakePoint(1, 2) 返回 POINT(1 2) |
28 | ST_MakeLine(geometry A, geometry B, …) | 创建一个线段 | ST_MakeLine(ST_MakePoint(1, 2), ST_MakePoint(3, 4)) 返回 LINESTRING(1 2, 3 4) |
29 | ST_MakePolygon(geometry A, geometry B, …) | 创建一个多边形 | ST_MakePolygon(ST_MakeLine(ST_MakePoint(1, 2), ST_MakePoint(3, 4), ST_MakePoint(5, 6), ST_MakePoint(1, 2))) 返回 POLYGON((1 2, 3 4, 5 6, 1 2)) |
30 | ST_GeomFromText(text) | 从WKT字符串创建几何对象 | ST_GeomFromText(‘POINT(1 2)’) 返回 POINT(1 2) |