如何计算坐标之间的成对半正弦距离

问题描述

所以我有一个关于创建半正弦函数的任务,它采用地球上的两个点的两个参数并计算彼此之间的距离,最后将该距离作为整数值返回。

public class SecondImplementationOfAbstractClass extends AbstractClass {
    double dummyDouble = 333f;
    
    public SecondImplementationOfAbstractClass() {
    }

    public void setDummyDouble(double dummyDouble) {
        this.dummyDouble = dummyDouble;
    }
}

我需要把这些纬度和经度值放在这haversine公式中

cities = [{"name": "Buenos Aires","lat": -34.58333333,"lon": -58.666667},{"name": "Vienna","lat": 48.2,"lon": 16.366667},{"name": "Baku","lat": 40.38333333,"lon": 49.866667},{"name": "Beijing","lat": 39.91666667,"lon": 116.383333},{"name": "Paris","lat": 48.86666667,"lon": 2.333333},{"name": "Berlin","lat": 52.51666667,"lon": 13.4},{"name": "dublin","lat": 53.31666667,"lon": -6.233333},{"name": "Mexico City ","lat": 19.43333333,"lon": -99.133333},{"name": "Lisbon","lat": 38.71666667,"lon": -9.133333},{"name": "Washington","lat": 38.883333,"lon": -77},{"name": "Ankara","lat": 39.93333333,"lon": 32.866667} ]

并有一个像这张图片中的示例输出

Output example

我需要帮助选择两个不同的纬度和经度值并将它们放入 lat2 lat1 lon2 lon1。 谢谢。

解决方法

# import packages
from sklearn.metrics.pairwise import haversine_distances
from math import radians
import pandas as pd


# create a list of names and radians
city_names = []
city_radians = []
for c in cities:
    city_names.append(c['name'])
    city_radians.append([radians(c['lat']),radians(c['lon'])])
    
# calculate the haversine distance
result = haversine_distances(city_radians)

# multiply by the Earth radius to get kilometers
result *= 6371000/1000

# show the result as a pandas dataframe
df = pd.DataFrame(result,columns= city_names,index= city_names)

df

结果: result

可选:如果不需要浮点数,也可以将结果转换为整数