作者c2578910 (台中陈奕迅)
看板Python
标题[问题] 利用经纬度计算距离
时间Fri Mar 13 21:21:44 2020
小弟最近要建立矩阵,因不熟悉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
想请问是哪边有问题?
求解,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.136.218 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1584105706.A.FF3.html
1F:推 qhair: geopy可以直接算吧? 03/13 23:06
我查看看geopy的原理
2F:推 lycantrope: code没问题,可能是data有问题 03/13 23:09
也有这可能性 有从小到大测试不同的M 但经纬度是从Google地图抓的 真奇怪
3F:推 TitanEric: 之後也许可以改成numpy 03/13 23:27
※ 编辑: c2578910 (61.70.244.68 台湾), 03/14/2020 00:50:56
※ 编辑: c2578910 (61.70.244.68 台湾), 03/14/2020 00:52:20
4F:→ Hsins: 先检查 acos 里面算出来的东西有没有绝对值超过 1 的 03/14 02:01
好的 由於是书上的公式 也不太好直接讲出来怕有业配嫌疑 下次会讲清楚变数 谢谢
5F:→ Hsins: 看起来是用 Great-circle distance 的公式,那你应该说清楚 03/14 02:32
6F:→ Hsins: X[] Y[] 哪个是经度,哪个是纬度。公式里 X[] 应该要放纬度 03/14 02:33
7F:→ Hsins: 下次问问题记得把用到的公式跟你的变数交待一下... 03/14 02:35
※ 编辑: c2578910 (223.140.224.209 台湾), 03/14/2020 12:48:17
8F:→ Hsins: 你有检查 X[] 确定是放纬度了吗?因为我看 Google 给出来资 03/14 20:04
确定X放纬度 Y放经度没错 遇到的问题是 改成不同的M时突然就出现error 目前已用版友私讯的其他公式解决了 谢谢
9F:→ Hsins: 料是把经度放前面。如果是这个问题,你把运算式里面的 X[] 03/14 20:05
10F:→ Hsins: Y[] 部份互调就可以了 03/14 20:05
※ 编辑: c2578910 (61.70.244.68 台湾), 03/16/2020 10:04:15