【问题标题】:Haversine formula delivers incorrect result in NetlogoHaversine 公式在 Netlogo 中提供不正确的结果
【发布时间】:2017-06-15 17:37:17
【问题描述】:

我正在使用 Netlogo 的 gis 扩展,并试图以公里为单位计算代理之间的距离。 使用gis:envelope-of,我可以得到代理的位置(!)纬度和经度,所以我想使用Haversine 公式来计算距离。我的底层 GIS-shapefile 的投影是 WGS 84。

我所写的两个典型点如下:

to haversine

let lata 31.8930795682288
let longa 36.0898369172224
let latb 31.9964498913126
let longb 36.0318329821497


let rad (pi / 180)



let result acos (cos (rad * lata) * cos(rad * (latb )) + sin ( rad * (lata) )* sin(rad * (latb)) * cos(rad * (longa - longb))) * 6371


print result


end 

它得出的距离为 11.5 公里,而在 excel 中应用的相同公式(使用 RADIANS 公式而不是“rad”)给我留下了 12.73 公里,这是本网站 http://www.movable-type.co.uk/scripts/latlong.html 确认的数字。

知道我在这里做错了什么吗?提前致谢。

【问题讨论】:

标签: gis netlogo haversine


【解决方案1】:

计算result 的公式不正确。看起来你颠倒了sincos。使用

let result acos(sin(rad * lata) * sin(rad * latb) + cos(rad * lata) * cos(rad * latb) * cos(rad * (longa - longb))) * 6371

另外,根据我读过的文档(例如cosacos),netlogo 三角函数使用度数,所以计算应该是

let result rad * acos(sin(lata) * sin(latb) + cos(lata) * cos(latb) * cos(longa - longb)) * 6371

【讨论】:

  • 感谢您回答我!然而,这给出了 13.18 的结果,这也是正确的......混乱!
  • 我没有安装netlogo,所以无法实际测试。正如预期的那样,对 python 的翻译为 12.73。
  • 我刚刚尝试过 R,它也给出了 12.73 - 这可能是一个特定于 netlogo 的问题吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 2021-03-30
相关资源
最近更新 更多