Вопросы, которые у меня скопились, позже, а пока азбука, которую я успел освоить и может кому-то пригодится тоже.
Типичная задача - поработать в JOSM с объектами определенного типа, например place. Обычно для этого просто загружается кусок карты в JOSM и ставится фильтр. Но, во-первых, в JOSM есть ограничение на размер скачиваемой области, во-вторых если частями загрузить целый регион то данных может быть очень много и JOSM безбожно тормозит.
Для таких задач можно использовать OverpassAPI, фильтрация будет проведена ещё на сервере и в JOSM подгрузятся только нужные объекты. Всё что для этого нужно - установить плагин mirrored_download и составить правильный запрос при скачивании данных.
Описание языка запросов Overpass QL
- Устанавливаем mirrored_download и перегружаем JOSM: http://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide#Edit_filtered_data ;
- Открываем окно загрузки File → Download from Overpass API…
- Выделяем bbox региона. Из приятного - можно игнорировать предупреждение в правом нижнем углу о выделении слишком большой области.
- Набираем код на языке запросов QL и кнопку Download
Пример 1:
[timeout:15];
/* скачать объекты place */
( node[place];
way[place];>;
rel[place];>;);
(._;rel(bn););
(._;rel(bw););
(._;rel(br););
out meta;
Что произошло: скачались все объекты node, way, relation у которых есть тег place, вместе с входящими в них узлами, а также родительские отношения. Эти данные можно редактировать и заливать обратно в базу, ничего не поломается.
ВАЖНО:
- Желательно указывать разумный timeout чтобы не перегружать сервер. Я как-то некорректно составил запрос и ждал около минуты, ничего не происходило. Принудительно прервал и порепетировал на другом bbox. Оказалось я пытался скачать границу России.
- Обязательно использовать оператор out meta, а не просто out.
Пример 2:
[timeout:15];
/* скачать административные границы, которые пересекает bbox, кроме геометрии admin_level=2 */
( way[boundary];>;
rel[boundary][admin_level!=2];>;);
(._;rel(bw););
(._;rel(br););
out meta;
Например bbox выбран на границе стран. В этом случае скачаются границы смежных районов и смежных областей вместе с геометрией и admin_centre; границы стран будут скачаны только как отношения, без геометрии. Можно подгрузить члены отношения вручную в JOSM.
Примеры попроще:
Пример 3:
[timeout:15];
/* скачать только точки с адресами */
node["addr:housenumber"];
out meta;
Пример 4:
[timeout:15];
/* скачать заправки */
node[amenity=fuel];
out meta;
Если кто-то обнаружил ошибки в примерах просьба меня поправить. Также желательно другие примеры, которые могут пригодиться, особенно с попаданием объектов в какую-то область.
(исправлено: орфогр. ошибка)