Rumah masalah biasa 【数学公式及推导】根据经纬度计算地面两点间的距离

【数学公式及推导】根据经纬度计算地面两点间的距离

Oct 22, 2020 am 11:38 AM
Latitud dan longitud

1.假设:地球是正球体。地面两点A和B的经纬度坐标分别为(Aj,Aw)和(Bj,Bw),地球半径R取平均值6371km。

2.建立三维直角坐标系

地球球心为原点O,地轴为Z轴,北极方向为Z轴正方向,赤道平面为X轴和Y轴所在平面,在该平面上地心到零度经线的方向为X轴正方向,根据右手定则确定Y轴正方向。

设点A的三维坐标为(Ax,Ay,Az),点B的三维坐标为(Bx,By,Bz)

3.思路

A、B、O三点所在平面与地球相交形成一个半径为R的圆,求AB间的地面距离就是求该圆上圆弧AB的长度。可由弧长等于半径乘以圆心角公式求得。

由于R是确定的,只要获得OA与OB的夹角θ就可以获得弧AB的长度。弧AB=R*θ。
角θ可通过向量公式求得:

向量OA*向量OB=|OA||OB|cosθ。

cosθ=向量OA*向量OB/|OA||OB|
     =(Ax*Bx+Ay*By+Az*Bz)/R*R
Salin selepas log masuk

4.用经纬度坐标表示三维直角坐标:

Ax=R*cosAw*cosAj
Ay=R*cosAw*sinAj
Az=R*sinAw
Bx=R*cosBw*cosBj
By=R*cosBw*sinBj
Bz=R*sinBw
Salin selepas log masuk

代入可得

cosθ=cosAw*cosAj*cosBw*cosBj+cosAw*sinAj*cosBw*sinBj+sinAw*sinBw
     =cosAw*cosBw(cosAj*cosBj+sinAj*sinBj)+sinAw*sinBw
     =cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw
θ=arccos[cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw]
Salin selepas log masuk

5.综上可得根据经纬度计算地面两点间距离的公式:

弧AB=R*arccos[cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw]
Salin selepas log masuk

说明:

类似的公式推导大家以前都做过,时间久了可能会忘记一些东西,于是我把它记了下来,以备查阅。

由于三角函数变换多端,该公式的表现形式不止一种,只要前提假设是一样的,那么在数学上应该是等价并可相互推导的。
在实际程序代码中用的时候需要注意单位问题,比如从定位器获得的经纬度单位是度,而三角计算的方法很可能用的单位是弧度,再比如长度单位用的是km还是m等。

推荐:《编程视频

Atas ialah kandungan terperinci 【数学公式及推导】根据经纬度计算地面两点间的距离. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)