1. 程式人生 > 其它 >Python 兩地之間距離計算

Python 兩地之間距離計算

技術標籤:pythonpython演算法

兩地之間距離計算

兩地之間距離計算(模組:numEx,所在檔名 num_hw.py,Level:★)
利用 Python 實現地球上兩點之間的距離計算,地球上點的位置以經緯度座標形式提供。
距離計算採用 Haversine 公式:
在這裡插入圖片描述

這裡 r 是地球半徑 6371Km, 代表點的(緯度,經度)座標。
參考網站:https://en.wikipedia.org/wiki/Haversine_formula
完成距離計算函式:
函式原型:def sphere_distance(p1, p2)
引數 p1:tuple 元組型別,二元組,(緯度,經度),座標精確到小數點後 7 位

引數 p2:tuple 元組型別,二元組,(緯度,經度),座標精確到小數點後 7 位
緯度取值範圍:[0-90],經度取值範圍:[0-180],單位均為角度;而 Haversine 公式計算
採用的是弧度,注意轉換。
返回值:如果輸入的座標資料合規,則返回兩點之間的距離,單位為 Km,保留兩位小
數;如果輸入的座標不合規,返回錯誤“Parameter Error.”

程式碼如下(函式引用)

# 題目:兩地之間距離計算

# 計算兩點p1, p2之間的距離
# p1:(緯度、經度)
# p2: (緯度、經度)
def sphere_distance(p1, p2):
    import math
    if
p1[0] < 0 or p2[0] < 0 or p1[0] > 90 or p2[0] > 90 or p1[1] < 0 or p2[1] < 0 or p1[1] > 180 or p2[1] > 180: return 'Parameter Error.' r = 6371 i1 = (p1[0] / 180) * math.pi j1 = (p1[1] / 180) * math.pi i2 = (p2[0] / 180) * math.pi j2 = (p2[1] / 180) * math.pi d = 2 *
r * math.asin(math.sqrt((math.sin((i2 - i1) / 2)) ** 2 + math.cos(i1) * math.cos(i2) * (math.sin((j2 - j1) / 2)) ** 2)) return d