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

Хороший способ, возможно это будет даже быстрее работать. Чтобы получить конкретно название области, нужно указывать zoom=5

http://nominatim.openstreetmap.org/reverse?format=xml&lat=47.18742&lon=39.63980&zoom=5&addressdetails=1&extratags=1&namedetails=1

Помогите запросить и раскрасить следующие данные:

  1. гос. границы;
  2. границы субъектов федерации (линии чуть тоньше или бледнее, чем у гос.границ);
  3. некоторые населенные пункты (в запросе будет список их названий) – в виде точки или маленького круга;
  4. другие некоторые населенные пункты (тоже списком) – как в п.3, только другого цвета.

Я бы не рвал ж… в оверпасс, а по-быстрому навоял это в mapbox studio.

mapbox studio для меня ещё более тёмный лес, чем сайт OverPass-Turbo.

Да не, там справить даже … Выбрал набор границы, задал толщину и цвет, как ты и хотел.

Нужна помощь или совет в решении вот такой задачи: хотелось бы выгрузить все ж/д станции России, причем с группировкой по федеральному округу и региону, в XML для последующей трансформации в GPX с Гарминовскими расширениями для указания хотя бы частичного адреса для каждой точки (точку из полигона попробую сделать при трансформации, или у Overpass есть “функция” центра полигона?). Группировкой надеюсь избавиться от геокодирования (или Overpass позволит и сможет выполнить ~100500 запросов геокодирования, если вообще это умеет?), т.к. хочу привязать к точкам и округ, и регион.

Вывод точек/полигонов станций в пределах одного региона у меня получился такой (пока просто на экран в http://overpass-turbo.eu/)):


[out:json][timeout:25];
area[name="Москва"][admin_level=4][boundary=administrative]->.searchArea;
(
  node["railway"="halt"]["station"!="subway"]["station"!="monorail"](area.searchArea);
  node["railway"="station"]["station"!="subway"]["station"!="monorail"](area.searchArea);
  way["railway"="station"]["station"!="subway"]["station"!="monorail"](area.searchArea);
);
// print results
out body;
>;
out skel qt;

Но как начать с России и идти вниз по отношениям boundary=administrative по subarea до admin_level=4, и получить в результатах и границы отношений, и точки/полигоны станций, так и не смог пока понять.

Или не с того конца пошел?

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

Ну так а в чем проблема - получить список регионов, положить его в csv, потом одной командой из командной строки через curl/wget в цикле обойти каждый и сохранить результат?

в свое время делал скрипт для получения всех н.п. в республике

[timeout:25];
area[admin_level=4][“name”=“Чувашия”][boundary=administrative]->.boundaryarea;

( node(area.boundaryarea)[“place”];
way(area.boundaryarea)[“place”];
relation(area.boundaryarea)[“place”]; );

out meta;

;
out meta;


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

А кто подскажет, можно ли как-то отсеять запрашиваемые объекты по габаритам (для way)? Например, для natural=water показать все больше 100 метров в широтной или долготной протяженности. Или по длине way. Просто мелких уж очень много получается, мне достаточно только самые крупные.

У кого-то есть проблемы, что сохранённые в браузере запросы пропали?

У меня какой-то чужой запрос появился вместо того, который был загружен.

ого. действительно все мои сохраненные запросы пропали, вместо них чьи-то чужие.

У меня такой нормально сохранился

[out:xml];
(
//  node["note"~"."]({{bbox}});
// You can also change node into way below

  node["fixme"~"."]({{bbox}});
);
out meta;
>;
out meta qt;

{{style:
node[note]{ 
  text : note;
  color: blue;
  fill-color:blue;
  fill-opacity:1.0;
}
node[fixme]{
  text: fixme; 
  color: red;
  fill-color:red;
  fill-opacity:1.0;
}
way[note]{ 
  text : note;
  color: blue;
  fill-color:blue;
  fill-opacity:1.0;
}
way[fixme]{
  text: fixme; 
  color: red;
  fill-color:red;
  fill-opacity:0.3;
}
}}

Всем привет!

А подскажите, пожалуйста, пример запроса для выгрузки субъектов РФ? Вроде admin_level 4
И еще вопрос - можно ли выгрузить и районы, города? Или для каждого субъекта надо будет ручками делать?

Выгрузка региона:
[out:xml][timeout:25][bbox:{{bbox}}];
(
relation[“admin_level”=“4”][“addr:country”=“RU”];
);
(._;>;);
out meta;


У меня тоже вопрос. Хочу выгрузить недостающие полигоны, не попавшие в нарезку, одним запросом.
Возможно можно сделать компактнее, но нужные мне данные приходят вот на такой запрос (3 отношения):
upd. удалось сократить до такого
(
relation(1125603);
);
(
.;
relation(151225);
);
(
.
;
relation(151223);
);
(
._;
way(r);
node(w);
);
out meta;

Overpass при этом возвращает дублирующиеся данные, если точки/линии содержатся в нескольких линиях/отношениях. Впоследствии на это ругается osmosis. Приходится искать дополнительно, чем бы убить дубли в файле osm.

upd. Последний вариант запроса работает, хотя наверняка можно ещё короче записать

Спасибо за ответ! Но всегда практически runtime error. Какой масштаб использовать или что-нужно сделать, чтобы не было ошибки и получить границы всех регионов? ))

Да вы микроскопом гвозди забиваете.
https://osm.wno-edv-service.de/boundaries/

круто. Но получается как минимум 85 раз нажать , чтобы выбрать субъекты и это не считая районы

Мне кажется вам стоит перейти на выгрузки и фильтровать всё самому, через osmosis или osmfilter. Написал один раз батник с нужными параметрами и потом просто запускаешь для получения всех нужных данных (в том числе и районы, города).