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

Вопросы, возникшие у меня по QL:

  1. Как правильно составить запрос “получить все населенные пункты такой-то области” (имеется в виду внутри контура, а не по тегу addr:region). Я пытался скачать нужное мне отношение по известному ID, затем использовать area в разных вариациях. Ничего не получилось.

  2. В описании Query Language работа идет с input set. Вопрос такой - правильно ли я понимаю что после каждой операции этот input set дополняется вновь найденными объектами ? Т.е. операторы срабатывают не как фильтры, а как добавление данных ?

http://overpass-turbo.eu/s/1Rc
http://goo.gl/TwD33
http://overpass-turbo.eu/s/1Rb

Xmypblu
Огромное спасибо !

Модифицированный запрос для JOSM mirrored_download:

[maxsize]
[timeout:120]
;
area
  ["boundary"="administrative"]
  ["name"="Калининградская область"]
->.a;
(
  relation
    (area.a)
    ["place"~"isolated_dwelling|hamlet|village|town|city|suburb"];>;
  way
    (area.a)
    ["place"~"isolated_dwelling|hamlet|village|town|city|suburb"];>;
  node
    (area.a)
    ["place"~"isolated_dwelling|hamlet|village|town|city|suburb"];>;
);
(._;rel(bn););
(._;rel(bw););
(._;rel(br););
out meta qt;

Название области заменить на нужное. Будут загружены только НП, попавшие в bbox при скачивании и геометрически попавшие внутрь полигона нужной нам области.

1 Like

у меня тоже вопрос.
У Котяры на latlon.org был слой (сейчас ссылку не найду), на котором были отмечены населенные пункты, в радиусе 3 км у которых не было дорог, выше какого-то уровня.
Как сделать такую выборку НП - с помощь запроса QL ?

У меня вот так получилось в JOSM

[maxsize]
[timeout:900];
( node[place];
  way[place];>;
  rel[place];>;)->.a;	/* all places in bbox */
( way(around.a:1000.0)[highway~"motorway|trunk|primary|secondary|tertiary|unclassified"];>;) ->.b; /* highways within given distance */
(
	relation
		(around.b:1000.0)
		[place];>;
	way
		(around.b:1000.0)
		[place];>;
	node
		(around.b:1000.0)
		[place];>;
) -> .c;		/* places within given distance from selected highways */
(.a - .c) ->.d;		/* places outside given distance from any highways */
.d out meta qt;

Может не самый оптимальный запрос, но работает. Ищет все place, у которых на расстоянии 1000м нет ни одной дороги unclassified и выше. *_link и service обрублены сознательно.

хм… что-то не найду в документации - что не так, но вычитание на http://overpass-turbo.eu как-то по другому нужно делать

немного переделал запрос http://overpass-turbo.eu/s/1Ru

в качестве примера, нужно найти этим запросом Амбарчик

UPDATE: вот этот запрос работает http://overpass-turbo.eu/s/6ju

А можно получить всех пользователей, чьи правки попадают в ббокс? Или лучше такое не через оверпас всеже делать?

Во время подготовки картинок для заметки в “дневниках”, столкнулся с непонятным…
Может кто объяснить или спросить у автора ресурса: почему при добавлении к запросу стиля MapCSS появляются “разрывы”?
Для примера две картинки - без и с MapCSS стилем, где видны “лишние” дырки, которые пропадают при увеличении зума.

http://overpass-turbo.eu/s/2yu

  1. без стиля

  2. со стилем

Покажите пожалуйста, как выполнять запросы к Overpass не из JOSM? Если точнее, то из Android приложения. Я новичок в этом деле, поэтому хотелось бы поподробнее

На мелких зумах, мелкие полигоны не рисуются просто.

рисуются, если не использовать стили MapCSS. можно убедится сходив по ссылке, что я привел. достаточно удалить {{style: * }}

Вопрос непонятен, а подробнее wiki - по видимому и нет ничего.
Начни читать с этой страницы - http://www.overpass-api.de/

Можно ли в Overpass API сделать выборку по полигону? Например: точки внутри мультиполигона страны?

Чукча не читатель, подыми глаза выше, одну то страницу осиль прочитать.

Если ты про это

то да, спасибо, это то, что нужно

В соседней теме пытался выяснить - почему скрипт не работает так, как задумано. Методом научного тыка - пришёл к выводу, что проблема в запросе к Overpass.
В самом скрипте (qat_script\gui.py:1113) строка запроса выглядит так:

overpassurl += 'http://overpass-api.de/api/interpreter?data=' 
overpasquery = 'relation["admin_level"="%s"]["name"="%s"]%s;(way(r:"outer");node(w););out meta;' % (adminLevel, name, optTag)

к сожалению, практически все (исключений я пока не нашёл) границы в России этим запросом почему-то не загружаются в скрипт. Есть подозрения, что это зависит от наличия на первом сегменте(way) отношения, тегов “admin_level=*”. Но так как есть примеры, когда тег есть, а все равно не грузит - я не понимаю, что ему не нравится… прошу помощи, подкорректировать запрос до рабочего состояния.

Список границ какие я проверял:

Россия:
Калининградская область(4) - не загружает
в тегах отношений есть (admin_level=4, boundary=administrative),
в тегах линий есть (boundary=administrative, admin_level=2),
note: в первом сегменте прописан тег “admin_level=2”
Новгородская область(4) - не загружает
в тегах отношений есть (boundary=administrative, admin_level=4),
в тегах линий есть различные значения admin_level,
note: в первом сегменте нет тега “admin_level=4”
Италия:
Friuli Venezia Giulia(4) - загружает
граница не собрана в отношение,
в тегах линий есть (boundary=administrative, admin_level=4)
Valle d’Aosta(4) - загружает
граница не собрана в отношение,
в тегах линий есть (boundary=administrative, admin_level=4)
Испания:
Castilla y León(4) - не загружает
в тегах отношений есть (boundary=administrative, admin_level=4),
в тегах линий есть (boundary=administrative, admin_level=4),
note: в первом сегменте прописан тег “admin_level=2”
Польша:
województwo wielkopolskie(4) - не загружает
в тегах отношений есть (boundary=administrative, admin_level=4),
в тегах линий есть (boundary=administrative)
Германия:
Hamburg(4) - загружает
в тегах отношений есть (admin_level=4,boundary=administrative),
в тегах линий есть (admin_level=4)
Nordrhein-Westfalen(4) - загружает
граница не собрана в отношение,
в тегах линий есть (boundary=administrative, admin_level=4)
Франция:
Provence-Alpes-Cote d’Azur(4) - не загружает
в тегах отношений есть (admin_level=4,boundary=administrative),
в тегах линий есть (boundary=administrative, admin_level=4),
note: в первом сегменте нет тега “admin_level=4”
Турция:
Antalya(4) - загружает
в тегах отношений есть (admin_level=4,boundary=administrative),
в тегах линий есть различные значения admin_level,
note: в первом сегменте нет тега “admin_level=4”
İç Anadolu Bölgesi(3) - не загружает
в тегах отношений есть (admin_level=3,boundary=administrative),
в тегах линий есть (boundary=administrative, admin_level=3),
note: в первом сегменте нет тега “admin_level=3”

P.S. автору скрипта я написал, он обещал посмотреть, что можно сделать… но не знает когда появится время для этого.

Проверял где ? В браузере всё без проблем загружается, у меня файл на 2Мб, но вот на месте в josm не работает.

проверял в JOSM конечно - всё подробно расписал вроде. речь про скрипт, на кой мне это все в браузере или где-то ещё?
хотя тоже интересно, почему такое различие в поведении… может в заголовках запроса или в символах перевода строк что-то не так

Ну если в браузере ок, то это проблема не overpass.

не все так просто… ок, надо проверить тогда и через браузер, что займет некоторое время.
но как заметил в соседней теме akks:

первые запросы вернули пустой ответ, пример такого ответа:

<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2014-03-20T07:05:01Z"/>


</osm>

но дальше отдал границу