[問題] 利用經緯度計算距離

作者: c2578910 (台中陳奕迅)   2020-03-13 21:21:44
小弟最近要建立矩陣,因不熟悉API的原理及運用,打算將住址轉換為經緯度後再計算距
離。
由於資料量不少,打算利用迴圈的形式。
流程大約是:先讀取EXCEL的數值,再進行運算
以下為程式碼:
d = {}
for i in range(0,M):
for j in range (0,M):
d [i,j]= 6371*math.acos(math.sin(math.radians(X[i]))*math.sin(math.radians(X[j]))+
math.cos(math.radians(X[i]))*math.cos(math.radians(X[j]))*
math.cos(math.radians(Y[i]-Y[j])))
6371是地球半徑
M是資料筆數
不過會出現ValueError: math domain error
想請問是哪邊有問題?
求解,謝謝!
作者: qhair (卡早睡卡有眠)   2020-03-13 23:06:00
geopy可以直接算吧?
作者: lycantrope (阿寬)   2020-03-13 23:09:00
code沒問題,可能是data有問題
作者: TitanEric (泰坦)   2020-03-13 23:27:00
之後也許可以改成numpy
作者: Hsins (翔)   2020-03-14 02:01:00
先檢查 acos 裡面算出來的東西有沒有絕對值超過 1 的看起來是用 Great-circle distance 的公式,那你應該說清楚X[] Y[] 哪個是經度,哪個是緯度。公式裡 X[] 應該要放緯度下次問問題記得把用到的公式跟你的變數交待一下...

Links booklink

Contact Us: admin [ a t ] ucptt.com