我有一系列lat + long值。在给定时刻,新点(lat + long)被传递给应用程序。此时,应用程序应返回从此点到存储在集合中的值的距离。 应用程序还应该能够过滤给定距离内的所有值。类似于:返回距离点10英里(或以公里为单位)的所有值。 你能帮助构建一个java算法来执行该任务吗? 非常感谢
答案 0 :(得分: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 ...
}
}