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

标签 java geometry geotools jts

<分区>

我希望有人能给我指出正确的方向。

我们有数百万条记录流经我们需要进行快速查找以确定它们属于哪个国家多边形的地方。

有人可以推荐一个完整的基于 JAVA 的方法来做到这一点。据我所知,我会使用 JTS 和/或 geotools?我的想法是获取所有国家/地区的多边形,并可能使用 FishNet 或 Grid 之类的方法将它们拆分,以使它们更小以获得更好的性能。然后我会将它们加载到基于 java 的内存空间索引中......当记录流过时,我会查找 java 空间索引以查看它们属于哪个国家/地区。 (可能像一个空间特征集合)。

对于大量数据,这种方法听起来是否合理?从 Java 的角度来看,我将如何实现它?这只是使用 JTS 和/或 Geotools 吗?我将创建什么类型的索引。 (加载后多边形数据将是静态的,因为它只包含国家边界)

通过阅读 geotools 文档很难破译空间索引及其性能以及是否应该使用它?

如有任何帮助或指导,我们将不胜感激。

谢谢

最佳答案

您要解决的问题称为 point in polygon问题。 previous answer给出了使用 JTS(Java 拓扑套件)测试一个点是否在一个多边形中的示例。

我不知道对于多个多边形是否有更有效的解决方案。您可能想依次测试多边形,按 distance 排序从你的角度来看。

关于Java快速查找点是否落在国家(多边形)内的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21732794/

相关文章:

java - 安卓ndk : Problem for call of Java method from c++ with jni

java - Jmeter API : how to add post data to httpsampler

javascript - 将外圈的导航与内圈的选定导航对齐

java - 在 Geotools 中构建 Shapefile 时遇到问题

java CompletableFuture.thenCombine 返回 CompletableFuture 的 CompletableFuture

java - 在 android 模拟器中运行 HelloListView 时出现问题

algorithm - 检查一个变化的无向图是否至少有一个圆

c++ - 外部库处理多边形并计算它们的分形维数

java - Geotools 在 SimpleFeatureCollection 上嵌套循环

Java:将纬度/经度从 EPSG:4236 转换为 EPSG: 3857