场景
在PostGIS中有一张面要素表,需要检查该表中的哪些地方有重叠。
其中重叠定义为这些多边形的面状交集。
There is a surface feature table in PostGIS, and it is necessary to check which areas in the table have overlaps.
Overlap is defined as the planar intersection of these polygons.
数据分布如下:
可以直观判断出如下两个区域存在问题:
我们现在来计算出这些区域。
第一步,查找重叠区域
SELECT T1.ID::varchar AS ID1,T2.ID::varchar AS ID2,CASE WHEN T1.ID > T2.ID THEN ST_INTERSECTION(T1.GEOM_COLUMN,T2.GEOM_COLUMN)ELSE ST_INTERSECTION(T2.GEOM_COLUMN,T1.GEOM_COLUMN)END AS GEOMFROM TARGET_TABLE T1 LEFT JOIN TARGET_TABLE T2 ON ST_INTERSECTS(T1.GEOM_COLUMN,T2.GEOM_COLUMN) AND POSITION(''Polygon'' in ST_GEOMETRYTYPE(ST_INTERSECTION(T1.GEOM_COLUMN<