Нужна помощь или совет в решении вот такой задачи: хотелось бы выгрузить все ж/д станции России, причем с группировкой по федеральному округу и региону, в 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 в цикле обойти каждый и сохранить результат?
А кто подскажет, можно ли как-то отсеять запрашиваемые объекты по габаритам (для way)? Например, для natural=water показать все больше 100 метров в широтной или долготной протяженности. Или по длине way. Просто мелких уж очень много получается, мне достаточно только самые крупные.
А подскажите, пожалуйста, пример запроса для выгрузки субъектов РФ? Вроде 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. Какой масштаб использовать или что-нужно сделать, чтобы не было ошибки и получить границы всех регионов? ))
Мне кажется вам стоит перейти на выгрузки и фильтровать всё самому, через osmosis или osmfilter. Написал один раз батник с нужными параметрами и потом просто запускаешь для получения всех нужных данных (в том числе и районы, города).