![](/img/trans.png)
[英]Using geopy.distance.distance function, why are distances the same between two points at very different latitudes?
[英]Calculating the distance between two points using pandas and geopy
我有一個如下所示的熊貓數據框,包括四列,但每行有兩個點(lat1,lon1)和(lat2,lon2):
lat1 lon1 lat2 lon2
========= ========= ========= =========
30.172705 31.126725 30.188281 31.132326
30.272805 31.226725 30.288281 31.232326
30.372905 31.326725 30.388281 31.332326
30.472105 31.426725 30.488281 31.432326
30.572205 31.526725 30.588281 31.532326
使用geopy
KM 中每一行中提到的 (lat1,lon1) 和 (lat2,lon2) 之間距離的最有效方法是什么?
你的緯度/經度是什么坐標系?
讓我們試試 Euc-squrt squrt(delta(lat)**2+ delta(lon)**2)
df['dist']=((df.lat1.sub(df.lat2)**2).add(df.lon1.sub(df.lon2)**2))**0.5
即使你自己似乎沒有做過任何研究,你也可以去:谷歌搜索結果: https : //geopy.readthedocs.io/en/stable/#module-geopy.distance
有了這些,您現在可以相對容易地找到如何在 Pandas 中訪問 DF 並應用操作(@wwnde 已經表明了這一點)。
結合這兩個基礎給出:
import pandas as pd
import numpy as np
from geopy import distance
# Generate some random data (lon, lat must be in (-90, 90)
df = pd.DataFrame(np.random.randint(-90, 90, size=(100, 4)), columns=list(['lo1', 'la1', 'lo2', 'la2']))
print(df)
# applies the distance function as described in the provided link
df['km'] = df.apply(lambda x: distance.distance((x[0], x[1]), (x[2], x[3])), axis=1)
print(df)
此外,我發現這是第一個鏈接,但沒有閱讀它,因為解決方案非常簡單。
正如 StackOverflow 的 CoC 建議的那樣,請提供您嘗試過的內容並擁有正確的行為來簡單地查看谷歌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.