1 计算两点之间的距离

基于两点的经纬度计算两点之间的距离(米)

def calculate_distance(jing1, wei1, jing2, wei2):
    lng1, lat1, lng2, lat2 = map(radians, [jing1, wei1, jing2, wei2])  # 经纬度转换成弧度
    dlon = lng2 - lng1
    dlat = lat2 - lat1
    a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2
    distance = 2 * asin(sqrt(a)) * 6371.393 * 1000  # 地球平均半径,6371.393km

    return distance

2 计算一点基于另外一点方向的航向角,以北为基准

############################################## 点B基于点A的方向,以北为基准  ############################################
def get_angle(lonA, latA, lonB, latB):
    """
    参数:
        点A (lonA, latA)
        点B (lonB, latB)
    返回:
        点B基于点A的方向,以北为基准,顺时针方向的角度,0~360度
    """
    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)
    angle = degrees(atan2(y, x))
    angle = (angle + 360) % 360
    return angle
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐