我希望能够估算两个(纬度,经度)点之间的距离。我想下冲,因为这将用于A *图形搜索,并且我希望它是快速。这些点最多相距800公里。

最佳答案

Haversine Formula in Python (Bearing and Distance between two GPS points)的答案提供了可以回答您问题的Python实现。

使用下面的实现,我在较旧的笔记本电脑上在不到1秒的时间内完成了100,000次迭代。我认为对于您来说,这应该足够了。但是,在优化性能之前,应该先概要分析所有内容。

from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2):
    """
    Calculate the great circle distance between two points
    on the earth (specified in decimal degrees)
    """
    # convert decimal degrees to radians
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
    # haversine formula
    dlon = lon2 - lon1
    dlat = lat2 - lat1
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a))
    # Radius of earth in kilometers is 6371
    km = 6371* c
    return km

低估haversine(lat1, long1, lat2, long2) * 0.90或您想要的任何因素。我看不出将误差引入您的低估是多么有用。

10-02 10:13