Python版本 根據兩點經緯度求距離

2021-10-05 06:12:12 字數 953 閱讀 4639

傳入兩點經緯度,求出距離

def calcdistance(lng_a, lat_a, lng_b, lat_b):

"""根據兩個點的經緯度求兩點之間的距離,注意需要乘以1000,因為返回的單位為千公尺

:param lng_a:

:param lat_a:

:param lng_b:

:param lat_b:

:return:

"""ra = 6378.140

rb = 6356.755

flatten = (ra - rb) / ra

rad_lat_a = radians(lat_a)

rad_lng_a = radians(lng_a)

rad_lat_b = radians(lat_b)

rad_lng_b = radians(lng_b)

pa = atan(rb / ra * tan(rad_lat_a))

pb = atan(rb / ra * tan(rad_lat_b))

xx = acos(sin(pa) * sin(pb) + cos(pa) * cos(pb) * cos(rad_lng_a - rad_lng_b))

c1 = (sin(xx) - xx) * (sin(pa) + sin(pb)) ** 2 / cos(xx / 2) ** 2

# 經測試當傳入這兩個點的經緯度一樣時會返回 *

if sin(xx/2)==0:

return '*'

c2 = (sin(xx) + xx) * (sin(pa) - sin(pb)) ** 2 / sin(xx / 2) ** 2

dr = flatten / 8 * (c1 - c2)

distance = ra * (xx + dr)

return distance

```

根據兩點經緯度計算距離

這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯圈 構成這些圓圈的線段,叫做緯線。我們把赤道定為...

根據兩點經緯度計算距離

android sdk 中提供了location類裡面有計算兩點之間的距離這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多...

根據兩點經緯度計算距離

這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯圈 構成這些圓圈的線段,叫做緯線。我們把赤道定為...