如何从java中的列表中获取最近的纬度经度

时间:2015-12-15 12:51:28

标签: java location latitude-longitude

我需要将lat-long值与lat-longs列表进行比较,并获得该给定值的最接近值。例如,如果我有latitude = 13.820000longitude = 47.887777,我也有列表包含像[[13.41111,47.11111],[12.42332,53.3345],[14.23423,16.23423]]这样的纬度长度。在那里,我需要从列表中获取给定值的最近的lat-long值。

1 个答案:

答案 0 :(得分:1)

首先,您需要一个函数来计算两个地理点之间的距离。见this。然后,您必须定义搜索nearest neighbour的策略,这是您问题的技术名称。你有几种方法:

  1. 最简单的是天真的O(N)。比较您的所有位置 列表中的条目并保持最小值。
  2. 将您的列表插入一个容器结构,如kd-tree或 网格并找到附近水桶中最接近的数字。分期 O(1)
  3. 选择实际上取决于您的目的是什么以及您需要什么样的效率。