Gis Haversine公式在Netlogo中产生错误结果

Gis Haversine公式在Netlogo中产生错误结果,gis,netlogo,haversine,Gis,Netlogo,Haversine,我正在使用Netlogo的gis扩展,并试图计算代理之间的距离(以km为单位)。 使用gis:envelope of我可以获得代理在度(!)纬度和经度上的位置,因此我想使用哈弗森公式来计算距离。我的基础GIS形状文件的投影是WGS 84 我为两个示范点所写的内容如下: to haversine let lata 31.8930795682288 let longa 36.0898369172224 let latb 31.9964498913126 let longb 36.031832982

我正在使用Netlogo的gis扩展,并试图计算代理之间的距离(以km为单位)。 使用
gis:envelope of
我可以获得代理在度(!)纬度和经度上的位置,因此我想使用哈弗森公式来计算距离。我的基础GIS形状文件的投影是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中应用的相同公式(使用弧度公式而不是“rad”)给我留下了12.73公里的距离,这一数字得到了本网站的证实


知道我做错了什么吗?提前感谢。

计算
结果的公式不正确。它看起来像是反转了
sin
cos
。使用

let result acos(sin(rad * lata) * sin(rad * latb) + cos(rad * lata) * cos(rad * latb) * cos(rad * (longa - longb))) * 6371
另外,根据我读过的文档(例如和),netlogo trig函数使用度,因此计算应该是

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

计算
结果的公式不正确。它看起来像是反转了
sin
cos
。使用

let result acos(sin(rad * lata) * sin(rad * latb) + cos(rad * lata) * cos(rad * latb) * cos(rad * (longa - longb))) * 6371
另外,根据我读过的文档(例如和),netlogo trig函数使用度,因此计算应该是

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

这里(和GIS以及原始问题中发布的链接产生的结果与此excel公式相同)这里(和GIS以及原始问题中发布的链接产生的结果与此excel公式相同)谢谢您的回答!然而,这给出了13.18的结果,这是正确的…混乱!我没有安装netlogo,因此无法实际测试它。正如预期的那样,将python翻译为12.73。我刚刚尝试了R,它也给出了12.73-这可能是netlogo特有的问题吗?谢谢您的回答!然而,这给出了13.18的结果,这是正确的…混乱!我没有安装netlogo,因此无法实际测试它。正如预期的那样,翻译成python会得到12.73。我刚刚试过R,它也会得到12.73-这可能是netlogo特有的问题吗?