Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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_Geopy - Fatal编程技术网

Python 返回经纬度坐标集之间的最小距离

Python 返回经纬度坐标集之间的最小距离,python,geopy,Python,Geopy,我正在写一个代码来计算两组点之间的最短距离。基本上,我已经创建了一个csv,在坐标中有一组位置,第二个csv,在坐标中有第二组位置。例如,列表A中的坐标可以是(50,-10)、(60,70)、(40,-19),而列表B中的坐标可以是(40,87)、(60,90)、(23,20)。我在网上找到的所有帮助我计算的东西都在一个列表和一个点之间:这对我不起作用 到目前为止,我能够计算所有点之间的距离(A1和B1之间,A1和B2之间,A1和B3之间,A2和B1之间,等等)。这很好,但我想要的是从列表A中的

我正在写一个代码来计算两组点之间的最短距离。基本上,我已经创建了一个csv,在坐标中有一组位置,第二个csv,在坐标中有第二组位置。例如,列表A中的坐标可以是(50,-10)、(60,70)、(40,-19),而列表B中的坐标可以是(40,87)、(60,90)、(23,20)。我在网上找到的所有帮助我计算的东西都在一个列表和一个点之间:这对我不起作用

到目前为止,我能够计算所有点之间的距离(A1和B1之间,A1和B2之间,A1和B3之间,A2和B1之间,等等)。这很好,但我想要的是从列表A中的点1到列表B中任何点的最小距离。本质上,列表B中的哪个位置最接近列表A中的每个点

我试图找到一种方法来运行它,这样它会检查A1与B1、B2、B3等的对比,然后返回最短距离,例如A1和B3之间的x英里

到目前为止,我掌握的情况如下:

import pandas as pd
import geopy.distance

df = pd.read_csv('AirportCoords.csv')
df2 = pd.read_csv('HotelCoords.csv')

for i,row in df2.iterrows():
coordinate = row.lat, row.long
for i,row in df.iterrows():
    coordinate2 = row.latitude, row.longitude

    distance = geopy.distance.geodesic(coordinate, coordinate2).km
    print(distance)

你说的是比较A的每个元素和B的每个元素,这意味着你应该有一个嵌套的循环,但是你的示例代码实际上有两个顺序的循环

import pandas as pd
import geopy.distance

df = pd.read_csv('AirportCoords.csv')
df2 = pd.read_csv('HotelCoords.csv')


for i,row in df.iterrows(): # A
    a = row.latitude, row.longitude
    distances = []
    for j,row2 in df2.iterrows(): # B
        b = row2.lat, row2.long
        distances.append(geopy.distance.geodesic(a, b).km)

    min_distance = min(distances)
    min_index = distances.index(min_distance)

    print("A", i, "is closest to B", min_index, min_distance, "km")

你说的是比较A的每个元素和B的每个元素,这意味着你应该有一个嵌套的循环,但是你的示例代码实际上有两个顺序的循环

import pandas as pd
import geopy.distance

df = pd.read_csv('AirportCoords.csv')
df2 = pd.read_csv('HotelCoords.csv')


for i,row in df.iterrows(): # A
    a = row.latitude, row.longitude
    distances = []
    for j,row2 in df2.iterrows(): # B
        b = row2.lat, row2.long
        distances.append(geopy.distance.geodesic(a, b).km)

    min_distance = min(distances)
    min_index = distances.index(min_distance)

    print("A", i, "is closest to B", min_index, min_distance, "km")

也许能帮你,也许能帮你,谢谢!这是一个非常愚蠢的错误,但现在我理解了嵌套循环,所以我非常感谢您。不客气。如果这完全回答了您的问题,您能将其标记为已接受的答案吗?这样问题就会显示为已解决谢谢!这是一个非常愚蠢的错误,但现在我理解了嵌套循环,所以我非常感谢您。不客气。如果这完全回答了您的问题,您能将其标记为已接受的答案吗?这样,问题就被解决了