【问题标题】:Creating an MKPolygon from the intersection of 2 or more MKPolygon objects从 2 个或更多 MKPolygon 对象的交集创建 MKPolygon
【发布时间】:2011-06-10 02:32:44
【问题描述】:

有谁知道这是否可能。我正在尝试创建一个非常复杂的多边形,并且想知道是否有任何方法可以获取 2 个或更多 MKPolygon 的对象并从中创建一个新的 MKPolygon。

谢谢!

【问题讨论】:

    标签: objective-c ios cocoa-touch mkmapview


    【解决方案1】:

    MKPolygon 及其祖先非常简单。您可以轻松地做的最多的事情就是制作一个大的 mkpolygon 并开始填充内部多边形“孔”或环以创建更复杂的形状。

    话虽如此,如果您在谈论真正的几何数学、联合、交集和更复杂的函数,您可能想要使用特定于地理的框架(或将您的 lat/long 视为 x/y 双浮点数和只需使用常规的教科书几何函数来构建 2d 多边形)

    Michael Weisman 有一个很好的地理/GIS 库,名为 ShapeKit,专门针对 iOS。它充当 GEOS 和 PROJ.4 这两个非常强大的库的前端。这可能是您最好、最安全的选择。

    如果您不必在设备上计算多边形,您可能想要探索的另一个选项...从 GIS 驱动的数据库服务器提供您的多边形。我对 shapekit 进行了一些修改,让您可以从 mysql 或其他地方导入二进制 WKB 多边形……如果需要,您可以在那里获得快速强大的功能来卸载处理能力。或者你甚至可以将它们直接从 Esri shapefile 带到 iOS,如果那是你来自的地方……我也在 GitHub 上做了一个 proof of concept

    【讨论】:

    • 感谢您的回答。不过,我从来没有使用过任何这些技术,所以我有点犹豫要不要走这条路。我实际上是从纬度和经度点的平面文本文件中获取飓风数据,并试图重新创建误差锥的边缘。我生成圆锥的算法效果很好,除非其中一个投影点涉及返回到先前位置的航向。然后我的多边形就变得很纠结了。
    • 我希望实际绘制一些具有误差半径的 MKCircle 对象,并绘制纠缠在一起的圆锥体,然后将这些对象的交集创建一个新的多边形更准确。
    • 而不是逐点绘制它(如果我理解纠结)也许寻找一种方法在该区域周围环绕一个三角形......就像一个三边边界框,检查最小值/最大值坐标。或者,对这些点进行一些简化......要么找到一个 Dickie 实现,要么对于每三个点,平均中间一个。这也会加快渲染速度。
    • 谢谢 Greg,我会调查的。
    【解决方案2】:

    我已经为此编写了一个解决方案。查看MKPolygon-GPC。它是 Alan 的 GPC 库的 Objective-C 包装器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多