zoukankan      html  css  js  c++  java
  • python实现两个经纬度点之间的距离和方位角

    from:http://blog.csdn.net/zhuqiuhui/article/details/53180395

    1.  求两个经纬点的方位角,P0(latA, lonA), P1(latB, lonB)(很多博客写的不是很好,这里总结一下)

        def getDegree(latA, lonA, latB, lonB):  
            """ 
            Args: 
                point p1(latA, lonA) 
                point p2(latB, lonB) 
            Returns: 
                bearing between the two GPS points, 
                default: the basis of heading direction is north 
            """  
            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)  
            brng = degrees(atan2(y, x))  
            brng = (brng + 360) % 360  
            return brng  
    

     2.  求两个经纬点的距离函数:P0(latA, lonA), P1(latB, lonB)  

    def haversine(a, b): # 经度1,纬度1,经度2,纬度2 (十进制度数)  
        """ 
        Calculate the great circle distance between two points  
        on the earth (specified in decimal degrees) 
        """  
        lat1 = a[0][0]
        lon1 = a[1][0]
        lat2 = b[0][0]
        lon2 = b[1][0]
      
        # 将十进制度数转化为弧度  
        lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])  
      
        # haversine公式  
        dlon = lon2 - lon1   
        dlat = lat2 - lat1   
        a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2  
        c = 2 * asin(sqrt(a))   
        r = 6371 # 地球平均半径,单位为公里  
        return c * r * 1000   
    
  • 相关阅读:
    2019年6月4号总结
    2019年5月21号总结
    2019年5月8号总结
    2019年5月6号总结
    2019年5月5号总结
    2019年4月18号总结
    java错误笔记之判断字符知否为空出错
    错误笔记:静态方法不能实例化,直接用类名.方法名调用
    Thymeleaf中"th:each""th:if"的用法解析
    @ResponseBody 表示返回的是josn
  • 原文地址:https://www.cnblogs.com/lindaxin/p/8057999.html
Copyright © 2011-2022 走看看