首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >根据两经纬度点计算距离公式推导

根据两经纬度点计算距离公式推导

原创
作者头像
囚兔
修改2019-01-30 14:00:46
4.5K5
修改2019-01-30 14:00:46
举报
文章被收录于专栏:IT杂记IT杂记IT杂记

问题

已知地球上的点E经纬度为(J1, W1),点F经纬度为(J2, W2),求两点间最短的球面距离。

推导

步骤1

假设地球是一个标准的球体,设球心为O, 地球半径为r。

earth_2_point_distance1.png
earth_2_point_distance1.png

线段OE, OF, EF构成一个等腰三角形,OE=OF=r,定义∠EOF弧度为δ,定义E,F两点的最短球面距离为L

则有:

L= r*δ

根据余弦定理有:

cosδ=\frac {OE^2+OF^2-EF^2} {2*OE*OF}

将OE=OF=r代入得:

cosδ=1-{\frac {EF^2} {2*r^2} }
δ=arccos(1-{\frac {EF^2} {2*r^2} })

最后可得:

L=r*arccos(1-{\frac {EF^2} {2*r^2} }) \tag{1}

步骤2

下面来求EF。

earth_2_point_distance.png
earth_2_point_distance.png

图中,B点为北极点,C点和D点位于赤道上,OB,OC,OD构造空间直角坐标系,OCD即赤道面。过E点做垂线垂直于面OCD交于E1点,过F点做垂线垂直于面OCD交于F1点,过F点做垂线垂直于线EE1于F2点。

定义\angle EOE_1弧度为α,\angle FOF_1弧度为β,\angle E_1OF_1弧度为γ,其实α即为E点的纬度弧度,β即为F点的纬度弧度,γ即为F点和E点的经度差的弧度。

勾股定理有:

EF^2=EF_2 ^2 + FF_2 ^2

又有:

EF_2=EE_1-FF_1
FF_2=E_1F_1

则有:

EF^2=(EE_1-FF_1)^2 + E_1F_1^2 \tag{2}

\angle OE_1E\angle OF_1F为直角,则有:

EE_1 = OE*sinα = r*sinα \tag{3}
FF_1 = OF*sinβ = r*sinβ \tag{4}

根据余弦定理有:

E_1F_1^2=OE_1^2 + OF_1^2 - 2*OE_1*OF_1*cosγ

又有:

OE_1=OE*cosα=r*cosα
OF_1=OF*cosβ=r*cosβ

则有:

E_1F_1^2=r^2*cos^2α + r^2*cos^2β - 2r^2*cosα*cosβ*cosγ
E_1F_1^2=r^2(cos^2α + cos^2β - 2*cosα*cosβ*cosγ) \tag{5}

将公式 (3),(4),(5)代入 (2),并整理得:

EF^2=r^2(sin^2α+cos^2α) + r^2(sin^2β+cos^2β) - 2r^2sinαsinβ - 2r^2cosαcosβcosγ
EF^2=2r^2(1 - sinαsinβ - cosαcosβcosγ)

代入公式(1)得:

L=r*arccos(sinαsinβ + cosαcosβcosγ)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 推导
    • 步骤1
      • 步骤2
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档