簡體   English   中英

使用循環查詢天橋api

[英]use loop to query overpass api

我有一個邊框的csv文件,該文件是我在python中使用熊貓加載的。 數據幀為df ,列名稱為coord 有誰知道我如何創建一個循環來將列表傳遞到我的立交api查詢?

我嘗試了這個:

import time
import overpass
api = overpass.API(timeout=900)

coords = [df['coord'][0:10]]
for coord in coords:
    results =[]
    params =[]
    params = 'node["power"="generator"]'+coord+';out skel;'
    results = api.Get(params, responseformat="json")
    time.sleep(5.0)

但是,我收到多個請求錯誤。

我也嘗試過:

x={}
x = (api.Get(param) for param in params)

但這返回了一個python對象( <generator object <genexpr> at 0x11755c0f8> ),我需要將數據作為json。

任何幫助將非常感激!

這主要是您的方法導致的一些錯誤:

  1. coords = [df['coord'][0:10]]不是必需的。 您可以將其替換為更簡單的df['coord'].tolist()
  2. 您要使用空列表初始化params ,然后使用字符串初始化params ,這是為什么?
  3. 您的params字符串是造成您困難的原因。 我將使用Python字符串的format方法在查詢中插入坐標。 這樣做比較安全,因為它可以自行處理類型轉換和正確的放置。 您不能簡單地將一個元組坐標添加到字符串中並期望它起作用。 嘗試在代碼中打印要為其分配params的字符串,並從下面的解決方案中打印同一行,您將看到區別。 您的代碼將引發錯誤TypeError: Can't convert 'tuple' object to str implicitly ,而我的則不會。

這是一個完整的解決方案:

import time
import overpass
api = overpass.API(timeout=900)

for coord in df['coord'].tolist():
    params = 'node["power"="generator"]{c};out skel;'.format(c=coord)
    results = api.Get(params, responseformat="json")
    time.sleep(5.0)

請注意,如果您在請求中遇到錯誤,請在問題中提供完整的追溯。 這將幫助我們縮小錯誤的真正原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM