Overpass API - узлы Geom не отображаются в ответе - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь повторить аналогичный ответ на приведенный ниже запрос 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"
      }

Спасибо,

...