请注意,还有其他类似的问题,但1)我不想依赖在线服务,2)我正在寻找一个干净的算法解决方案。根据经纬度寻找最近的城市的算法解决方案
我有一个城市及其纬度/经度的数据库。我正在寻找一种方式,给定任意纬度/经度,找到最近的城市。
解决方案,我能想到的,到目前为止:
明显的蛮力解决方案,当然,计算使用great-circle distance公式所有可能的距离。这也需要很长时间,并且是O(n)。
对KD-Tree算法的修改可能会有效,但我对如何修改此算法以非笛卡尔坐标工作方式感到茫然,就像lat/lon的情况一样。如果有帮助,我们可以假设Mercator projection。
使用诸如PostgreSQL之类的地理数据库。这段时间对我来说不起作用。
任何见解?
Lat-Lon问题是在极点和日期线附近,359.9比0.1更接近0.1!你还必须处理任何城市的大圆圈路线。 – 2011-01-25 18:11:55