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

时间:2017-05-26 17:34:44

标签: postgresql geometry postgis shapefile

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

我有两个包含几何字段记录的表。我想通过另一个表中的几何字段识别(并删除)一个表中被多数(> 50%)覆盖的所有记录。许多字段以微小的方式重叠,因此ST_Intersects()几乎返回所有记录。记录中没有任何记录完全包含在内,因此ST_CoveredBy()& ST_Within()根本不返回任何记录。

我如何识别&删除所有具有几何图形的记录,新几何图形值重叠的多数(> 50%)?

1 个答案:

答案 0 :(得分:0)

要使用的函数是ST_Intersection,它返回几何。然后,您可以将区域与源区域进行比较。 为了提高效率,请确保将几何列都编入索引并将区域计算限制为仅交叉几何。

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