代码之家  ›  专栏  ›  技术社区  ›  Jahongir Rahmonov

修改多边形,使它们不重叠并且区域保持不变

  •  3
  • Jahongir Rahmonov  · 技术社区  · 7 年前

    我有一组多边形,它们可以相互重叠,如下所示: enter image description here

    我想以这样的方式修改它们,使它们不会重叠,并且生成的表面积保持不变。像这样的:

    enter image description here

    如果形状或位置改变就可以了。最主要的是,它们不应该相互重叠,区域也不应该有太大的变化(我知道第二张图片中的区域有点变化,但我是手动绘制的,所以我们假设这些区域没有变化)。

    我试图在python的帮助下以编程的方式完成它。基本上,我将多边形存储在postgis数据库中,并在脚本的帮助下检索和修改它们。

    我对地理信息系统很陌生,因此这似乎是一项困难的任务。

    正确的做法是什么?有没有解决这类问题的算法?

    2 回复  |  直到 7 年前
        1
  •  0
  •   dcd018    7 年前

    看一看 ST_buffer 并尝试传递一个带符号的浮点数作为第二个参数(将半径减小的度数)

    SELECT buffer(the_geom,-0.01) as geom
    

    注意负缓冲区,因为如果缓冲区大小超过半径,可能会遇到问题,请参阅 here 是的。

        2
  •  0
  •   Jahongir Rahmonov    6 年前

    以下是我所做的:

    遍历所有多边形并找到重叠的多边形。然后,我将多边形移动到不同的方向,并通过计算产生的最小重叠区域来找到最佳移动方向。然后我简单地沿着最佳方向移动多边形,直到没有重叠区域。