我正在尝试用包含更新的几何字段值的新记录替换表中的记录。
我有两个包含几何字段记录的表。我想通过另一个表中的几何字段识别(并删除)一个表中被多数(> 50%)覆盖的所有记录。许多字段以微小的方式重叠,因此ST_Intersects()
几乎返回所有记录。记录中没有任何记录完全包含在内,因此ST_CoveredBy()
& ST_Within()
根本不返回任何记录。
我如何识别&删除所有具有几何图形的记录,新几何图形值重叠的多数(> 50%)?
答案 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