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

Напишите подробнее:

  • что значит связанные? Это пересекают район где-то, полностью в нем находятся, дома с этой улицы попадают в район или на улице стоит индекс района?
  • сколько районов, насколько больших

Последний вариант “связности” делается просто, иначе нужно примерно то, о чем я спрашивал несколько постов назад. Но это работает очень медленно (т.е. оверпасс может отказываться выполнять) и к тому же нестабильно.

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

В первом приближении можно вот так получить улицы которые хоть где-то пересекают границу района:

[out:csv(::id,"name")][timeout:10];
way(216882430);
out geom;
map_to_area ->.area;

way [highway]["name"](area.area);
out;

То есть руками смотрите номер линии, соответствующей району (или мультиполигона, тогда надо заменить “way” на “rel”), вбивате его и получаете список улиц в этом районе в таком виде:

180119057	Calle Ramo Toscana
180119058	Calle del Ogio o de la Rugheta
180119059	Calle del Paradisio
180119060	Calle del Sturion

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

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

way [highway]["name"](area.area);

Найдёт всё что внутри.
Другое дело, что у нас кучу “микрорайонов” это не понятное “вон там за дрогой” и отмечено просто точкой.
Если это не разовая хотелка для своего города, то имеет смысл поднимать свой локальный nominatim.

Найдёт всё что внутри.
В смысле не обязательно, чтобы внутри были точки?

Спасибо, оказывается формат запросов изменился, раньше area писалась в начале запроса. То-то я смотрю мои старые запросы с area выдают ошибку. А может и не в этом дело…

Это только у меня JOSM который день выдает ошибку соединения с Overpass API? Предлагает проверить наличие Интернет соединения. Или это новогодние каникулы сервера Overpass API?

Здрасти, уже почти год будет, как основной адрес заблокирован телеграмом. Используйте альтернативы.

Какой адрес заблокирован? Какой рабочий? Я весь год пользовался без проблем. При чем здесь телеграмм?
В работе был - http://overpass.openstreetmap.ru/cgi/
В резерве - https://overpass-api.de/api/
Прошу развернуть ответ. Укажите адрес. Спасибо.

https://overpass-api.de/api/

https://overpass.kumi.systems/api/

Не телеграммом, конечно, а роскомпозором, который всё ещё пытается с ним воевать при помощи ковровых блокировок.

За что гонения?! В чём его вина? Впрочем спасибо за развернутый ответ. Запустил. На долго ли? Никогда с этим не сталкивался.

https://ru.wikipedia.org/wiki/Telegram#%D0%9A%D0%BE%D0%BD%D1%84%D0%BB%D0%B8%D0%BA%D1%82_%D1%81_%D0%A0%D0%BE%D1%81%D0%BA%D0%BE%D0%BC%D0%BD%D0%B0%D0%B4%D0%B7%D0%BE%D1%80%D0%BE%D0%BC

Телеграмм мне не интересен. Не пользую.

Уже решено! Работает! (см. выше)

странно, а кто вопрос этот задавал: “За что гонения?! В чём его вина?”

Там чуть выше - хронология (“Не телеграммом, конечно, а роскомпозором,…”). Примеры даны блокировки и рабочего канала для Overpass API (по теме).

Ребята кто поможет с загрузкой данных?

Исправляю ошибки в Киргизии. Заметил что очень часто addr:housenumber копируют в name. Хочется всё это вычистить. Помогите составить запрос, по которому Overpass загрузил бы объекты, у которых совпали бы значения addr:housenumber и name.
Если это возможно.

[out:json][timeout:25];
// gather results
(

  node["name"](if: t["name"] == t["addr:housenumber"])({{bbox}});
  way["name"](if: t["name"] == t["addr:housenumber"])({{bbox}});
  relation["name"](if: t["name"] == t["addr:housenumber"])({{bbox}});
);
// print results
out body;
>;
out skel qt;
1 Like

Очень круто, спасибище!

Здравствуйте, помогите пожалуйста, я в качестве школьной проекта решил сделать некое приложение. В крации, я в OpenStreetMap видел карту на которой изображены маршруты общественного транспорта. И я хочу чтобы приложение проверяло, нахожусь ли я около этой дороги или нет(“около” я подразумеваю что координатам совпадает с дорогой или же ±погрешность). У меня только с этим возникли серьёзные трудности, помогите пожалуйста