总结一下常用的PGSql空间判断函数
场景:判断两个几何是否 “沾边”;
判断方法:有任何交集(含边界、包含、重叠)。
场景:判断 A 是否是 B 的 “子集”;
判断方法:A 完全在 B 内(含边界),如果两个形状完全相同也是true。
场景:判断 B 是否是 A 的 “父集”;
判断方法:B 完全包含 A(含边界)→ true(与 ST_Within(A,B) 等价)。
场景:两个面部分重叠、两条线部分重叠
判断方法:部分重叠(交集与 A、B 都不同,且维度相同)→ true。
场景:两个面共享一条边、线端点接触面对界;
判断方法:仅边界接触(无内部交集)→ true。
1、使用前提:安装post-gis插件;
2、A和B必须是geometry类型的数据,且A和B的SRID必须相同
3、A和B如果不是geometry类型的数据,需要按照如下规则转化:首先构建如下的WKT文本:
展开代码点(2D) 'POINT(116.4 39.9) Point(3D 点) POINT Z (116.4 39.9 50) Point(4D 点) 2D 坐标 + 高程 50 米 + 测量值 100 POINT ZM (116.4 39.9 50 100) LineString(线)3 个顶点组成的折线(2D) LINESTRING(116.3 39.8, 116.4 39.9, 116.5 40.0) Polygon(面) POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)) MultiPoint(多点) MULTIPOINT((116.4 39.9), (116.5 40.0), (116.6 40.1)) MultiPolygon(多面) MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)), ((20 20, 30 20, 30 30, 20 30, 20 20)))
然后调用方法:
展开代码WKT文本转化为geometry对象 ST_GeomFromText('POINT(116.4 39.9)', 4326) 或者 ST_GeomFromText("SRID=4490;"+WKT) 转换SRID: ST_Transform(geometry,4490 -- 目标 SRID=4490)
4、关于SRID的说明
展开代码4326 WGS84 经纬度 3857 Web 墨卡托投影 4490 国家大地坐标系 2000 2435 北京 54 坐标系
本文作者:刘涛
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!