Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python计算两个坐标之间的距离_Python_Distance_Haversine - Fatal编程技术网

用Python计算两个坐标之间的距离

用Python计算两个坐标之间的距离,python,distance,haversine,Python,Distance,Haversine,我有一张地图,他们可以在地图上找到几个点(纬度/长度),并想知道它们之间的距离 那么,给定一组纵横坐标,我如何用python计算它们之间的距离呢?我曾经写过一个python版本的answer。它详细介绍了如何使用来计算以公里为单位的距离 import math def get_distance(lat_1, lng_1, lat_2, lng_2): d_lat = lat_2 - lat_1 d_lng = lng_2 - lng_1 temp = (

我有一张地图,他们可以在地图上找到几个点(纬度/长度),并想知道它们之间的距离


那么,给定一组纵横坐标,我如何用python计算它们之间的距离呢?

我曾经写过一个python版本的answer。它详细介绍了如何使用来计算以公里为单位的距离

import math

def get_distance(lat_1, lng_1, lat_2, lng_2): 
    d_lat = lat_2 - lat_1
    d_lng = lng_2 - lng_1 

    temp = (  
         math.sin(d_lat / 2) ** 2 
       + math.cos(lat_1) 
       * math.cos(lat_2) 
       * math.sin(d_lng / 2) ** 2
    )

    return 6373.0 * (2 * math.atan2(math.sqrt(temp), math.sqrt(1 - temp)))
确保传递给函数的坐标以弧度为单位。如果它们以度为单位,则可以首先转换它们:

lng_1, lat_1, lng_2, lat_2 = map(math.radians, [lng_1, lat_1, lng_2, lat_2])

可能重复的输出单位是米?,这对我不起作用。输出单位是公里,米需要加上*1000才能返回。您必须首先转换为弧度:lon_1,lat_1,lon_2,lat_2=map(math.radians,[lon_1,lat_1,lon_2,lat_2])@pepece我隐式地假设坐标是弧度,因为这就是我为自己编写函数的方式。在答案中添加了注释,感谢您指出!