检查一些多边形是否相互重叠

Check if some polygons overlap each other

我正在尝试确定某些多边形是否相互重叠。所有的多边形都在同一层。

PostGis 函数ST_OVERLAPS 可以判断两个几何元素是否重叠。但是我找不到一种方法来应用这个函数来检查一个或多个多边形是否相互重叠。

我想要这样的东西:

SELECT * 
FROM MyGeometricTable g
WHERE ST_OVERLAPS(g.geom,g.geom) = 1
AND g.id <> g.id                      --The polygon that overlap another polygon is not the same.

MyGeomtricTable 包含例如 100 个多边形。

谢谢

您需要使用笛卡尔乘法来执行此操作,如下所示:

SELECT * 
FROM MyGeometricTable g1, MyGeometricTable g2
WHERE ST_OVERLAPS(g1.geom,g2.geom) = TRUE 
AND g1.id <> g2.id;

要应用 John Barça 的改进,我们可以执行以下操作:

select g1.id, g2.id
from MyGeometricTable g1, MyGeometricTable g2
where ST_OVERLAPS(g1.geom,g2.geom) = TRUE
AND g1.id > g2.id