Kei*_*ler 0 algorithm pseudocode geospatial
有没有人有一个算法来确定从一个纬度/经度到另一个的方向(伪代码):
CalculateHeading( lat1, lon1, lat2, long2 ) returns string heading
Run Code Online (Sandbox Code Playgroud)
标题是NW,SW,E等.
基本上,我在地图上有两个点我希望得到一个方向的一般概念,考虑到东50英里和北一英里只是东方而不是东北.
Dea*_*ing 17
该站点具有基本算法:
// in javascript, not hard to translate...
var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1)*Math.sin(lat2) -
Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
var brng = Math.atan2(y, x).toDeg();
Run Code Online (Sandbox Code Playgroud)
更新:请参阅此处以获取完整的算法映射数学和Javascript
那会给你一个0到360之间的数字,然后只需要进行简单的查找:
var bearings = ["NE", "E", "SE", "S", "SW", "W", "NW", "N"];
var index = brng - 22.5;
if (index < 0)
index += 360;
index = parseInt(index / 45);
return(bearings[index]);
Run Code Online (Sandbox Code Playgroud)
重要的是要注意,当你在地球上移动时,你的方位实际上会发生变化.上面的算法显示了你的初始方位,但是如果你是长途旅行,当你到达目的地时你的方位会有很大差异(如果你只是在短距离[<几百公里]旅行,那么它可能赢了变化不足以成为一个问题.