傳入兩點經緯度,求出距離
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類裡面有計算兩點之間的距離這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多...
根據兩點經緯度計算距離
這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯圈 構成這些圓圈的線段,叫做緯線。我們把赤道定為...