postgis几何图形
空间关系
- ST_Equals(geometry A, geometry B)用于测试两个图形的空间相等性。
- ST_Intersects、ST_Crosses和ST_Overlaps都用于测试几何图形内部是否相交。
- ST_Intersects:如果两个图形有相同的空间部分,即如果它们的边界或内部相交,则ST_Intersects(geometry A, geometry B)返回TRUE。
- ST_Crosses:如果相交生成的几何图形的维度小于两个源几何图形的最大维度,且相交集位于两个源几何图形的内部,则ST_Crosses(geometry A, geometry B)将返回TRUE(其实就是判断两个几何图形是否交叉)。
- ST_Overlaps:ST_Overlaps(geometry A, geometry B)比较两个相同维度的几何图形,如果它们的结果集与两个源几何图形都不同但具有相同维度,则返回TRUE(其实就是判断两个几何图形是否叠置)。
-
ST_Intersects()方法的对立方法是ST_Disjoint(geometry A, geometry B)。
如果两个几何图形没有相交的部分,则它们不相交,反之亦然。
事实上测试"not intersect"(!ST_Intersects)通常比测试"disjoint"(ST_Disjoint)更有效,因为intersect测试会自动使用空间索引。
- ST_Touches()测试两个几何图形是否在它们的边界上接触,但在它们的内部不相交。
- ST_Within()和ST_Contains()测试一个几何图形是否完全位于另一个几何图形内。
- ST_Distance(geometry A, geometry B)计算两个几何图形之间的最短距离,并将其作为浮点数返回。这对于实际报告几何图形之间的距离非常有用。
-
ST_DWithin():为了测试两个几何图形之间的距离是否在某个范围之内,ST_DWithin()函数提供了一个基于索引加速的功能。
这对于"在距离道路500米的缓冲区内有多少棵树?"这样的问题很有用,你不必计算实际的缓冲区,只需测试距离关系即可。