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

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

代码直接放到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))
相关文章
|
4月前
|
JavaScript 前端开发 Java
根据地球上任意两点的经纬度计算两点间的距离
根据地球上任意两点的经纬度计算两点间的距离
118 2
|
算法 JavaScript 前端开发
84坐标系、02坐标系、百度坐标之间相互转换算法
最近有同学反馈之前的坐标系转换有问题,对之前的工具类进行了修正。 一、地图坐标转换java工具类 包含84坐标系、02坐标系、百度地图、高德地图、腾讯地图坐标之间相互转换的算法 wgs84ToGcj02:将 WGS84 坐标系下的经纬度转换为 GCJ02 坐标系下的经纬度。 gcj02ToWgs84:将 GCJ02 坐标系下的经纬度转换为 WGS84 坐标系下的经纬度。 gcj02ToBd09:将 GCJ02 坐标系下的经纬度转换为 BD09 坐标系下的经纬度。 bd09ToGcj02:将 BD09 坐标系下的经纬度转换为 GCJ02 坐标系下的经纬度。
1021 0
84坐标系、02坐标系、百度坐标之间相互转换算法
|
4月前
根据经纬度计算两点距离的方法
根据经纬度计算两点距离的方法
|
4月前
|
Python
计算两个位置经纬度距离
计算两个位置经纬度距离
92 0
|
定位技术 API 容器
百度地图API开发:map.getDistance计算两点之间的距离(直线距离)
百度地图API开发:map.getDistance计算两点之间的距离(直线距离)
883 0
如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
|
定位技术
计算两GPS点之间的距离(比较精确)
计算两GPS点之间的距离(比较精确)
141 0
|
Java
java 经纬度处理、计算两地的距离、获取当前一定距离以内的经纬度值
java 经纬度处理、计算两地的距离、获取当前一定距离以内的经纬度值
409 0
根据经纬度计算距离
#region 计算经纬度 private const double EARTH_RADIUS = 6378137; /// /// 计算两点位置的距离,返回两点的距离,单位 米 /// 该公式为GOOGLE提供,误差小于0.
1083 0