Паззлы OpenStreetMap

Паззлы OpenStreetMap

Последние лет пять я жил в ожидании того, что сувенирные и канцелярские магазины вот-вот наполнятся картографическими паззлами. Сколько можно собирать и дарить бесконечные пейзажи, животных и автомобили? Вот собрать из кусочков карту — это совсем другое дело. Но магазины все не наполнялись, а мне надоело ждать. Поэтому я вспомнил свой опыт работы в полиграфии и сделал вот такую штуку:

Паззл в процессе сборки

Карта представляет собой лист плотного картона 20х29 см, разбитый на 120 элементов. Толщина основы примерно 1,5 мм, что для таких размеров листа более чем достаточно.

Паззл с обратной стороны

В качестве карты использованы данные OpenStreetMap (© Участники OpenStreetMap) в стандартном мапниковском стиле. Это жуткий стиль если им пользоваться по назначению. Зато он навевает прекрасную ностальгическую рефлексию. В собранном виде эта красотень выглядит так:
Паззл в собранном виде

Срок сборки карты зависит от вашей наблюдательности и знания местности. Но будьте готовы к неожиданностям. Я в центре Москвы вроде неплохо ориентируюсь, а куда «Китай-город» прилепить минут пятнадцать искал. После сборки карту можно вставить в рамку и на стену повесить, можно разобрать и спрятать обратно в коробку до следующего творческого порыва. Коробка поставляется вместе с паззлом.

Стоит это удовольствие 750 рублей + доставка. В наличии Москва, Питер, Шахты (само-собой), Ростов-на-Дону и другие важные города страны. Если у вас есть дети, или вы любите изучать карты, или собирались мапить, но отключили интернет, или решили прикупить презентов на корпоратив, или хотите кому-то рассказать про OpenStreetMap, а он после слов «как Википедия, только карты» засыпает — велкам! Пока я не забыл в каком порядке идут друг за другом дюзы станка, время еще есть.

Паззл на фотографии использует следующий фрагмент тайлов OpenStreetMap:

Другие примеры — Тольятти:

Санкт-Петербург, Васильевский остров:

Леса юго-запада Ленинградской области на нечеткой карте

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

Я десятый год говорю о ценности нечеткости как технологического решения. И даже добился в этом немалого успеха, например, популярности стикера «нечеткое тегирование» в телеграмм-канале OpenStreetMapRu. Слово «нечеткое» у картографов имеет столь отрицательную коннотацию, что каждый раз мне приходится начинать свое объяснение заново. Может быть более правильным было-бы использовать такой термин как «фаззи-карта» или «континуальный стиль», но я не мастер в словесном жонглировании. Поэтому нечеткую карту обычно представляют себе так:

На мои протесты обычно отзываются предложением, мол если мы не правы, то покажи нам такую карту. И это справедливо. Давайте же раскрасим карту OpenStreetMap в нечеткие цвета. Возьмем сотню точек с присущими им данными о растительности:

Каждая точка находится в лесу и описывает его породный состав таким образом: С(s)Е(e)Б(b)О(o), где С,Е,Б,О — это основные преобладающие породы (сосна, ель, береза, осина), а буквы в скобках — коэффициенты истинности, которые отражают правдивость суждения о том, что лес состоит из данной породы. Например чистый сосновый бор будет выглядеть так: С(1)Е(0)Б(0)О(0). А вот пример обычного березняка с примесью осины и елки: С(0)Е(0,1)Б(0,7)О(0,2). Опытные люди сразу уловят в этой нотации формулу состава древостоя и будут абсолютно правы, поскольку в данном случае я рассматриваю самый простой подход, при котором суммарная истинность константна. Кроме того, каждой точке присвоены данные по запасу. Это не обязательно, но позволит сделать наш пример еще показательнее.

Конечной целью нашей работы будет карта лесов юго-запада Ленинградской области. Прежде чем мы начнем, замечу, что приведенные выше точки были получены в полевых работах и соответствуют действительности. Но при их отборе я руководствовался иными, нежели составление этой карты целями, а потому для результата неминуемо будет характерна ошибка выжившего. Это не имеет значения для анализа картографических экзерсисов, но следует учитывать, если вы планируете использовать сущностные данные карты.

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

Нам потребуется пять таких растров. Четыре растра раскрасим по градиенту прозрачности цвета, принятого для обозначения породы на лесотаксационных картах (сосна — оранжевый, ель — фиолетовый, береза — синий, осина — зеленый). Пятый растр будет у нас интерполяцией по запасу. Его мы раскрасим по градиенту от белого с прозрачностью 60% до прозрачного белого. Это позволит нам отличать густые леса от редкостойных, даже если их состав одинаков.

Теперь очередь за данными OpenStreetMap. Просто подложка Mapnik-a, нам не подойдет если мы хотим сохранить на карте дороги, названия, гидрографию и прочие объекты. Поэтому скачиваем через оверпасс исходные данные и настраиваем черновой стиль.
данные OSM

Прежде чем мы начнем компоновку, нам придется удалить из всех слоев мелкие объекты, создающие лишний шум. Полигоны лесов мы будем использовать в качестве маски. Это можно сделать путем изменения геометрии, но хвала небесам, в QGis есть возможность инвертирования полигонов. Остается только наложить слои друг на друга в нужном порядке и немного поправить стиль:

А потом еще раз поправить стиль. И вот тут еще. И дороги плохо выглядят. И тут тоже следует исправить. Так, спустя семьдесят шесть вариантов стиля приходим к результату, который можно считать приемлимым (хотя все-равно говно):

Теперь перекинем все в GIMP и довершим оформление, добавив рамку, легенду и прочую необходимую атрибутику. Особенно сложно с легендой. Если бы у нас было две породы, достаточно было бы просто наложить на вертикальный градиент одной породы, горизонтальный градиент другой. С четырьмя породами такой подход не работает. Я потратил на это много времени, но в итоге все-равно получился фейл, который остался на карте только потому что он похож на хипстотный логотип склада контейнеров.

Привет джипег!
легенда

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

В полном размере карту можно посмотреть по этой ссылке.

— Но тут же не видно четких границ? Что толку от такой карты, если я никогда не пойму ельник в этом районе или березняк?
— В том-то и дело, что если по карте вы не можете однозначно назвать породный состав, то у вас это не выйдет и на местности. Что по карте? Какая-то смесь из елки, осины и березы? Ну так и в лесу тоже самое.

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

Мапник в Икее

Икеевский Мапник

Иду сегодня по Икее, никого не беспокою. Разглядываю утомительные пейзажи благоустроенного быта, снабженные этикетками на невнятном языке. Вот Юпперлиг, Хемнэс. Тут Свартосэн, Линдвед, Мапник, а это Мюкен… Так, стоп! Какой, нахуй, Мапник? Подошел поближе — точно Мапник:

Да не простой, а олдскульный, розлива середины двухтысячных годов. Сейчас про него уже никто не помнит. Я сам не сразу сообразил: открыл дома OpenStreetMap, а картинка совсем иная:
OSM style

Хорошо, что в моих коллекциях есть чемоданчик осмера, в котором я сохранил ссылку на проект OSM Then And Now, созданный для демонстрации изменений в OSM c 2007 года. Сходство с Икеевской картиной Пьёттерид не идентичное, но ощутимое:
сравнение картостилей

Над Пьёттеридом висит более дорогой триптих Бьёрнамо, в котором тоже усматривается сходство с OSM-овским стилем, только уже современным. Особенно это видно, если уменьшить насыщенность OSM Mapnik на 35-40 процентов:
Бьёрнамо против OSM

Если убрать лишние подписи и поиграть с приоритетом дорог, можно добиться сходства до степени смешения картостилей. Это тем более удивительно, что OSM Mapnik — чудовищный картографический стиль, который плох во всем (и должен таковым быть), а икеевские триптихи выглядят вполне миловидно. Не знаю, черпал ли автор вдохновение в OpenStreetMap или пришел к результату случайно, но первое впечатление от этих карт выглядит как «икеевские дизайнеры совсем охуели».

Но людям нравится.