OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

Announcement

A fix has been applied to the login system for the forums - if you have trouble logging in please contact support@openstreetmap.org with both your forum username and your OpenStreetMap username so we can make sure your accounts are properly linked.

#51 2015-07-28 17:15:01

Xmypblu
Member
From: Москва
Registered: 2011-01-18
Posts: 386

Re: Overpass API - примеры запросов

в соседней теме gryphon поделился запросом получения списка улиц по bbox
http://overpass-turbo.eu/s/aAB

я попытался сделать выборку названий автобусных остановок по указанной (Сахалинской) области
http://overpass-turbo.eu/s/aD1

Вопрос: он долго выполняется из-за того, что выборка происходит по слишком большой области... или я что-то не так написал в запросе?


Последняя заметка в дневниках: [перевод] "OpenStreetMap Mapping Priority"

Offline

#52 2015-07-28 17:41:48

d1g
Member
From: not using forum
Registered: 2010-01-23
Posts: 2,380
Website

Re: Overpass API - примеры запросов

Xmypblu wrote:

он долго выполняется из-за того, что выборка происходит по слишком большой области... или я что-то не так написал в запросе?

Есть такое.

1. много точек в границе (тысячи точек админ границы это уже много)
2. пространственно большой запрос (иногда global быстрее работает чем выбор по области)

Для больших районов вариант такой есть:
1. выбор объектов по bbox-query (относительно быстрее, 4 точки ведь)
2.1 обрезка по шейпфайлу-границе
2.2 ALT+SHIT+I у админ границы в JOSM (не помню что за плагин и название)

Попробуй по cron ночью запускать т.к. серваки днём нужны людям, ты такими запросами результат не получаешь и время других запросов не отнимаешь.

В overpass-turbo можно серваки менять. Там серваки Рамблера есть, в них больше ОЗУ - запроси их ночью.

Last edited by d1g (2015-07-28 17:43:09)

Offline

#53 2015-08-21 18:29:44

OVK
Member
Registered: 2015-08-21
Posts: 4

Re: Overpass API - примеры запросов

Доброго времени суток!
Подскажите, можно ли  с помощью OverPass API выбрать все отношения, в которые входит объект(way) с известным OSM ID. В моем случае нужно выбрать все дома находящиеся на улице с известным ID. Т.е. у меня есть ID всех улиц(переулков, площадей и т.д. внутри города). Необходимо получить все ID домов, внутри города, с их привязкой к ID улиц.

Никак не могу разобраться с тем, как при поиске задавать условия для member`s в relation.
Попробовал выполнять запрос, ограничивая bbox размерами тайла,- работает. Но для моего города таких тайлов около 90000. Не охота их в цикле перебирать.

Last edited by OVK (2015-08-21 18:31:29)

Offline

#54 2015-08-21 18:45:04

d1g
Member
From: not using forum
Registered: 2010-01-23
Posts: 2,380
Website

Re: Overpass API - примеры запросов

OVK wrote:

Никак не могу разобраться с тем, как при поиске задавать условия для member`s в relation.

Попробовал выполнять запрос, ограничивая bbox размерами тайла,- работает. Но для моего города таких тайлов около 90000. Не охота их в цикле перебирать.

Общая идея в рекурсии: https://wiki.openstreetmap.org/wiki/Ove … w.2C_br.29 CTRL+F "role" решил бы вопрос.

Необходимо получить все ID домов, внутри города, с их привязкой к ID улиц.

"улица" - это type:relation?

Если улицы известны - рекурсия вниз по улицам
Если улицы неизвестны - рекурсия вверх по участникам попавшим в гео-регион


UPD: http://nadoloni.com/ показывает "улицы" в верхней строке, нацельте его на нужный город

Last edited by d1g (2015-08-21 18:58:57)

Offline

#55 2015-08-21 19:48:28

Sergey Astakhov
Member
From: St.Petersburg, Russia
Registered: 2009-11-13
Posts: 5,338

Re: Overpass API - примеры запросов

OVK wrote:

В моем случае нужно выбрать все дома находящиеся на улице с известным ID. Т.е. у меня есть ID всех улиц(переулков, площадей и т.д. внутри города). Необходимо получить все ID домов, внутри города, с их привязкой к ID улиц.

В OSM улицы к домам отношениями обычно не привязывают, так что это вам всё равно не поможет. Привязка идёт по совпадению названия улицы с тегом addr:street у дома. Неоднозначности (одноимённые улицы) резолвятся с учётом полигонов населённых пунктов (place=*) и районов города (т.к. в разных районах тоже могут быть одноимённые улицы). Подробности можно подсмотреть в разных конвертерах, например в osm2mp или в геокодере openstreetmap.ru

Last edited by Sergey Astakhov (2015-08-21 19:48:47)

Offline

#56 2015-08-21 19:54:03

edward17
Member
Registered: 2013-08-26
Posts: 1,849
Website

Re: Overpass API - примеры запросов

Sergey Astakhov wrote:

В OSM улицы к домам отношениями обычно не привязываю

Это зависит от страны. В Украине, например, почти вся адресация сделана через отношения associatedStreet.

@OVK, если не секрет, какая страна тебя интересует?

Last edited by edward17 (2015-08-21 19:55:45)


Все жители частного сектора, вешающие таблички с названием улицы и номером дома, попадают в рай без очереди.

Offline

#57 2015-08-21 20:03:38

Xmypblu
Member
From: Москва
Registered: 2011-01-18
Posts: 386

Re: Overpass API - примеры запросов

если я правильно понял - как-то так: http://overpass-turbo.eu/s/b3V

...но если зашла речь про отношения - скорее всего город не в России.
играть в угадайку неохота - так что ждем конкретики


Последняя заметка в дневниках: [перевод] "OpenStreetMap Mapping Priority"

Offline

#58 2015-08-21 20:30:55

OVK
Member
Registered: 2015-08-21
Posts: 4

Re: Overpass API - примеры запросов

Спасибо за оперативность.
Речь действительно идет об Украине (Днепропетровск). Запрос в OverPass следующий:

[out:json]; ({{bbox}});out meta;>;
вместо bbox задавал координаты тайла при 18-ом зуме.

Выдает след конструкцию:

{
  "type": "relation",
  "id": 3284982,
  "timestamp": "2015-08-15T09:57:04Z",
  "version": 19,
  "changeset": 33349461,
  "user": "Husim",
  "uid": 2921272,
  "members": [
    {
      "type": "way",
      "ref": 81004247,
      "role": "house"
    },
    {
      "type": "way",
      "ref": 81004311,
      "role": "house"
    },

.....

{
      "type": "way",
      "ref": 115559938,
      "role": "street"
  },

....

{
      "type": "node",
      "ref": 2626410366,
      "role": "house"
    }
  ],
  "tags": {
    "name": "Комсомольська вулиця",
    "name:en": "Komsomolska Street",
    "name:ru": "Комсомольская улица",
    "name:uk": "Комсомольська вулиця",
    "type": "associatedStreet"
  }
}

Т.е. здесь ID улицы присутствует внутри одного из свойств "members".

Попробую уточнить вопрос: можно ли как-то в OverPass задавать условие выборки по параметру "ref" узла "members" в relation типа "associatedStreet". Выбирать все отношения, в кот. входит элемент с указанным ID внутри определенного bbox.

P.S. Или я не в ту сторону копаю и есть какой-тот другой вариант нахождения списка домов на определенной улице?

Offline

#59 2015-08-21 21:15:01

edward17
Member
Registered: 2013-08-26
Posts: 1,849
Website

Re: Overpass API - примеры запросов

OVK,
в каком формате нужно получить данные? Или формат не имеет значения?


Все жители частного сектора, вешающие таблички с названием улицы и номером дома, попадают в рай без очереди.

Offline

#60 2015-08-21 21:17:59

OVK
Member
Registered: 2015-08-21
Posts: 4

Re: Overpass API - примеры запросов

edward17,
Вообще-то без разницы. А из чего можно выбрать?

Last edited by OVK (2015-08-21 21:22:18)

Offline

#61 2015-08-21 21:21:06

Xmypblu
Member
From: Москва
Registered: 2011-01-18
Posts: 386

Re: Overpass API - примеры запросов

у меня сходу не получилось разобраться, но какие-то примеры можно посмотреть тут:
http://wiki.openstreetmap.org/wiki/Over … se_Numbers


Последняя заметка в дневниках: [перевод] "OpenStreetMap Mapping Priority"

Offline

#62 2015-08-22 18:26:41

OVK
Member
Registered: 2015-08-21
Posts: 4

Re: Overpass API - примеры запросов

d1g
СПАСИБО ОГРОМНОЕ!!!
http://nadoloni.com/  - это просто праздник какой-то! Спас гору времени и нервов!
Правда в ответах JSON у них какая-то путаница с названиями городов и улиц. Ну, да не беда,- распарсим, поправим.
Еще раз, благодарю! Удачи!

Offline

#63 2015-12-09 11:45:17

RiG's
Member
Registered: 2015-08-03
Posts: 101

Re: Overpass API - примеры запросов

Подскажите, как указать в запросе выборку POI, в которых отсутствует какой-то тег? Например post_office без opening_hours. Не пустой, а именно отсутствующий

Offline

#64 2015-12-09 12:15:33

freeExec
Moderator
From: Ульяновск
Registered: 2012-07-31
Posts: 6,606

Re: Overpass API - примеры запросов

Есть же встроенная справка, где ссылка на wiki

 node["name"!~"."];       /* finds nodes without "name" tag; does not have key name */

Online

#65 2015-12-09 17:02:15

romanshuvalov
Member
From: Togliatti, Russia
Registered: 2015-02-26
Posts: 343
Website

Re: Overpass API - примеры запросов

На пересечениях водных и наземных путей я писал тэг level=-1 вместо layer=-1 (ну или 1), причём довольно давно. Перепутал. Почему - не знаю. Можно ли при помощи Overpass API получить все объекты, созданные мной и содержащие тэг level? Чтобы загрузить всё это в JOSM и исправить.

P.S. С запросом на сайте Overpass Turbo справился, но в JOSM такое не загрузить:

<query type="way">
    <has-kv k="level" />
    <bbox-query {{bbox}}/>
</query>

<union>
  <item/>
  <recurse type="down"/>
</union>

<print/>

Last edited by Roman Shuvalov (2015-12-09 17:10:19)

Offline

#66 2015-12-09 17:11:18

esaulenka
Member
From: Москва
Registered: 2010-08-21
Posts: 1,126
Website

Re: Overpass API - примеры запросов

Сделать что-нибудь типа http://overpass-turbo.eu/s/dbK
Зачем разбираться "я, не я..."? Поправить уж все ошибки, без поисков виноватых.

Offline

#67 2015-12-09 17:21:24

d1g
Member
From: not using forum
Registered: 2010-01-23
Posts: 2,380
Website

Re: Overpass API - примеры запросов

Roman Shuvalov wrote:

Можно ли при помощи Overpass API получить все объекты, созданные мной и содержащие тэг level? Чтобы загрузить всё это в JOSM и исправить.

Напрямую нет потому что в Overpass нет history API у объектов и фильтровать по свойствам пакетов нельзя ("автор" объекта). Это можно обойти, но много кода будет обрабатывающего.

Если объекты до сих пор живые

user:"Roman Shuvalov" and type:way and level="-1" - загрузит последние объекты твои пока ещё их никто не трогал
убираем условие на пользователя и получаем ещё пару объектов которые можно потом будет посмотреть

Roman Shuvalov wrote:

С запросом на сайте Overpass Turbo справился, но в JOSM такое не загрузить:

Там кнопки есть для этого "Экспорт" - "Запрос" - "Преобразовать в компактный"



https://wiki.openstreetmap.org/wiki/Ove … rbo/Wizard


http://www.openstreetmap.org/user/Roman%20Shuvalov - у тебя только 300 пакетов, их можно просмотреть быстро в https://josm.openstreetmap.de/wiki/Help … setManager Ты же не во всех 300 пакетах такое делал?

Offline

#68 2015-12-09 17:58:44

romanshuvalov
Member
From: Togliatti, Russia
Registered: 2015-02-26
Posts: 343
Website

Re: Overpass API - примеры запросов

Как выяснилось, на авторство пофиг - найденных объектов в моей области буквально два десятка, даже если найду что-то чужое - не страшно, отфильтрую руками.

Но про JOSM не понял. После "Преобразовать в компактный" получаю ссылку, напрямую выдающую OSM XML. И что, его надо сохранить как .osm и открыть в JOSM? А попроще способа нет?

Offline

#69 2015-12-09 18:39:32

d1g
Member
From: not using forum
Registered: 2010-01-23
Posts: 2,380
Website

Re: Overpass API - примеры запросов

Roman Shuvalov wrote:

Но про JOSM не понял. После "Преобразовать в компактный" получаю ссылку, напрямую выдающую OSM XML.

Внимательнее при экспорте, там три вкладки: "данные", "карта", "запрос".

Во вкладке "запрос" получается такая ссылка http://overpass-api.de/api/convert?data … et=compact

Но проще всего данные загрузить сразу в открытый JOSM ("данные" "JOSM") https://help.openstreetmap.org/question … o-josm-how. Минус там что нужно будет починить запрос (overpass turbo сам скажет перед экспортом в JOSM), иначе JOSM его не понимает.

Возится с XML сохранять/открывать данные или запрос нужды нет.

Last edited by d1g (2015-12-10 03:47:25)

Offline

#70 2015-12-22 23:55:45

BushmanK
Member
Registered: 2011-05-03
Posts: 5,106

Re: Overpass API - примеры запросов

Совершенно случайно, может кому пригодится. Wizard на overpass-turbo.eu ругается на двоеточие и не понимает условия с тегами, использующими пространство имен (вида namespace:key=value).
Потому, если для какой-то цели нужно выбрать, например, все теги в одном пространстве имен, шаблон должен использовать регулярные выражения.
Пример:

node[~"^recycling:.*$"~"."]

такой шаблон выбирает все точки с тегами вида recycling:*=*
Это описано в документации, но термин "пространство имен" там не употребляется, потому я решил тут это описать, на случай, если кто будет такое искать.


"Не умею" не значит "невозможно", "не видел" не значит "не бывает". "Нет проблемы", вероятнее всего, значит, что "нет мозгов".

Offline

#71 2015-12-23 06:37:45

wowik
Member
From: Zelenograd
Registered: 2009-09-29
Posts: 6,851

Re: Overpass API - примеры запросов

Тег с двоеточием надо просто обкавычить

Offline

#72 2015-12-23 08:04:36

freeExec
Moderator
From: Ульяновск
Registered: 2012-07-31
Posts: 6,606

Re: Overpass API - примеры запросов

Раз пошла такая пьянка, накину парочку из последних интересных
Города в пределах (по прямой) 20км от МКАД

[out:json][timeout:25];
// gather results
(
  rel(2094222)->.mkad;
  (
    node(around.mkad:20000)["place"="city"];
    node(around.mkad:20000)["place"="town"];
  ) ->.city;
);
// print results
.city out body;
//>;
//out skel qt;
{{style:
node 
{ color:green; text: name; }
}}

Что за населённый пункт в центре карты

[out:json][timeout:25];
// gather results
(
  is_in({{center}}) -> .b;
  
  (way(pivot.b)["place"];
   rel(pivot.b)["place"];
   )-> .c;
  
);
.c out body;
>;
out skel qt;

Посмотреть как проходит маршрут общественного транспорта

[out:json];
relation
  ["route"="bus"]
  ["ref"="38"]({{bbox}})
->.hr;
(
  .hr;
  way(r.hr)->.hrp;
  node(r.hr);
);
out body qt;
node(w.hrp);
out skel qt;

Online

#73 2015-12-23 20:08:15

BushmanK
Member
Registered: 2011-05-03
Posts: 5,106

Re: Overpass API - примеры запросов

wowik wrote:

Тег с двоеточием надо просто обкавычить

"просто" - не работает.
Приведите пример того, что вбивать в wizard для recycling:*=*


"Не умею" не значит "невозможно", "не видел" не значит "не бывает". "Нет проблемы", вероятнее всего, значит, что "нет мозгов".

Offline

#74 2015-12-23 20:19:29

edward17
Member
Registered: 2013-08-26
Posts: 1,849
Website

Re: Overpass API - примеры запросов

BushmanK wrote:

Приведите пример того, что вбивать в wizard для recycling:*=*

Я ввёл в визард

type:node and ~"^recycling:"~"."

и всё работает:
http://overpass-turbo.eu/s/dp4


Все жители частного сектора, вешающие таблички с названием улицы и номером дома, попадают в рай без очереди.

Offline

#75 2015-12-23 20:35:27

d1g
Member
From: not using forum
Registered: 2010-01-23
Posts: 2,380
Website

Re: Overpass API - примеры запросов

edward17, регулярка ~"^recycling:" не сильно отличается от ~"^recycling:.*$"

Я не в курсе почему overpass матчит всё, а не минимальные десять символов у ^recycling:

http://regexr.com/3cff9 - матчится весь тег recycling:red
http://regexr.com/3cfff - вариант без .*$, матчится только recycling:

в .*$ тоже есть неточность потому как в неё попадёт recycling:

Поэтому наиболее безопасный вариант вот такой:
^recycling:.+$

Offline

Board footer

Powered by FluxBB