创建一个具有地理点之间距离的矩阵。

问题描述 投票:-1回答:2

我正在努力实现我的想法,即创建新泽西州轨道交通中每对车站之间的距离矩阵,单位为公里。我有每个车站的经度和纬度数据。

enter image description here

而我想做的就是这个表格。

enter image description here我已经看了一些可能的方法来实现这个表格,但它们更多的是用于几何坐标而不是地理坐标。我想使用距离矩阵,但我可以看到它是另一种类型的坐标。

请帮助我

python pandas scipy geolocation
2个回答
2
投票

IIUC,你要找的是地理距离,即Haversine距离。从sklearn 0.22.2,你可以使用 haversine_distance:

x_deg = df[['stop_lat','stop_lon']].values
x_rad = np.deg2rad(x_deg)

# distances in miles
distances = haversine_distances(x_rad,x_rad) * 6371 / 1.6

pd.DataFrame(distances, 
             index=df.stop_name, columns=df.stop_name)

你会得到这样的东西。

stop_name         a         b         c
stop_name                              
a          0.000000  1.274556  1.396741
b          1.274556  0.000000  0.871521
c          1.396741  0.871521  0.000000

0
投票

你会这样做。

import pandas as pd
from scipy.spatial import distance_matrix

# You already have the data
data = [[5, 7], [7, 3], [8, 1]]
ctys = ['Boston', 'Phoenix', 'New York']

df = pd.DataFrame(data, columns=['xcord', 'ycord'], index=ctys)
df_mat = pd.DataFrame(distance_matrix(df.values, df.values), index=df.index, columns=df.index)
print(df_mat)

            Boston   Phoenix  New York
Boston    0.000000  4.472136  6.708204
Phoenix   4.472136  0.000000  2.236068
New York  6.708204  2.236068  0.000000
© www.soinside.com 2019 - 2024. All rights reserved.