【问题标题】:Point in polygon algorithm for multiple polygons多个多边形的多边形点算法
【发布时间】:2011-12-19 18:09:15
【问题描述】:

我有一个谷歌地图,上面有一堆多边形。

这是我感兴趣的一个问题:给定一个 lat,lng 点,确定该点所在的所有多边形的最佳方法是什么。

显而易见的方法是为每个多边形迭代地运行“多边形中的点”算法,但我想知道是否有一种有效的算法可以回答此类查询,尤其是如果您有数千个多边形。

【问题讨论】:

    标签: google-maps gis geospatial computational-geometry


    【解决方案1】:

    改进“针对每个多边形”算法的唯一方法是创建一组允许您跳过某些多边形的元数据。例如,如果对于您的数千个多边形,您有一个列表或一组列表,其中包含所有相互重叠的多边形,那么您将能够快速消除许多多边形内的比较。 IE。找到包含点的第一个多边形,然后只比较与初始多边形相交/重叠的多边形,因为包含该点的任何多边形也必须与包含它的其他多边形重叠。最坏的情况是 N 次比较,例如你的每个实现。

    您还可以创建多边形的逻辑/物理区域,例如某个区域的多边形的象限。在象限示例中,您将/应该能够消除 3/4 的多边形进行比较。这一切都取决于你的多边形是如何排列的。

    但无论如何,我认为对 for-each 算法的改进在于创建/组织多边形集合中的一些逻辑组。

    【讨论】:

      【解决方案2】:

      我不知道它下面是什么,但是将 空间过滤器 应用到包含多边形特征的图层上,为我预选多边形...示例就是这个,void GRLayer::SetSpatialFilter ( OGRGeometry * poFilter) http://www.gdal.org/ogr/classOGRLayer.html#0b4ab45cf97cbc470f0d60474d3e4169。我想很多 GIS 环境都有类似的功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-27
        • 2015-03-12
        • 1970-01-01
        • 2010-11-13
        • 2012-08-04
        • 1970-01-01
        • 2012-01-19
        相关资源
        最近更新 更多