2017-06-15 67 views
0

我正在使用Netlogo的gis扩展,并试图计算以km为单位的代理之间的距离。 随着gis:envelope-of我可以获得经度和纬度的经纪人位置,所以我想用Haversine公式来计算距离。我的底层GIS-shape文件的投影是WGS 84.Haversine公式在Netlogo中提供不正确的结果

我已经为两个示例性点写入如下:

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证实。

任何想法,我做错了什么?提前致谢。

+0

这这里的http:// bluemm.blogspot.de/2007/01/excel-formula-to-calculate-distance.html(和GIS以及在原始问题中发布的链接与此excel公式相同) – derheine

回答

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三角函数使用度,所以计算应

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

谢谢你回答我!然而,这给出了13.18的结果,这是正确的......混乱! – derheine

+0

我没有安装netlogo,所以我实际上无法测试它。正如预期的那样,python的翻译结果为12.73。 –

+0

我刚刚试过R,它也给了12.73 - 这可能是一个netlogo特定的问题吗? – derheine