我知道,要找到兩個緯度,經度點之間的距離,我需要使用半正矢函數:矢量化haversine公式與大熊貓據幀
def haversine(lon1, lat1, lon2, lat2):
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
km = 6367 * c
return km
我有一個數據幀,其中一列是緯度和另一列是經度。我想知道這些點距離設定點有多遠,-56.7213600,37.2175900。我如何從DataFrame中取值並將它們放入函數中?
例如數據框:
SEAZ LAT LON
1 296.40, 58.7312210, 28.3774110
2 274.72, 56.8148320, 31.2923240
3 192.25, 52.0649880, 35.8018640
4 34.34, 68.8188750, 67.1933670
5 271.05, 56.6699880, 31.6880620
6 131.88, 48.5546220, 49.7827730
7 350.71, 64.7742720, 31.3953780
8 214.44, 53.5192920, 33.8458560
9 1.46, 67.9433740, 38.4842520
10 273.55, 53.3437310, 4.4716664
我已經發布了一個答案,可以解決您的問題,但我認爲這不是最佳的 – EdChum 2014-09-10 14:16:20
對於一個小的df,我的答案可以,但是對於更大的df,您最好將度數轉換爲弧度並存儲然後在整個數據幀上執行計算 – EdChum 2014-09-10 14:22:51
我在df中有143個值,並且這似乎運行良好。 – user3755536 2014-09-10 14:31:12