Ввести полученные переменные в вызов API Overpass в python

Используя код, полученный по следующей ссылке: http://python-overpy.readthedocs.org/en/latest/example.html Я хочу вместо этого вводить переменные, которые я уже получил, вместо того, чтобы непосредственно вводить их, например, так:

import overpy
api = overpy.Overpass()
result = api.query("node(min_lat,min_lon,max_lat,max_lon);out;")
len(result.nodes)

Переменные min_lat и т.д. имеют тип float. Это ошибка, которую я получаю:

overpy.exception.OverpassBadRequest: Error: line 1: parse error: Unknown query clause 
Error: line 1: parse error: ')' expected - 'min_lat' found. 
Error: line 1: parse error: An empty query is not allowed 
Error: line 1: parse error: Unknown type ";" 
Error: line 1: parse error: An empty query is not allowed 

Любая помощь очень ценится, так как я застрял и новичок во всем этом, спасибо!

1 ответ

Вы буквально отправляете запрос node(min_lat,min_lon,max_lat,max_lon);out; к API Overpass, min_lat и т. д. без изменений.

Для заполнения переменных вы можете использовать подстановку строк:

"node(%s, %s, %s, %s);out;" % ( min_lat, min_lon, max_lat, max_lon )

%s будет заменен переменными, которые вы указали в скобках.

import overpy
api = overpy.Overpass()

min_lat = 50.745
min_lon = 7.17
max_lat = 50.75
max_lon = 7.18

query = "node(%s, %s, %s, %s);out;" % ( min_lat, min_lon, max_lat, max_lon )
result = api.query(query)

print query
print len(result.nodes)
Другие вопросы по тегам