Return longitude/latitude 组坐标之间的最小距离
Return minimum distance between sets of longitude/latitude coordinates
我正在编写代码来计算两组点之间的最短距离。本质上,我已经创建了一个带有一堆坐标位置的 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 的每个元素进行比较,这意味着你应该有一个嵌套循环,但你的示例代码实际上有 2 个顺序循环。
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")
我正在编写代码来计算两组点之间的最短距离。本质上,我已经创建了一个带有一堆坐标位置的 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 的每个元素进行比较,这意味着你应该有一个嵌套循环,但你的示例代码实际上有 2 个顺序循环。
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")