求大神帮忙解决以下问题,如何通过两个地点的经度和纬度,得到他们之间的实际距离?

我做一个课题时需要分析一组实际数据,但是数据里只给出了一些城市的经度纬度,我想得到这些城市之间的实际距离,请问有什么现成的算法或者程序吗?谢谢

由于地球是个近似球体,故首先要知道地球的半径R,两地的距离就是一段弧长l。根据两地的经纬度可以算出两地所在弧的圆心角α;弧长公式:n是圆心角度数,r是半径,α是圆心角弧度。 l=nπr÷180 或 l=n/180·πr 或 l=|α|r ,求出的l 则为两地的距离。追问

额,怎么把关键的部分跳过了呢,请问怎么通过经纬度求圆心角呢

追答

假设经纬度为B地为(60°N,120°E),C地为:(30°N,100°E),求圆心角∠BOC;取A为(30°N,120°E),D为(60°N,100°E),ABCD构成矩形,由于是球体,所以有OA=OB=OC=OD=R;所以COS∠AOB=向量OA·向量OB/R^2,COS∠AOC=向量OA·向量OC/R^2,COS∠BOC=向量OB·向量OC/R^2;得到公式:COS∠BOC=COS∠AOB×COS∠AOC×R^2,知道∠AOB=(120-100)°=20°,∠AOC=(60-30)°=30°,R已知,则可得圆心角∠BOC。

追问

谢谢,不过指出一个问题,就是经度之差只有在赤道上是等于圆心角的,不在赤道上的时候需要乘以cos(纬度),不过还是谢谢啦,其实我想结合你的答案加上Vicky2zj 的答案,如果能分开给分就好了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-13
用经纬度计算距离:

地球赤道上环绕地球一周走一圈共40075.04km,而地球一圈分成360°,而每1°(度)有60,每一度一秒在赤道上的长度计算如下:

40075.04km/360°=111.31955km

111.31955km/60=1.8553258km=1855.3m

而每一分又有60秒,每一秒就代表1855.3m/60=30.92m

任意两点距离计算公式为

d=111.12cos{1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]}

其中A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离。

至于比例尺计算就不废话了追问

请问计算公式中的111.12是怎么来的,计算式能简单推一下吗,可以加分,谢谢

第2个回答  2011-07-13
这个……用勾股定理应该可以,把他们的实际距离看成是斜边,求出俩直角边就可以了,经度之间的距离是定了的,两个经度之间的距离是定了的,可纬度之间的距离我不确定。仅提供个思路哈哈!
第3个回答  2011-07-13
两地相差的经度*111.11=两地的实际距离
两地相差的纬度*111.11*Cos当地纬度=两地的实际距离
相似回答