0

次のリンクから取得したコードを使用します: 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 

私はかなり立ち往生していて、このすべてに慣れていないので、どんな助けも大歓迎です!

4

1 に答える 1

1

文字通りクエリnode(min_lat,min_lon,max_lat,max_lon);out;を Overpass API に送信している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)
于 2016-01-30T15:41:49.507 に答える