[问题] 利用经纬度计算距离

楼主: 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