通过多数覆盖删除重叠的 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
我正在尝试用包含更新的几何字段值的新记录替换 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