码迷,mamicode.com
首页 > 其他好文 > 详细

经纬度计算距离

时间:2019-08-20 14:08:08      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:简单   return   math   color   自带   atl   球面   turn   bsp   

根据经纬度计算距离是有固定公式的,按照公式写个函数很简单。

import math
def cal_dis(lat1, lon1,lat2, lon2):
    latitude1 = (math.pi/180)*lat1
    latitude2 = (math.pi/180)*lat2
    longitude1 = (math.pi/180)*lon1
    longitude2= (math.pi/180)*lon2
    #因此AB两点的球面距离为:{arccos[sinb*siny+cosb*cosy*cos(a-x)]}*R
    #地球半径
    R = 6378.137
    d = math.acos(math.sin(latitude1)*math.sin(latitude2)+ math.cos(latitude1)*math.cos(latitude2)*math.cos(longitude2-longitude1))*R
    return d


if __name__ == __main__:
    print cal_dis(23.0,101.1,23.06,113.34)

注意,经纬度是角度,而三角函数的输入是弧度,角度与弧度的关系  180=pi

 

有一次我在一个项目中发现 matlab 的计算距离和上面这个函数有些出入,虽然相差不大,但是确实不一样,当时也折腾了好久,后来发现 python 有个自带的函数计算结果和 matlab 相同。

from geopy.distance import geodesic

geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001)).m

 

经纬度计算距离

标签:简单   return   math   color   自带   atl   球面   turn   bsp   

原文地址:https://www.cnblogs.com/yanshw/p/11382501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!