Экспорт отдельных слоев в SVG

Добрый день.
Проблема такая. Понадобилось сделать векторную карту для википедии (небольшой участок французского департамента Нор-па-де-Кале) с отображением мелких населенных пунктов. Здешние карты для этого подходят идеально. Только одна проблема - они слишком перегружены ненужной для меня в данном случае информацией. Мне необходимо чтобы на карте были города-деревни, реки, основные дороги и административные границы. Всё. И не нужны аэропорты, железные дороги, тропы и прочая инфраструктура. Скачав отсюда этот участок я получил монстра с огромным для SVG-файла размером и огромным же количеством объектов, редактирование которого вручную оказалось адом кромешным. Поэтому я решил узнать - а нельзя ли при экспорте как-нибудь указать какие слои тебе нужны, чтобы не экспортировать всё сразу. Прчитал все FAQи и руководства, но ничего про это не нашёл, потому задаю вопрос здесь.
Заранее спасибо.

maperitive
оставить в стиле только то что нужно

Полагаю, у вас 2 варианта:

  1. Отфильтровать полученный SVG (Inkscape, Adobe Illustrator, etc., по вкусу)
  2. Воспользоваться Maperitive

Оба пути приблизительно одинаково трудозатратны. Впрочем, если вы собираетесь заниматься этим на постоянной основе, 2-ой вариант перспективнее.

Принцип я понял. Жаль, что Maperitive этот участок не осиляет - слишком большой.
В любом случае - спасибо за советы.

Если данных слишком много - можно предварительно отфильтровать их osmosis-ом, оставив только нужное.

Попытался прочитать про osmosis, но там все на инглише, с которым у меня неважно. Да к тому же для человека незнакомого со скриптами и узнавшего о существовании OSM пару дней назад, это что-то запредельно сложное. Можете хотя бы сказать какой командой выполняется такая фильтрация?

Есть незаконченный русский перевод - http://wiki.openstreetmap.org/wiki/RU:Osmosis
Не ахти, но хоть что-то.

Таких команд есть несколько видов. В качестве примера в описании приведён такой вариант:

osmosis --read-xml city.osm --way-key-value keyValueList="railway.tram,railway.tram_stop" --used-node --write-xml city_tram.osm

Здесь идёт фильтрации линий при помощи ключа way-key-value. Есть так же и другие ключи, задающие разные виды фильтрации. Доступные по умолчанию фильтры и примеры их использования описаны в разделе Data Manipulation Tasks

Есть так же разные plugin-ы к osmosis-у, которые могут добавлять свои специфические ключи для разнообразных манипуляций с данными, но в данном случае они скорей всего не понадобятся.

Задание условий фильтрации - это не всегда просто, надо знать внутреннюю структуру данных OSM. К примеру, реки - это не какой-то один тип объектов, они могут состоять как из линейных объектов (условные линии рек), так и из площадных (русло реки целиком), которое в свою очередь может быть как простой замкнутой линией, так и составным мультиполигоном с дырками внутри.

Если не хотите во всё это вникать - можете предоставите список интересующих вас данных, можем попробовать составить параметры фильтрации, которые оставят только их.

Для этой задачи можно обойтись и без osmosis. Достаточно выкачать нужные объекты через overpass api или xapi. Можно даже не склеивать всё в один osm-файл, Maperitive съест сразу несколько.
Удобно написать небольшой скрипт на чём-нибудь, и для каждой области подставлять туда bbox.

Я тоже делаю карты для википедии, но иногда svg получается некрасивый. Надо его тестировать на http://commons.wikimedia.org/wiki/Commons:SVG_Check

http://commons.wikimedia.org/wiki/Special:ListFiles/Svetlov_Artem

Sergey Astakhov

Извините, я забыл вчера спросить: а фильтрация осуществляется на этапе загрузки векторных данных или на этапе экспорта в SVG? Просто во втором случае osmosis будет бесполезен, так как я не могу их даже загрузить. После команды Map/Doanload OSM Data программа думает с минуту, а потом пишет “Could not download the OSM data: Время ожидания операции истекло”. На более мелких участках всё грузится нормально. Видимо массив данных слишком велик.

Мне бы, чайнику, как-нибудь попроще это все изложить. А то я уже начинаю думать, что ручное редактирование не такое уж и трудное как мне казалось. :slight_smile:

Ну да, с точки зрения дизайна OSM-карты конечно не идеал, но так они не для того и предназначены. Их главное предназначение, как я понимаю, - функциональность, а красота - дело второе.

Это вы пытаетесь напрямую скачать данные с сервера. Большие наборы так разумеется не скачать - сервер и его каналы не резиновые. Есть другой путь - скачать готовый дамп данных, уже нарезанный по регионам. Так можно выкачать любой объём (вплоть до дампа всей планеты). Есть несколько сервисов, которые ежедневно делают такие дампы. Если он слишком большой для программы - можно дополнительно отфильтровать его osmosis-ом. Может хватить даже примитивной фильтрации по области.

Окей. Давайте попробуем.

Какие конкретно данные нужны? Георафические координаты прямоугольной области, которую нужно вырезать, и названия типов объектов, которые нужно на ней оставить, - этого будет достаточно?

Перевод значительно дополнен. Кое на чём споткнулся и пока оставил нетронутым, но завтра наверняка осилю.