原文地址:根据两点的经纬度求方位角和距离,等作者:多乎哉不多也多亦不多乎实乃少也最近自己做的一个小东西要用到经纬度方面的计算,查遍中文网页见到的要么基本上是一帮惜字如金装大爷的“砖家”,要么就是像贴膏药一样,啪,一大堆代码往上一贴,一点说明都没有,让人看不懂,有的看了半天看懂了,结果他用的公式要么有使用局限(但没有半点声明)要么根本就是个错的。所以现在将自己几天学习来的在这里总结一下,方便后来人少走弯路。这里主要解决四个问题:1、已知两点经纬度,求一点相对于另一点方位角;2、已知两点经纬度,求两点间距离;3、已知一点经纬度及与另一点距离和方位角,求另一点经纬度;4、问题1与问题2的简化算法。注:简化算法的运算量和对系统的运算精度要求都大大降低,但只在短距离内(高纬地区建议10km以下)可以保证精度,除简化算法之外的算法可适用于地球上任意两点。这里只是出于便于理解的目的来解释“原理”,具体到不同的编程环境还要自己做化简和注意单位。 在求算前我们先对符号及单位进行约定:此处设定求B相对于A的方位角,即A为当前位置,B为目标位置Aj:A点经度Aw:A点纬度Bj:B点经度Bw:B点纬度北纬为正,南纬为负;东经为正,西经为负经纬度使用度,°,非度分或度分秒。度数未加说明均采用角度制R:地球平均半径Azimuth:方位角,以真北为0度起点,由东向南向西顺时针旋转360度A,B,C表示球面上的三个点及球面上“弧线”在该点处所夹的角a,b,c表示A,B,C三点的对“弧”两端点与地心连线所夹的角(其实这里解释成ABC三点对弧的弧度更方便)O为球心L为AB两点间球面距离(注:因我考虑欠缺,没有注意字母C大小写较难分辨,所以此处提醒读者在后面的公式中注意C的大小写。) 一、方位角的求算已知A、B两点经纬度,如何求出B相对于A的方位角?——————————————————卖关子环节,可选择性跳过———————————————————说到这里,人们或许会首先想因为地球是个球体,如果AB两点足够近(如相距1Km)可以当做平面三角形已知两临边求夹角,把两点的经度、纬度各自做差,差值作为两边的长度,再用反正切函数一算就得到了角度,似乎很有道理,但是如果将计算结果与实际测量值做比较,就会发现比较大的误差,而这种误差在某些地区甚至能用普通的量角器测量出来,其实这已经不叫误差,而叫错误了。这种近似利用平面几何知识解决问题的算法只适合于低纬度地区(例如南北纬10度),如果在高纬度使用这种方法,偏差会比较大,并且这种偏差会随着纬度的升高而大幅变大。例如,在北纬10度,,。当纬度改为北纬40度其他不变,。为什么会这样呢?其实原因就在于经线、纬线划定不同。如果把地球简化成一个球体,每条经线的长度都等于球体周长的一半,每条经线均在两极相交。但是,纬线之间互不相交,纬线所围成的圆均为“同轴”圆,所以每条纬线的长度会因纬度的不同而不同,也就是,纬度不同,1经度差所对应的球面距离是不一样的,例如,在赤道处,,;在北纬40附近,1纬度的跨度没有变,。(转不过弯来的可以去看地球仪,看看就了然了~)———
经纬度计算方位角 来自淘豆网m.daumloan.com转载请标明出处.