国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

這篇具有很好參考價(jià)值的文章主要介紹了根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

摘要

1.半正矢公式(Haversine Formula)介紹

2.半正矢公式應(yīng)用

3.半正矢公式計(jì)算

3.1 主要思路

3.2 計(jì)算步驟

3.2.1 平面向量計(jì)算方法

3.2.2 空間向量計(jì)算方法


摘要

寫本文的出發(fā)點(diǎn)是需要在Qlik中根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)間的距離。我在社區(qū)上搜到了相關(guān)公式的分享,這個(gè)公式叫做“半正矢公式”。對(duì)于“半正矢”知之甚少的我,決定從頭到尾將公式計(jì)算一遍,并通過這篇文章記錄所有的步驟,希望它能對(duì)需要的人有所幫助。這也算是溫習(xí)高中所學(xué)的三角函數(shù)了。

本文的部分圖片源自其他網(wǎng)站,剩下的圖都是通過GeoGebra制作的。這個(gè)工具非常方便,推薦大家使用。

(GeoGebra - the world’s favorite, free math tools used by over 100 million students and teachers)

1.半正矢公式(Haversine Formula)介紹

公式:?

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

(i)

如圖 (i), OAC是一個(gè)圓,O是其圓心,A和C是圓上的點(diǎn),r 是⊙OAC的半徑。

設(shè):r = 1, 那么 OA = OC = r =1;

過點(diǎn)A做一條垂線,交線段OC于點(diǎn)B,∠OBA=90°。

設(shè):∠AOB=θ;

因此,AB = sinθ, OB = cosθ, BC = 反正弦 = 1 – cosθ.

所謂的半正矢就是“一半的反正弦”(Haversine = “half reversed sin”),所以:

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

最后得出:

2.半正矢公式應(yīng)用

回到應(yīng)用場(chǎng)景,已知地球上的兩個(gè)點(diǎn)A和B,現(xiàn)在我們想知道這兩點(diǎn)之間的最短距離。地球可以近似看作為一個(gè)球體,那么AB間的最短距離就是過AB兩點(diǎn)的大圓圓弧,這個(gè)大圓是地球的內(nèi)切圓,半徑和圓心點(diǎn)都于地球相同。

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

(ii)

設(shè):A點(diǎn)坐標(biāo) = (?1, λ1); B點(diǎn)坐標(biāo) = (?2, λ2);

? = 緯度, λ = 經(jīng)度

d = A 和 B 的最短距離

R = 地球半徑 = 6371 km

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

把 ???替換為 Haversin(θ)? 可得:

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?

過去的水手們可以查余弦函數(shù)、半正矢函數(shù)和半正矢函數(shù)的逆函數(shù)的數(shù)值表,從而求出距離d。只要有數(shù)值表,還是挺方便的。[1]


[1]https://plus.maths.org/content/lost-lovely-haversine

3.半正矢公式計(jì)算

3.1 主要思路

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

(iii)

如圖 (iii), ⊙OAB 是地球的內(nèi)切圓,圓心為O。

距離計(jì)算步驟:

  1. 計(jì)算AB,即點(diǎn)A和B之間的直線距離;
  2. 通過AB和地球半徑R,計(jì)算∠AOB 的角度;
  3. 通過∠AOB 和R計(jì)算 ,即⊙ OAB上AB的弧長(zhǎng),這個(gè)弧長(zhǎng)就是最短距離。

3.2 計(jì)算步驟

3.2.1 平面向量計(jì)算方法

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

?(iv)

與第2節(jié)相同,設(shè):

A點(diǎn)坐標(biāo) = (?1, λ1); B點(diǎn)坐標(biāo) = (?2, λ2);

? = 緯度,λ = 經(jīng)度;

d = AB間的最短距離;

R = 地球半徑 = 6371 km;

O = 地球球心;

N = 北極點(diǎn);

點(diǎn)C和E與點(diǎn)A在同一條經(jīng)度線上;

點(diǎn)D和F與點(diǎn)B在同一條經(jīng)度線上;

點(diǎn)D 與點(diǎn)A在同一條緯度線上;

點(diǎn)C 與點(diǎn)B在同一條緯度線上;

點(diǎn)E和F又是在赤道上,點(diǎn)A所在經(jīng)度線與點(diǎn)B所在經(jīng)度線相較于北極點(diǎn)。

可得:

C點(diǎn)坐標(biāo) = (?2, λ1); D點(diǎn)坐標(biāo) = (?1, λ2);

E點(diǎn)坐標(biāo) = (0, λ1); F點(diǎn)坐標(biāo) = (0, λ2);

引入 ?:

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

(v)

如圖(v),OXY是一個(gè)圓,設(shè)r 為⊙OXY的半徑,且r = 1;

OX = OY = r = 1, OZ是線段XY的垂線;

設(shè)∠XOY=θ,那么∠XOZ=∠YOZ=θ/2;

所以 XZ=? , 且 XY=2XZ= 。

回到圖 (iv), ∠AOC = ?2 – ?1;

因?yàn)?OA = OC =R,所以 AC =?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ;

同理,BD = AC;EF = 根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ;

點(diǎn)O’ 是點(diǎn)A和點(diǎn)D所在圓的圓心,O’A 長(zhǎng)度等于圓的半徑。

過點(diǎn)A做一條垂線,相交OE于G,∠AOG = ∠AOE = ?1;

所以 :根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?;

由于 ∠GOO’ = ∠AGO = 90°,OG = O’A,所以 O’A =根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ;

∠AO’D = λ2 – λ1, 可得 AD =根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

同理, BC =?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ;

知道AD和BC的長(zhǎng)度后,我們?cè)诘妊菪蜛DBC中就可以計(jì)算AB的長(zhǎng)度了。

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

?(vi)

在等腰梯形ADBC中,過點(diǎn)A做一條垂線相交BC于點(diǎn)E。

那么:

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ; ?

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ;

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?;

現(xiàn)在,AB線段的長(zhǎng)度已經(jīng)計(jì)算出來,接下來就是最后一步計(jì)算 的弧長(zhǎng)。

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

(vii)

?

如圖(vii),⊙OAB 是地球的內(nèi)接圓,圓心為O,OA = R.

設(shè):AC = √a, ∠AOB = b, ∠OCA = 90°;

那么 AC = AB/2;

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?;

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?;

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?;?

?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?;

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ???????

?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?;

?

把 ???替換為 Haversin(θ)? :根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ?

與第二節(jié)的公式一致,計(jì)算完畢。


或者我們可以用正切函數(shù)tan:

?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ???????

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ???????

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ???????

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ???????

這與Qlik 社區(qū)分享的計(jì)算公式一致[2]。


[2] https://community.qlik.com/t5/QlikView-App-Dev/Haversine-formula-to-find-distance-between-two-lat-long-points/m-p/234630

3.2.2 空間向量計(jì)算方法

如通過空間向量計(jì)算距離,我們需要把經(jīng)緯度的坐標(biāo)轉(zhuǎn)換為三維空間坐標(biāo)。

如圖 (viii),我們建立了一個(gè)坐標(biāo)系,Z軸就是地軸所在的軸,平面XOY是赤道所在的平面,平面XOZ是本初子午線所在的平面。A點(diǎn)是地球上任意一點(diǎn)。

設(shè):A點(diǎn)坐標(biāo) = (?1, λ1),R是地球半徑;

A 點(diǎn)的空間坐標(biāo) = (X1, Y1, Z1)

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

?(viii)

過A點(diǎn)做一條垂線相交平面XOY于A’點(diǎn),則:

?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟;

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟

X1 = OC, Y1 = CA’, Z1 = A’A

因此,根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ;

同理,我們有一點(diǎn) B (?2, λ2),則?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ;

那么:

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ???????

?設(shè)根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ,那么我們可通過余弦定理計(jì)算θ 的值:

?根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ???????

根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟 ???????

?把cos(θ) 替換為 Haversin(θ),結(jié)果與上文等價(jià)。

參考文章

Haversine formula to find distance between two lat... - Qlik Community - 234630

Lost but lovely: The haversine | plus.maths.org

地理空間距離計(jì)算及優(yōu)化(根據(jù)兩個(gè)點(diǎn)經(jīng)緯度計(jì)算距離)_ArthurKingYs的博客-CSDN博客_兩個(gè)經(jīng)緯度算距離公式及方法

半正矢公式(Haversine公式)

如何計(jì)算地球上兩點(diǎn)的距離(附公式推導(dǎo))_呆呆papa的博客-CSDN博客_地球兩點(diǎn)距離文章來源地址http://www.zghlxwxcb.cn/news/detail-409196.html

到了這里,關(guān)于根據(jù)經(jīng)緯度計(jì)算地球上兩點(diǎn)之間的距離——Haversine公式介紹及計(jì)算步驟的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • mysql根據(jù)經(jīng)緯度計(jì)算距離

    要在MySQL中根據(jù)經(jīng)緯度計(jì)算距離,你可以使用以下方法: 使用Haversine公式:Haversine公式是一種常用的方法,用于計(jì)算兩個(gè)球面上點(diǎn)之間的距離。下面是一個(gè)示例查詢,展示如何在MySQL中使用Haversine公式計(jì)算經(jīng)緯度距離: 在上面的查詢中, your_table 是包含經(jīng)度和緯度信息的表。

    2024年02月14日
    瀏覽(36)
  • ElasticSearch - 根據(jù)經(jīng)緯度,簡(jiǎn)單搜索指定距離范圍內(nèi)的數(shù)據(jù)

    ElasticSearch - 根據(jù)經(jīng)緯度,簡(jiǎn)單搜索指定距離范圍內(nèi)的數(shù)據(jù)

    ES的地圖檢索方式 ES支持的地圖檢索方式有以下幾種; geo_distance geo_bounding_box geo_polygon 1、 geo_distance :直線距離檢索,如給定點(diǎn)A,要求返回地圖上距離點(diǎn)A三千米的商家(點(diǎn)外賣場(chǎng)景) 2、查找索引內(nèi)距離北京站(116.433733,39.908404)3000米內(nèi)的點(diǎn) geo_distance涉及的參數(shù)如下 location:確

    2024年02月14日
    瀏覽(17)
  • JAVA計(jì)算兩經(jīng)緯度間的距離

    JAVA計(jì)算兩經(jīng)緯度間的距離

    無需依賴外部jar,可直接計(jì)算距離。DistanceUtil.java 可根據(jù)精度來判斷使用哪種方式(BigDecimal,double)。 在使用時(shí)具體保留位數(shù)可自行設(shè)置。 添加第三方j(luò)ar包。 直接采用第三方j(luò)ar包中的工具進(jìn)行計(jì)算。DistanceUtil.java 將其結(jié)果放在一起對(duì)比,會(huì)發(fā)現(xiàn)第三方j(luò)ar,Sphere更精準(zhǔn)一些。

    2024年02月14日
    瀏覽(32)
  • 【Python】一行代碼計(jì)算兩經(jīng)緯度點(diǎn)的距離及夾角

    【Python】一行代碼計(jì)算兩經(jīng)緯度點(diǎn)的距離及夾角

    2022.2.10更新,Python有現(xiàn)成的包可以直接調(diào)用。 geographiclib庫 https://pypi.org/project/geographiclib/ 用法說明見博客: python 計(jì)算地球上兩點(diǎn)距離和方位角(bearing)的包geographiclib_梓沂的博客-CSDN博客_geodesic python 通過經(jīng)緯度計(jì)算地圖上兩點(diǎn)的距離及方位角,百度的結(jié)果是許多個(gè)人寫的函

    2023年04月11日
    瀏覽(18)
  • 手機(jī)上獲取地圖某個(gè)定位的經(jīng)緯度坐標(biāo)的方法 - 查詢經(jīng)度、緯度 - 百度地圖app、高德地圖app、Earth地球

    手機(jī)上獲取地圖某個(gè)定位的經(jīng)緯度坐標(biāo)的方法 - 查詢經(jīng)度、緯度 - 百度地圖app、高德地圖app、Earth地球

    拖動(dòng)、定位、獲得左上角的 東經(jīng)、北緯等信息,就是經(jīng)度、緯度了。 手機(jī)安裝app 蘋果: Earth-地球 安卓、鴻蒙: Earth地球 ? 打開軟件,拖動(dòng)地圖 ? 左上角的坐標(biāo)就是 經(jīng)度、緯度 ? ? 百度地圖app、高德地圖app都無法獲取坐標(biāo)、經(jīng)度、緯度 ? 手機(jī)也可以用 網(wǎng)頁版坐標(biāo)拾取系

    2024年02月09日
    瀏覽(25)
  • 高德地圖根據(jù)經(jīng)緯度獲取地址信息

    高德地圖根據(jù)經(jīng)緯度獲取地址信息

    主要是使用高德里面 地理編碼與逆地理編碼 的 getAddress 這個(gè)方法, 根據(jù)逆向地理編碼:將地理坐標(biāo)(經(jīng)緯度)轉(zhuǎn)換成地址描述信息,對(duì)應(yīng)為AMap.Geocoder的getAddress方法。 具體使用的代碼為 最后看效果 這是傳的經(jīng)緯度與解析出來的地理位置 如果需要正向解析將地理位置變成經(jīng)

    2024年02月11日
    瀏覽(23)
  • 高德根據(jù)經(jīng)緯度,查詢所在位置信息

    高德根據(jù)經(jīng)緯度,查詢所在位置信息

    根據(jù)JSON對(duì)象獲取信息 String cityInfo = GaoDeUtils.getAddressByJWD(request.getClog(), request.getClat()); JSONObject resultSucces = JSONObject.parse(cityInfo); JSONObject addr=resultSucces.getJSONObject(“regeocode”); AddressComponent addressComponent = JSON.parseObject(JSON.toJSONString(addr.get(“addressComponent”)), AddressComponent.class); 創(chuàng)

    2024年02月08日
    瀏覽(19)
  • 高德百度騰訊之間經(jīng)緯度的轉(zhuǎn)換

    高德百度騰訊之間經(jīng)緯度的轉(zhuǎn)換

    提示:這里可以添加本文要記錄的大概內(nèi)容: 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 百度地圖: 高德地圖: 騰訊地圖 最后轉(zhuǎn)換結(jié)果 可知,高德和騰訊使用的編碼方式是一樣的,所以最后轉(zhuǎn)換的經(jīng)緯度基本一樣

    2024年02月13日
    瀏覽(24)
  • NC文件根據(jù)經(jīng)緯度提取點(diǎn)上數(shù)值

    NC文件根據(jù)經(jīng)緯度提取點(diǎn)上數(shù)值

    Hello,Hello,Hello,大家好,時(shí)隔上一次更新已經(jīng)很久了,今天主要和大家分享一組簡(jiǎn)單的代碼,來提取NC文件中某一點(diǎn)的數(shù)值! 本次實(shí)例數(shù)據(jù)依舊使用喜聞樂見的NCEP數(shù)據(jù),數(shù)據(jù)使用的是多層氣溫。或者可以直接點(diǎn)擊這里下載 這個(gè)就是下載好的數(shù)據(jù): 大家可以看一下,這個(gè)數(shù)

    2024年02月05日
    瀏覽(34)
  • Python根據(jù)經(jīng)緯度在地圖上顯示(folium)

    Python根據(jù)經(jīng)緯度在地圖上顯示(folium)

    1、location地圖中心點(diǎn) 經(jīng)緯度,list 或者 tuple 格式,順序?yàn)?latitude(緯度), longitude(經(jīng)度) 2、zoom_start地圖等級(jí) 縮放值,默認(rèn)為 10,值越大比例尺越小,地圖放大級(jí)別越大 3、tiles 顯示樣式,默認(rèn)*‘OpenStreetMap’*,也就是開啟街道顯示;也有一些其他的內(nèi)建地圖樣式,如’Stamen T

    2024年02月14日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包