【问题标题】:Efficiently merging and reducing polygons with Python使用 Python 有效地合并和减少多边形
【发布时间】:2013-01-18 16:04:54
【问题描述】:

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

我正在尝试绘制由 Google 地图上的US Census data 定义的邮政编码区域。使用 Django 出色的 GeoDjango 框架和我对 django-census-places 应用程序所做的 hack,我现在在我的数据库中有数以千计的 zip 和 lat/lng 向量来描述它们的区域。

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

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

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

【问题讨论】:

    标签: python google-maps svg geometry polygon


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      要合并多边形,我建议您需要执行boolean union operation。我不确定你会如何在 Python 中做到这一点,但由于你还提到了 JavaScript,所以我的 Clipper 库(用 Delphi、C++ 和 C# 编写)有一个出色的 JavaScript 翻译here

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

      【讨论】:

      • 在演示页面上,“时间”标题下的数字是以秒为单位还是以分钟为单位?
      • 我猜是毫秒。清除基准并执行另一个剪辑操作。手术发生的速度比眼睛看到的要快得多,所以绝对不是几秒钟或几分钟 :)。
      猜你喜欢
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 2012-10-04
      • 2012-08-22
      • 2020-07-16
      • 2021-07-14
      • 1970-01-01
      • 2015-08-26
      相关资源
      最近更新 更多