obc*_*don 1 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.
Run Code Online (Sandbox Code Playgroud)
MyGeomtricTable 包含例如 100 个多边形。
谢谢
您需要使用笛卡尔乘法来完成此操作,如下所示:
\n\nSELECT * \nFROM MyGeometricTable g1, MyGeometricTable g2\nWHERE ST_OVERLAPS(g1.geom,g2.geom) = TRUE \nAND g1.id <> g2.id;\n
Run Code Online (Sandbox Code Playgroud)\n\n要应用 John Bar\xc3\xa7a 的改进,我们可以执行以下操作:
\n\nselect g1.id, g2.id\nfrom MyGeometricTable g1, MyGeometricTable g2\nwhere ST_OVERLAPS(g1.geom,g2.geom) = TRUE\nAND g1.id > g2.id\n
Run Code Online (Sandbox Code Playgroud)\n