合并重复的多边形对

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.ids 两次(一次在s1 中使用较高的ID,另一次在s2 中使用较高的ID)。因此,改为添加更严格的条件:

WHERE ...
AND s1.id < s2.id

【讨论】:

以上是关于合并重复的多边形对的主要内容,如果未能解决你的问题,请参考以下文章

将相邻矩形合并为多​​边形的算法

geotools实现多边形的合并&缓冲区

R中多边形内点(shapefile)的选择和提取

SVG - 多边形悬停无法正常工作[重复]

使用shapefile在Python中查找点的封闭多边形[重复]

Three.js 多边形三角剖分在伪重复点中失败