根据经纬度计算两个点之间的距离

简介: 根据经纬度计算两个点之间的距离

代码直接放到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))
相关文章
|
6月前
|
JavaScript 前端开发 Java
根据地球上任意两点的经纬度计算两点间的距离
根据地球上任意两点的经纬度计算两点间的距离
286 2
|
6月前
|
图形学 计算机视觉
GEE错误——如何将原有矢量将维度转化为地理坐标系,重投影坐标坐标无法实现?
GEE错误——如何将原有矢量将维度转化为地理坐标系,重投影坐标坐标无法实现?
66 0
|
6月前
根据经纬度计算两点距离的方法
根据经纬度计算两点距离的方法
|
6月前
|
Python
计算两个位置经纬度距离
计算两个位置经纬度距离
124 0
|
数据挖掘 Python
|
定位技术 API 容器
百度地图API开发:map.getDistance计算两点之间的距离(直线距离)
百度地图API开发:map.getDistance计算两点之间的距离(直线距离)
924 0
如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
|
定位技术
计算两GPS点之间的距离(比较精确)
计算两GPS点之间的距离(比较精确)
153 0
解决计算 0:00 到 12:00之间任意一个时间时针和分针的夹角。
解决计算 0:00 到 12:00之间任意一个时间时针和分针的夹角。
143 0