通过多数覆盖删除重叠的 shapefile 几何图形?

Delete overlapping shapefile geometry by majority coverage?

我正在尝试用包含更新的几何字段值的新记录替换 table 中的记录。

我有两个 table 包含带有几何字段的记录。我想识别(并删除)一个 table 中被另一个 table 中的几何字段占多数(>50%)的所有记录。许多字段以微小的方式重叠,因此 ST_Intersects() return 几乎包含所有记录。 None 的记录也完全包含在记录中,所以 ST_CoveredBy() & ST_Within() return 根本没有记录。

我如何识别并删除所有包含新几何值大部分重叠 (>50%) 几何的记录?

要使用的函数是 ST_Intersection,其中 returns 几何。然后您可以将该区域与源区域进行比较。 为了提高效率,请确保两个几何列都已编制索引,并将面积计算限制为仅相交几何。

SELECT a.id
FROM a, b
WHERE ST_Area(ST_Intersection(a.geom, b.geom)) > 0.5 * ST_Area(a.geom)
      AND ST_Intersects(a.geom, b.geom) = true;

如果您有兴趣找到最大的区域而不是大于 50% 的区域

,请参阅此answer