91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么實現兩個經緯度點之間的距離和方位角的方法

發布時間:2021-04-07 09:56:10 來源:億速云 閱讀:359 作者:小新 欄目:開發技術

這篇文章主要介紹python怎么實現兩個經緯度點之間的距離和方位角的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1. 求兩個經緯點的方位角,P0(latA, lonA), P1(latB, lonB)(很多博客寫的不是很好,這里總結一下)

def getDegree(latA, lonA, latB, lonB):
  """
  Args:
    point p1(latA, lonA)
    point p2(latB, lonB)
  Returns:
    bearing between the two GPS points,
    default: the basis of heading direction is north
  """
  radLatA = radians(latA)
  radLonA = radians(lonA)
  radLatB = radians(latB)
  radLonB = radians(lonB)
  dLon = radLonB - radLonA
  y = sin(dLon) * cos(radLatB)
  x = cos(radLatA) * sin(radLatB) - sin(radLatA) * cos(radLatB) * cos(dLon)
  brng = degrees(atan2(y, x))
  brng = (brng + 360) % 360
  return brng

2. 求兩個經緯點的距離函數:P0(latA, lonA), P1(latB, lonB)

def getDistance(latA, lonA, latB, lonB):
  ra = 6378140 # radius of equator: meter
  rb = 6356755 # radius of polar: meter
  flatten = (ra - rb) / ra # Partial rate of the earth
  # change angle to radians
  radLatA = radians(latA)
  radLonA = radians(lonA)
  radLatB = radians(latB)
  radLonB = radians(lonB)
 
  pA = atan(rb / ra * tan(radLatA))
  pB = atan(rb / ra * tan(radLatB))
  x = acos(sin(pA) * sin(pB) + cos(pA) * cos(pB) * cos(radLonA - radLonB))
  c1 = (sin(x) - x) * (sin(pA) + sin(pB))**2 / cos(x / 2)**2
  c2 = (sin(x) + x) * (sin(pA) - sin(pB))**2 / sin(x / 2)**2
  dr = flatten / 8 * (c1 - c2)
  distance = ra * (x + dr)
  return distance

以上是“python怎么實現兩個經緯度點之間的距離和方位角的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

策勒县| 高唐县| 成武县| 阳朔县| 墨玉县| 中西区| 定西市| 镇远县| 凤阳县| 杭锦后旗| 普安县| 金堂县| 晋州市| 龙江县| 连平县| 江达县| 白水县| 体育| 兰坪| 门源| 礼泉县| 南皮县| 荃湾区| 沙雅县| 乡城县| 唐河县| 桐庐县| 涞水县| 澎湖县| 湄潭县| 潍坊市| 维西| 滨州市| 手游| 吉安县| 阿巴嘎旗| 淄博市| 霍林郭勒市| 皋兰县| 洛扎县| 额济纳旗|