Я пытаюсь повторить аналогичный ответ на приведенный ниже запрос Overpass-Turbo в ответ API запросов, используя регионы ISO в качестве ограничивающего прямоугольника, в отличие от bbox overpass, основанного на представлении карты. Рабочий вызов API-интерфейса путепровода находится ниже (и связан) http://overpass-turbo.eu/s/ROc:
<union>
<query type="way">
<has-kv k="amenity" v="place_of_worship"/>
<bbox-query {{bbox}}/><!--this is auto-completed with the
current map view coordinates.-->
</query>
<query type="node">
<has-kv k="amenity" v="place_of_worship"/>
<bbox-query {{bbox}}/>
</query>
</union>
<union>
<item/>
<recurse type="down"/>
</union>
<print/>
Код python, который был очень близок, находится ниже, рекурсор должен сбросить его или я должен добавить запрос области, который не покрывается документацией, и каждый раз, когда я добавляю, это вызывает ошибки. У меня был запрос перехода через выход JSON, поэтому я знаю, что это не формат JSON.
import requests
import json
overpass_url = "http://overpass-api.de/api/interpreter"
overpass_query = """
[out:json];
area["ISO3166-2"="ID-JK"][admin_level=4];
(node["amenity"="place_of_worship"](area);
way["amenity"="place_of_worship"](area);
rel["amenity"="place_of_worship"](area);
);
out;
>>;
"""
response = requests.get(overpass_url,
params={'data': overpass_query})
data = response.json()
Пример реплицируемой мечети: Masjid al Muhajirin, с запросом Overpass Turbo, показывающим узлы / область (я обрезал полный ответ), в то время как вызов API просто представляет центральный узел.
С Overpass Turbo:
<node id="1125954224" lat="-6.1692617" lon="106.8333459"/>
<node id="1125954226" lat="-6.1693409" lon="106.8333815"/>
<node id="1125954227" lat="-6.1691708" lon="106.8334486"/>
<node id="1125954228" lat="-6.1690655" lon="106.8333973"/>
<node id="1125954232" lat="-6.1690167" lon="106.8332346"/>
<node id="1235344783" lat="-6.2152386" lon="106.8823485">
<tag k="amenity" v="place_of_worship"/>
<tag k="building" v="mosque"/>
<tag k="name" v="Masjid al Muhajirin"/>
<tag k="religion" v="muslim"/>
И вызов API:
{
"type":"node",
"id":1235344783,
"lat":-6.2152386,
"lon":106.8823485,
"tags":{
"amenity":"place_of_worship",
"building":"mosque",
"name":"Masjid al Muhajirin",
"religion":"muslim"
}
Спасибо,