Сгруппированные узлы в OpenStreetMap с API Overpass

Hy. Я хотел бы запросить узлы, сгруппированные по некоторой области. Например: как получить все узлы (например, пики) для данной области (например, административная граница - страна).

Что-то вроде соединения в SQL: SELECT n.*, a.name from node n LEFT JOIN area a ON n.area_id = a.id WHERE n.type = "peak"

Результат будет примерно таким:

{ features: [
 { 
   type: "node:",
   area: "slovenia"
   properties: {....},
   geometry: {...}
 },
 ...
]}

или, может быть:

{ areas: [
 slovenia: {
  nodes: [
  { 
   type: "node:",
   area: "slovenia"
   properties: {...},
   geometry: {...}
  },
  ...
  ]
 },
 ...
]}

Это вообще возможно? Или я должен сначала сделать 1 запрос для всех областей, а затем для каждой области сделать еще один запрос?


person mitjap    schedule 23.10.2014    source источник


Ответы (1)


Поддержка области в области пока официально недоступна (см. идеи, как это может выглядеть в будущем), но вы можете использовать подход, описанный на следующей странице справки:

https://help.openstreetmap.org/questions/35976/add-reverse-geocoding-information-to-the-overpass-resulting-set

В частности, я бы рекомендовал взглянуть на следующий запрос: http://overpass-turbo.eu/s/4FJ

Он работает с одним запросом, но смешивает посты-указатели со всеми областями, в которые включен этот пост-указатель. Вы сможете легко настроить это для своих тегов / области. Обратите внимание, что может потребоваться небольшая постобработка результата.

Вероятно, самое близкое, что вы ищете, также описано в Github pull request. . Это напечатает область, за которой следуют все узлы в этой области. Но, как я уже упоминал, это будет доступно только в какой-то момент в будущем.

Пример вывода:

@oname  @id     name
area    3600062387      Landkreis Merzig-Wadern
node    313138635       
node    313150002       
node    313460474       
node    315050154       
node    431311279       
...
person mmd    schedule 24.10.2014