Java快速查找点是否在国家(多边形)内的方法

5
我希望有人能指点我方向。
我们有数百万条记录流动/流过,需要快速查找以确定它们属于哪个国家多边形。是否有人可以推荐一个完整的基于JAVA的方法来完成这项工作?从我了解的情况来看,我会使用JTS和/或geotools?我的想法是将所有国家多边形可能分割成类似FishNet或Grid的小块,以获得更好的性能。然后,我将其加载到基于Java的内存空间索引中...当记录流经时,我会在Java空间索引中进行查找,以查看它们属于哪个国家。(可能类似于空间要素集合)。
这种方法对大量数据是否合理?从Java的角度来看,我应该如何实现它?这只是使用JTS和/或Geotools吗?我将创建什么类型的索引。(在加载后,多边形数据将保持静态状态,只包含国家边界)。
从阅读geotools文档中,很难解释空间索引的性能以及它是否应该被使用?
任何帮助或指导将不胜感激。
谢谢。
2个回答

3
您想要解决的问题称为点在多边形内问题。之前的回答给出了一个使用JTS(Java拓扑套件)测试一个点是否在一个多边形内的示例。
我不知道对于多个多边形是否有更有效的解决方案。您可以按照距离从您的点排序,逐个测试多边形。

1
简短回答:从您的国家和点位置构建梯形图的时间复杂度为O(log n),其中n是线段数量。
参考资料:《计算几何:算法与应用》第6章,Mark de Berg,Otfried Cheong,Marc van Kreveld,Mark Overmars。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接