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

时间:2016-03-10 17:40:27

标签: sql postgresql postgis

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

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个多边形。

由于

1 个答案:

答案 0 :(得分:3)

你需要用笛卡尔乘法来做到这一点,如下所示:

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

为了应用JohnBarça的改进,我们可以做到以下几点:

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