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

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

Я десятый год говорю о ценности нечеткости как технологического решения. И даже добился в этом немалого успеха, например, популярности стикера «нечеткое тегирование» в телеграмм-канале 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 или пришел к результату случайно, но первое впечатление от этих карт выглядит как «икеевские дизайнеры совсем охуели».

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

Посконная топонимика на карте OpenStreetMap

С главным правилом картографического дизайна меня познакомил преподаватель из академии. Мы тяпнули по пятьдесят, закусили, после чего он глубокомысленно изрек: «Если объект на карте напоминает член или жопу — его следует отобразить так, что-бы это не привлекало внимание». Например, наложить поверх надпись. Но что делать, если сама топонимика такова, что шишка Роскомнадзора встает и начинает малафитить все подряд? Например, в Тосненском районе Ленинградской области есть ручей «Пиздинский», который на генштабовских картах стыдливо обозначен как «Пизинский».

Более того, если обратиться к сборнику «А Се грехи злые, смертные…» любовь, эротика и сексуальная этика в доиндустриальной России Х — первая половина XIX века», что вышел в Институте этнологии и антропологии им Н.Н.Миклухо-Маклая РАН (1999 год — о было время!), можно найти прелюбопытнейшую статью Владимира Дмитриевича Назарова («Срамословие в топонимике России XV — XVI веков»), который утверждает, что на тот период каждый тысячный топоним был образован от матерного корня. И где теперь все эти речки Блядея, Еботенка, Пиздюрка, Наебуха и Ненаебуха, местечки Хуярово, Пезделёво-Долгое, деревни Пезделка, Пиздюрино, Хуйково, Ебехово, Поиблица, Мудищево и овраг Блядейский отвершек? Не может быть, что-бы ничего подобного не сохранилось до настоящего времени.

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

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

Хуй (точнее Hue) — деревня во Вьетнаме:
хуй во Вьетнаме

Как так? Ни одного топонима в России. И это при том, что родственным ему топонимом «Хвойное» (согласно работе Г. Ф. Ковалева «Русский мат — следствие уничтожения табу», опубликованной в сборнике «Культурные табу и их влияние на результат коммуникации. — Воронеж, 2005» на страницах 184-197) обладают около десятка населенных пунктов.

А что с остальными словами? Лет пятнадцать назад, я услышал прелюбопытнейшую версию значения слова «пизда», которая гласила, что сие есть «углубление на местности из которого течет вода». Спустя годы в Румынии неожиданно обнаружилось подтверждение. Пизда — родник у дороги в город Пояна Бленки:
пизда

Обсценный аналог копуляции в русской топонимике OpenStreetMap не представлен. Но если мы введем в поиск «Ебать», а еще лучше «Ebat», то получим множество топонимов во Франции, Эфиопии, Камеруне и Нигерии. Кстати, камерунский Ebat не отрисован от слова вообще. Займусь им после того как закончу с мадагаскарской деревенькой на реке Онилахи:
Ебат в Камеруне

Еще больше топонимов можно найти по созвучию со словом «манда». В основном Манда присутствует в странах Африки и Ближнего Востока, но есть и несколько европейских примеров, которые, впрочем, не относятся к России. Например Манда из итальянского Турина:
манда в Италии

Топоним Елда (Elda), напротив, характерен более для европейских стран и США (будете в Нью-Йорке, прогуляйтесь вдоль переулка Фелпса, что на Статен-Айленде):
елда в США

Даже в России есть топоним Елда, который несколько завуалирован умляутом (или как он там — я не спец по диакритике):
Ёлда в России

А в Крыму жопа:
Жопа в Крыму

Если не считать Крыма, жопа больше нигде в мире не встречается, да и там она одна и является достопримечательностью. А «Блядь» в топонимике OSM отсутствует вовсе, как в написании с «ть» на конце, так и с «дь».

Таким образом, вся матерная топонимика русскоговорящих областей представлена лишь рекой Ёлда и камнем-жопой, причем происхождение Ёлды еще необходимо уточнить. Есть еще одна из гор с названиями Сиська, работы на которых я неторопливо описываю в цикле очерков «Уральские сиськи»:
Гора Сиська

Но этот топоним совсем невозможно признать табуированным. А уж отсутствие в русской топонимике OpenStreetMap производных от таких слов как «хуй», «пизда», «блядь» и «ебать» лучше всяких цифр доказывает насколько по-прежнему пуста база OSM в части наименований объектов. Равно, как и отражает одну из фундаментальных проблем проекта OpenStreetMap, развитие которого идет по пути копирования коммерческих продуктов. Тот кто постоянно сравнивает себя с великаном навсегда останется карликом.

P.S. К чему это я? Сервис OSM streak, запиленный не так давно Ильей Зверевым из Maps.me офигенен. Он каждый день присылает на почту или в телеграмм небольшое задание на маппинг. Оно несложное, но не позволяет забыть какой клавишей углы выпрямляют.  А ведь в теории, к нему можно прикрутить и обратную форму, которая позволяет отправлять не правки с выполненным заданием, а задания, которые требуют выполнения. Нужно вам нарисовать дороги в деревне Миндюкино, рисуете пирог, снабжаете тегом #МиндюкиноНидХелп и все, кому этот район интересен, периодически получают напоминалку. Это быстро перерастет в рубльдомиковою коммерцию (хочешь что-бы карту рисовали за тебя — плати), но какая разница? Все равно результат будет такой же чумовой как у Альбера Камю.