【发布时间】:2022-07-19 01:56:37
【问题描述】:
我正在处理如下所示的数据框:
lat lon
id_zone
0 40.0795 4.338600
1 45.9990 4.829600
2 45.2729 2.882000
3 45.7336 4.850478
4 45.6981 5.043200
我正在尝试制作 Haverisne 距离矩阵。基本上对于每个区域,我想计算它与数据框中所有其他区域之间的距离。所以对角线上应该只有 0。这是我使用的 Haversine 函数,但我无法制作矩阵。
def haversine(x):
x.lon, x.lat, x.lon2, x.lat2 = map(radians, [x.lon, x.lat, x.lon2, x.lat2])
# formule de Haversine
dlon = x.lon2 - x.lon
dlat = x.lat2 - x.lat
a = sin(dlat / 2) ** 2 + cos(x.lat) * cos(x.lat2) * sin(dlon / 2) ** 2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
km = 6367 * c
return km
【问题讨论】:
-
在 StackOverflow 上,您不应该要求一个完整的解决方案。尝试解决您的任务并询问您遇到的特定问题。 “我无法制作我的矩阵。”没有充分描述您的问题。显示您的相关代码(作为文本,而不是图片),描述您期望它做什么以及实际发生的情况。
标签: python pandas dataframe matrix haversine