首页 > 解决方案 > 使用 geopy.distance 进行批量计算

问题描述

我有两个位置列表作为 csv 文件(mlloc 和 cfloc),格式相同,标题如下:

index|formatted_address|latitude|longitude|postcode|input_string|number_of_results|status

我希望测量 mlloc 中每个位置(由纬度和经度定义)与 cfloc 中每个位置之间的距离。我已经使用 geopy.distance 来测量单个对,但我还没有设法使用它来测量这个成对矩阵。

我尝试了以下方法,它返回一个距离。

如果我可以将我们正在测量的每对点的 formatted_address 值附加到结果中,那将是一个奖励。

#import 
from geopy import distance as geopy_distance
import pandas as pd
import csv

#define inputs
ml_filename = 'C:/Users/hc/Desktop/mlloc.csv'
cf_filename = 'C:/Users/hc/Desktop/cf.csv'

#read data
mldata = pd.read_csv(ml_filename)
cfdata = pd.read_csv(cf_filename)

#create dataframes
mldata = pd.DataFrame(mldata)
cfdata = pd.DataFrame(cfdata)

#drop NaN
mldata = mldata.drop(mldata[mldata.status != 'OK'].index)
cfdata = cfdata.drop(cfdata[cfdata.status != 'OK'].index)

#check
print(cfdata.head())

#loop through each dataframe
results = []
for i in range (1, len(mldata)):
    for j in range (1, len(cfdata)):
#distance calculation
        distance = geopy_distance.distance((mldata.iloc[i , 2], mldata.iloc[i , 3]), (cfdata.iloc[j , 2], cfdata.iloc[j , 3]))
        answer = [distance, i, j]
        results.append(answer)

print(results)

标签: pythongisgeopy

解决方案


推荐阅读