经纬度计算

来源:互联网 发布:iphone软件不受信任 编辑:程序博客网 时间:2024/04/29 09:33

地球赤道上环绕地球一周走一圈共40075.04公里,而@一圈分成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为距离。

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

 

 

经纬度计算球面距离根据实际需要,有精确和粗略的不同算法。


粗糙的算法就是把地球看成一个标准圆。
得知道地球的直径:设为D。两点的经度为X1、Y1和X2、Y2
const pi =3.14159
(((abs(X2-X1)*pi)^2 + (abs(Y2-Y1)*pi)^2)^(1/2))*D

 

 

============

关于用经纬度计算距离:

地球赤道上环绕地球一周走一圈共40075.04公里,而@一圈分成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为距离。

 

===================

 

根据经纬度计算两点间距离

球面上两点之间的距离为通过该两点的大圆上的弧长,假设有两点A(x1, y1)B(x2, y2)x为纬度,y为经度,那么弦长AB(对于单位球)有如下关系:

AB2=2*[1-cos(x2-x1)+cos(x1)*cos(x2)-cos(x1)*cos(x2)*cos(y2-y1)]

对于半径为R的球体,AB的弧长为: 2R*arcsin(AB/2)

根据经纬度计算两点间距离

球面上两点之间的距离为通过该两点的大圆上的弧长,假设有两点A(x1, y1)B(x2, y2)x为纬度,y为经度,那么AB两点之间的球面距离是多少呢?

C点为球面上与A点的纬度相同,与B点的经度相同的点,则有C的坐标为(x1, y2)OA点所在纬度圈的圆心,EB点所在纬度圈的圆心,则有OEBC四点共面,CBOE的延长线相交于点F,过B点作OC的垂线交OC于点D。由于OF垂直于A点和B点的纬度圈所在的平面,所以有OFOCOFBEOFOA,所以OCF∽△DCB,因此:

CF/CB=OC/CD,得到BF = (OC * CB) / CD                        (1)

OF/BD=OC/CD,得到OF = (OC * BD) / CD                        (2)

FOA是直角三角形,得AF2=OA2+OF2                           (3)

AC在同一个纬度圈上,得OA = OC                              (4)

对于FAC,设ACFα,由余弦定理得:

AF2=AC2 + CF2 -2*AC*CF*cosα                                  (5)

AB2=AC2 + CB2 -2*AC*CB*cosα                                 (6)

则有:

AB2=AC2*EB/OC+ BC2                                               (7)

考虑单位球,则有:

 

OC = cos(x1)BE = cos(x2)

BC= 2 sin((x1-x2)/2) ,AC = 2*OC*sin((y2-y1)/2) = 2cos(x1) sin((y2-y1)/2)

 

把上述式子代入到(7)中,化简得到:

AB2=2*[1-cos(x2-x1)+cos(x1)*cos(x2)-cos(x1)*cos(x2)*cos(y2-y1)]

经过AB的弧长为: 2*arcsin(AB/2)

对于半径为R的球体,AB的弧长为: 2R*arcsin(AB/2)

 

原创粉丝点击