点多边形算法适用于多个多边形



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

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

最明显的方法是为每个多边形迭代地运行"点在多边形"算法,但我想知道是否有一个有效的算法来回答这样的查询,特别是如果你有成千上万的多边形。

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

您还可以创建多边形的逻辑/物理区域,例如,在特定区域中的多边形的象限。在象限的例子中,你应该能够消除3/4的多边形进行比较。这完全取决于你的多边形是如何排列的。

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

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

最新更新