`
stonefox
  • 浏览: 30983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

大圆航线,等角航线与磁差角

阅读更多
前两个数据管理的项目已经完成。最近根据工作需要,总结了一下航图,航路方面的一些概念和计算方法。

概念:
大圆航线:以通过两航路点间的大圆圈线(该两航路点与地心在同一平面)作为航线的叫大圆航线.。大圆航线上各点的真航线角不相等,但航线距离最短。

等角航线:以通过两航路点间的等角线作为航线的叫做等角航线。等角航线是一条盘向两极的螺旋形曲线,等角航线上各点的真航线角相等,但它的距离一般都比大圆航线长。

磁差角:地理南北极与地磁南北极得偏差。真方位角 = 磁方位角 + (±现在磁差)

计算公式:
Haversine formula
计算大圆航线航段距离和磁航线角。

端点:
Position 1(lat1, long1)
Position 2(lat2, long2)

航段距离:
计算公式:
R = earth’s radius (mean radius = 6,371km)
Δlat = lat2− lat1
Δlong = long2− long1
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c

JavaScript:
var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
        Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;

磁航线角:
计算公式:
θ = atan2(sin(Δlong).cos(lat2), cos(lat1).sin(lat2) − sin(lat1).cos(lat2).cos(Δlong))

JavaScript:
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).toBrng();

模型使用:
1 航段距离直接将相关参数带入公式求得。
2 磁航线角
取航路上东端点,求得Initial Bearing。
所得角度加180度取模360,再与西端点相近磁差线值加减得航路西端点磁航线角。
继而可求得东端点磁航线角。

其他关于航距和磁航线角的资料:
1 Movable Type Scripts

Calculate distance, bearing and more between two Latitude/Longitude points
http://www.movable-type.co.uk/scripts/latlong.html

2 动态航迹推测方法.pdf




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics