2

什么是最有效的方法,最好是在 Python 中,将多个多边形合并和简化为等效形状但使用更少的多边形?

多边形缩减

我正在尝试绘制由谷歌地图上的美国人口普查数据定义的邮政编码区域。使用 Django 出色的GeoDjango框架和我对django-census-places应用程序进行的修改,我现在在我的数据库中有数千个 zip 和 lat/lng 向量来描述它们的区域。

我编写了一些基本的 Python 来导出矢量并渲染 Javascript 以在 Google 地图上绘制选定的 zip。然而,我遇到的问题是它非常慢,因为即使是一个邮政编码也可以包含数千个多边形。我可以将此输出预处理为 JSON 并将其缓存,但即便如此,浏览器也需要几分钟来加载所有三角形,其中大部分是多余的,因为我只对几个邮政编码的总体轮廓感兴趣。

请注意,此问题与类似,但不相同。我不关心重叠的多边形,因为我相信没有重叠。

编辑:这个问题看起来也很相似。

4

2 回答 2

1

事实证明,GeoDjango 中的几个功能之一是全方位的布尔多边形运算符。我所要做的就是在我的每个 MultiPolygon 对象上调用 union() 以获取描述整个区域的 MultiPolygon。点数的减少是一个数量级。

于 2013-01-18T20:28:32.767 回答
0

要合并多边形,我建议您需要执行布尔联合操作。我不确定您将如何在 Python 中执行此操作,但由于您还提到了 JavaScript,因此这里有我的 Clipper 库(用 Delphi、C++ 和 C# 编写)的出色 JavaScript翻译

这里还有一个在线演示,很好地展示了剪辑库的功能。

于 2013-01-18T16:23:16.710 回答