• 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   
    
  • 相关阅读:
    HashMap
    Linux安装JDK步骤
    CentOS修改Tomcat端口号
    centos 如何关闭防火墙?
    redhat linux/CentOS 6/7 如何关闭防火墙?
    CentOS6.7 常用操作命令
    java 表现层:jsp、freemarker、velocity
    存储的瓶颈(1)
    Monkey测试:启动adb shell失败
    HTTP学习记录:四、头信息(请求和响应)
  • 原文地址:https://www.cnblogs.com/lindaxin/p/8057999.html
Copyright © 2020-2023  润新知