Haversine公式在Netlogo中提供不正确的结果

时间:2017-06-15 17:37:18

标签: gis netlogo haversine

我正在使用Netlogo的gis扩展,并且我正在尝试计算代理之间的距离(以km为单位)。 使用gis:envelope-of我可以获得代理在纬度和纬度(!)中的位置,因此我想使用Haversine公式来计算距离。我的基础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中应用的相同公式(使用RADIANS公式而不是“rad”)给我留下了12.73公里,这是该网站http://www.movable-type.co.uk/scripts/latlong.html确认的数字。

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

1 个答案:

答案 0 :(得分:2)

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

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

另外,根据我读过的文档(例如cosacos),netlogo trig函数使用度数,因此计算应该是

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