来自 PostGIS 的文档
如果几何或地理共享空间的任何部分,则它们相交。重叠、接触、内都暗示着空间的交集。如果上述任何一个返回 true,则几何图形也在空间上相交。
如果几何图形“空间重叠”,则返回 TRUE。我们的意思是它们相交,但一个并不完全包含另一个。
不同之处在于:如果两个几何体重叠 100%,则它们不再重叠。
这是一个 POSTGIS 示例:
SELECT ST_Overlaps(a,b) As a_overlap_b, ST_Intersects(a, b) As a_intersects_b, ST_Contains(b, a) As b_contains_a
FROM (SELECT
ST_Polygon(ST_GeomFromText('LINESTRING(1 1,3 1,3 3,1 1)'), 4326) As a,
ST_Polygon(ST_GeomFromText('LINESTRING(1 1,3 1,3 3,1 1)'), 4326) As b)
As foo;
-- INTERSECT is TRUE, OVERLAP is FALSE because B equals A
SELECT ST_Overlaps(a,b) As a_overlap_b, ST_Intersects(a, b) As a_intersects_b, ST_Contains(b, a) As b_contains_a
FROM (SELECT
ST_Polygon(ST_GeomFromText('LINESTRING(1 1,3 1,3 3,1 1)'), 4326) As a,
ST_Polygon(ST_GeomFromText('LINESTRING(1 1,4 1,4 4,1 1)'), 4326) As b)
As foo;
-- INTERSECT is TRUE, OVERLAP is FALSE because B contains A
SELECT ST_Overlaps(a,b) As a_overlap_b, ST_Intersects(a, b) As a_intersects_b, ST_Contains(b, a) As b_contains_a
FROM (SELECT
ST_Polygon(ST_GeomFromText('LINESTRING(0 0,2 0,2 2,0 0)'), 4326) As a,
ST_Polygon(ST_GeomFromText('LINESTRING(1 1,3 1,3 3,1 1)'), 4326) As b)
As foo;
-- INTERSECT is TRUE, OVERLAP is TRUE because not all of A intersects B and not all of B intersects A

本文介绍了PostGIS中用于判断几何图形空间关系的两个函数:ST_Intersects和ST_Overlaps。ST_Intersects返回两个几何图形是否共享任何空间,而ST_Overlaps则检查它们是否相互重叠但不完全包含。通过示例展示了当两个几何体完全相等、一个包含另一个以及部分重叠时,这两个函数的不同返回结果。



8372

被折叠的 条评论
为什么被折叠?



