使用Python有效地合并和减少多边形

时间:2013-01-18 16:04:55

标签: python google-maps svg geometry polygon

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

polygon reduction

我正在尝试根据Google地图上的US Census data定义邮政编码区域。使用Django优秀的GeoDjango框架和我对django-census-places应用程序所做的黑客攻击,我现在有数千个拉链和lat / lng向量描述我的数据库中的区域。

我已经编写了一些基本的Python来导出矢量并渲染Javascript以在Google Map上绘制选定的拉链。但是,我遇到的问题是它的速度非常慢,因为即使是单个邮政编码也可能包含数千个多边形。我可以将此输出预处理为JSON并对其进行缓存,但即使这样,浏览器也需要几分钟来加载所有三角形,其中大多数都是多余的,因为我只对几个邮政编码的整体轮廓感兴趣。

注意,这个问题类似于this,但不一样。我不关心重叠多边形,因为我认为没有重叠。

编辑:This问题也非常相似。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

要合并多边形,我建议你需要执行boolean union operation。我不确定你是如何在Python中做到这一点的,但是既然你也提到了JavaScript,我的Clipper库有很好的JavaScript翻译(用Delphi,C ++和C#编写)here

还有一个在线演示here,非常好地展示了裁剪库的功能。