1

我有一个 lat+long 值的集合。在给定的时刻,一个新的点(纬度+经度)被传递给应用程序。此时,应用程序应该返回从该点到集合中存储的值的距离。应用程序还应该能够过滤给定距离内的所有值。类似于:返回距离该点 10 英里(或公里)内的所有值。你能帮助建立一个java算法来执行那个任务吗?非常感谢

4

1 回答 1

3

如果您有大量数据:

看:http: //jsi.sourceforge.net/。这是一个内存中的地理空间数据库。它使用 RTree ( http://en.wikipedia.org/wiki/R-tree ) 来有效地执行您想要的计算类型。

如果总点数很少:

然后你可以在每一点上使用 Haverine 公式(如评论中所述)。这是我发现的一个实现:http: //bigdatanerd.wordpress.com/2011/11/03/java-implementation-of-haversine-formula-for-distance-calculation-between-two-points/

你会做这样的事情:

for( Point p : pointCollection ){
  distance = haversine(p, newPoint);
  if( distance < targetDistance ){
     .. add new results ...
  }
}
于 2013-10-16T19:18:25.020 回答