合并重复的多边形对
Posted
技术标签:
【中文标题】合并重复的多边形对【英文标题】:combine duplicate pairs of polygons 【发布时间】:2022-01-19 02:45:18 【问题描述】:我的代码遇到了问题。此代码查找相距小于 100 m 的唯一多边形对。如何合并重复对?
这是我的代码:
select s1.id, s2.id,
ST_distance(
ST_Transform(s1.geom,3857),
ST_Transform(s2.geom,3857)),
s1.geom
from shops as s1, shops as s2
where ST_distance(
ST_Transform(s1.geom,3857),
ST_Transform(s2.geom,3857))<100
and s1.id<>s2.id
【问题讨论】:
你应该直接在问题中包含代码,不要链接到它的图像。 另外,如果您使用投影 3857,我认为 ST_Distance() 不会返回米单位。您应该使用投影 4326。 请将查询和数据发布为文本,而不是图像。 附带说明,永远不要计算 3857 中的距离,因为这种投影会严重扭曲它们。使用合适的局部投影来保留距离或使用地理或使用 ST_DistanceSphere。在 where 子句中,请查看 st_dwithin,因为它使用了空间索引 @SteveBennett 3857 的单位是米,所以结果将以米为单位......尽管由于失真,它是一个毫无意义的距离。 4326 上的 st_distance 会返回一个以度为单位的距离,这更没有意义。 【参考方案1】:您使用的WHERE
条件将选择每对shops.id
s 两次(一次在s1
中使用较高的ID,另一次在s2
中使用较高的ID)。因此,改为添加更严格的条件:
WHERE ...
AND s1.id < s2.id
【讨论】:
以上是关于合并重复的多边形对的主要内容,如果未能解决你的问题,请参考以下文章