1. 程式人生 > 其它 >根據經緯度計算兩個點之間的距離

根據經緯度計算兩個點之間的距離

程式碼直接放到utils目錄下

from haversine import haversine
from math import sin, asin, cos, radians, fabs, sqrt


def hav(theta):
    """sin方"""
    s = sin(theta / 2)
    return s * s

def get_dis_by_haversine(lon_lat_first, lon_lat_second):
    """
        獲取經緯度方式一
        引數:經度 緯度
    """
    lon_lat_first 
= (lon_lat_first[1], lon_lat_first[0]) lon_lat_second = (lon_lat_second[1], lon_lat_second[0]) dis = haversine(lon_lat_first, lon_lat_second) return dis * 1000 def get_distance_by_hav(lon_lat_first, lon_lat_second): """ 獲取經緯度方式二 引數:經度 緯度 """ EARTH_RADIUS = 6371 #
地球平均半徑,6371km lng0 = lon_lat_first[0] lat0 = lon_lat_first[1] lng1 = lon_lat_second[0] lat1 = lon_lat_second[1] """緯度 經度 """ """用haversine公式計算球面兩點間的距離。""" # 經緯度轉換成弧度 lat0 = radians(lat0) lat1 = radians(lat1) lng0 = radians(lng0) lng1 = radians(lng1) dlng = fabs(lng0 - lng1) dlat
= fabs(lat0 - lat1) h = hav(dlat) + cos(lat0) * cos(lat1) * hav(dlng) distance = 2 * EARTH_RADIUS * asin(sqrt(h)) return distance * 1000 if __name__ == '__main__': """ 說明:直接匯入兩個函式, 用哪個都可以 傳參:兩個元組 格式(經度,緯度),(經度,緯度) """ # 輸入的格式:經度,緯度 # 這兩個測試點不要動 lon_lat_first = (113.0612727, 23.0475255) lon_lat_second = (113.0612206, 23.0474695) print(get_dis_by_haversine(lon_lat_first, lon_lat_second)) print(get_distance_by_hav(lon_lat_first, lon_lat_second))
View Code