将列表传递给 google 距离矩阵,仅返回单个值

Pass list to google distance matrix, returning only single value

我想使用 Googles distance matrix API 来测量多个地址和单个地址之间的道路距离。我有一个起点纬度和经度列表 (list_o),以及目的地纬度和经度 (list_d)。我的 Api 密钥已设置。

list_o

[(51.268369, -1.361543),
 (51.368369, -1.361043),
 (51.062992, -1.250635),
 (51.910508, -1.314208),
 (51.233251, -1.551402)]
list_d

[(53.423451, -1.462141),
 (53.483451, -1.172141),
 (51.423451, -1.262141),
 (52.623451, -1.246211),
 (52.323451, -1.462141)]

如果我传入地址列表

result = gmaps.distance_matrix(list_o, list_d, mode='walking')["rows"][0]["elements"][0]["distance"]["value"]

我只得到一个结果,例如 34000 米 = 34km,看起来是正确的。 我已经尝试将结果附加到列表中,但它仍然只得出一个结果。

gmaps.distance_matrix(list_o, list_d, mode='walking')["rows"][0]["elements"]

我得到 10 个值(df 的完整大小,上面我只显示了前 5 个)。

{'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'},
 {'distance': {'text': '34.0 km', 'value': 34014},
  'duration': {'text': '7 hours 6 mins', 'value': 25554},
  'status': 'OK'}]

但是它们都是相同的值。

我相信你想做的是使用:

list_o

[(51.668369, -1.361043),
 (51.668369, -1.361043),
 (51.662992, -1.270635),
 (51.610508, -1.314208),
 (51.733251, -1.351402)]

和:

list_d

[(52.423451, -1.462141)]

然后调用:

results = gmaps.distance_matrix(list_o, list_d, mode='walking')

您要查找的结果是:

# Distance between first origin and destination.
# I.e.: distance (51.668369, -1.361043) -> (52.423451, -1.462141)
results['rows'][0]['elements'][0]

#... and so on

换句话说,results['rows'][i]['elements'][0]是位置i到目的地的距离。

gmaps.distance_matrix 计算起点和每个目的地之间的距离。