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

Modify polygons so that they don't overlap and area stays the same

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

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

如果形状或位置发生变化也没关系。最主要的是它们不应该相互重叠,并且区域不应该有太大变化(我知道第二张图片中的区域发生了一点变化,但我手动绘制了它,因此我们假设这些区域没有变化)。

我正在尝试在 Python 的帮助下以编程方式完成此操作。基本上,我将多边形存储在 PostGIS 数据库中,并借助脚本检索它们并进行修改。

我对 GIS 还很陌生,因此这似乎是一项艰巨的任务。

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

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

SELECT buffer(the_geom,-0.01) as geom

小心负缓冲区,因为如果缓冲区大小超过半径,可能会 运行 出现问题,请参阅 here

这是我所做的:

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