Контурная карта растительности

Создание крупномасштабной контурной карты растительности

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

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

Обычно таких временных и финансовых ресурсов нет, поэтому для составления карты растительности приходится использовать технологию «Похуй, пляшем», суть которой заключается в одновременном сборе геоданных, создании классификатора объектов и переносе подготовительных работ на постполевое время.

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

Рассмотрим процесс создания генерализованной контурной карты растительности 13-14 зумов (1:25 000 — 1:50 000) долин рек Сарм-Сабун (иногда встречается написание Сармсабун) и Глубокий Сабун Ханты-Мансийского автономного округа. Сливаясь эти реки образуют правый приток Ваха — реку Сабун:
Слияние Сарм-Сабуна и Глубокого Сабуна

Логично начать картографическую работу с инвентаризации доступных данных. Для каждого региона этот список может быть разный, но стандартно в него входят Ландсаты разных поколений с их производными. Часто к ним примыкают цифровые модели местности, но в моем случае использовать их почти лишено смыла: SRTM до этих широт не доходит, ASTER Alos представлен только фрагментарно, а классический астер напичкан артефактами. Кроме того, DTM-фильтр при создании карт растительности таежных равнин работает плохо. Всевозможные модисы и сентинели меня не устраивали по разным причинам (качество, покрытие, получение, алгоритмы обработки и сравнения и др.). Об использовании карт OSM и генштаба не может быть и речи. У первых в этом месте вакуум, а вторые мало того, что устарели, так еще и неизвестно откуда взяты. Украденные карты государственной топографии хороши для навигации на месте (особенно это касается карт ГГЦ), но использование таких материалов в своих проектах — абсолютный признак профнепригодности. Лучше всего это иллюстрирует конференция «Опыт использования карт Генерального Штаба», проводимая обществом безруких картографов Саудовской Аравии. Данные тематического картографирования, равно как и данные AVHRR в список исходных материалов так же не попали, по причине того, что их использование более оправдано для анализа растительности и финального уточнению карты, чем для первоначального выделения границ растительности.

В итоге для создания первичного контура выбраны сцены Landsat-8 за 15 июля и 12 мая 2018 года и растр сомкнутости древостоя («Treecover») проекта Global Forest Change. Кроме того, растр водной поверхности GFC использован для быстрого создания слоя водоемов. Дополнительные ландсаты (Landsat-ETM за 30 июля 2000 года, Landsat-MSS за 30 июня 1983 года и Landsat-MSS за 04 мая 1983 года) в создании контурной карты не использованы, но по ним производится расчет зональной статистики для последующего дешифрирования и уточнения границ растительных сообществ.

Уже из списка источников видно, что для создания контурной карты я применяю фенологический подход, который заключается в том, что вы создаете контуры не на основе одного растра, а на основе композита, образованного слиянием зимних и летних снимков. «Зимний» снимок сделан 12 мая, но учитывая позднюю снежную зиму этого года и климат региона — это нормально.

В начале из каналов летнего и зимнего снимков создадим растры вегетационного индекса. Вегетационный индекс — NDVI (Normalized Difference Vegetation Index) показывает количество фотосинтетически активной биомассы. Обычно его не рекомендуют применять для снимков зимнего периода, но для нашей задачи требуется именно это. Расчет ведется с помощью растрового калькулятора QGis по формуле:

NDVI = (NIR-RED)/(NIR+RED),

где NIR и RED — инфракрасный и красный каналы каждого снимка соответственно.

Значения каждого индекса увеличиваются по формуле 100*(значение NDVI + 1). Прибавление единицы избавляет от отрицательных значений. Умножать в сто раз необязательно, это сделано исключительно ради субъективного удобства. Такое изменение индекса не влияет на конечный результат.

Рассчитав вегетационные индексы, логично использовать ту же формулу для оценки фенологических изменений. Поскольку общепринятого наименования у данной величины нет, назовем ее нормализированным фенологическим индексом — NDFI. Соответственно, расчет NDFI производится по формуле:

NDFI = (NDVIлето-NDVIзима)/(NDVIлето+NDVIзима):

Растр NDFI (минимальные фенологические изменения - красным)

Растр NDFI (минимальные фенологические изменения — красным)

Приступим к обработке растра сомкнутости лесной растительности GFC. Исходный слой GFC имеет пустые значения пикселей на безлесных участках. Использование такого растра приведет к разбалансировке цветов на финальном композите, поэтому требуется заполнить пустоты нулевыми значениями.

Может показаться ошибочным использование GFC совместно с ландсатами текущего года, поскольку слой «treecover» GFC актуален на 2000 год. На самом деле такое совмещение дает дополнительные возможности, поскольку при совмещении растров проявятся контуры горельников и ветровалов 2000-2018 годов.

После описанных процедур мы обладаем тремя растрами, которые будем использовать для создания композита: летние значения NDVI (количество зеленой биомассы в июле 2018 года), NDFI (величина фенологических изменений с мая по июль 2018 года) и treecover (сомкнутость леса на момент 2000 года). Сведем все это в единый RGB-композит, установив красный канал для NDFI, зеленый канал для NDVI, синий канал для treecover. Во всех каналах улучшим контраст растяжением от минимального до максимального значения. В QGis это можно сделать автоматически, поэтому нет нужды нормализовать растры к диапазону 0-255:
RGB-композит

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

Создадим линейный слой реки. Лучше всего сделать это в JOSMe по слою Bing-а, после чего экспортировать данные в QGis. К сожалению, это возможно лишь при постоянном наличии хорошего интернет-соединения. Если с таковым проблемы, то можно использовать панхроматический канал Landsat с разрешением 15 метров на пиксель (у Landsat-8 это восьмой канал). На основе осевой линии реки строим буфер, в пределах которого планируется создание контурной карты (два километра в обе стороны от оси реки):
Осевая линия реки и буфер-граница карты

Далее обрезаете композит по контуру буфера:
RGB-композит обрезанный по контуру буфера

Это прообраз нашей будущей контурной карты. Мы не можем работать с тремя слоями RGB-композита одновременно, поэтому переводим все в восьмибитное изображение 256 цветов. Количество цветов можно сократить если вы уверены, что это не отобразиться на качестве результата. Это существенно ускорит работу, но в моем случае приходится идти по самому долгому пути:
PCT-композит

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

Необходимость фильтрации растра обусловлена тем, что пиксели имеют квадратную форму, а потому изолинии, построенные на основе них будут иметь очень ломаный и рваный вид. Для наглядности, вот пример изолиний с исходного (красные линии) и отфильтрованного (черные линии) растра из соответствующей статьи:

Чем сильнее фильтрация (речь о простом фильтре), тем более плавные изолинии вы получите в итоге. Проблема в том, что сильные коэффициенты фильтрации усредняют значения растра. В результате линейно вытянутый объект превращается в овальное пятно, контур которого абсолютно не соответствует реальности.

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

Для каждого полигона рассчитывается центроид:
Центроиды полигонов векторизированного растра

После чего слой центроидов интерполируется обратно в растр:
Интерполяция центроидов векторизированного растра

Таким образом, технологию векторной фильтрации можно описать как интерполяцию центроидов векторизированного растра. Отфильтровав этот слой мы получаем плавные изолинии, которые по форме близки к естественным границам:
Изолинии

Необходимо преобразовать изолинии в полигоны, поэтому для сохранности топологии перед началом процедуры следует провести генерализацию, убрав изолинии малой протяженности (в моем случае менее двухсот метров). Кроме того, следует определиться, какие изолинии наиболее соответствуют естественным границам растительности. Сделать это можно сверяясь с высокодетальными снимками (что, правда не совсем законно даже в случае с Bing-ом):
Изолинии на снимке Bing

Для облегчения процедуры советую посмотреть гистограмму распределения количества значений и попробовать разные классификации (по стандартному отклонению, по равным интервалам, по границам Дженкса и др.). Естественно, к этому моменту вы должны представлять, хотя бы по литературным данным, какие типы растительного покрова разделяют ваши изолинии.
Распределение цветов

Такой анализ требует в несколько раз больше изолиний, чем вы планируете получить типов контуров на карте. После того, как наиболее достоверные линии найдены, сохраняете их в отдельный слой и приступаете к созданию полигонов. К великому неудовольствию это тоже не сводится к элементарному действию, поскольку процедура в SAGA «Polygon-line intersect» выдает совершенно негодный результат. Приходиться преобразовывать изолинии в полигоны, после чего чередованием GDAL-овских алгоритмов разности и объединения сводить все в единый слой.

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

В конечном итоге, экспортируем все в TileMill или MapBox Studio (смотря на стоимость вашего интернета), настраиваем стиль и нарезаем карту на тайлы:
Карта в TileMill

Все. Теперь можно подключить mb-тайлы к лефлету или tms-серверу, расставить предварительные точки описаний, кешировать все в навигатор и выезжать в поле.

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



Десять ошибок картографа

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

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

1. Качество графики

Тут даже комментировать нечего. Просто треш какой-то. Я понимаю, что файл должен весить мало, но не скармливать же джипеговскому алгоритму Хаффмана все то, ради чего стоит открывать карту! Да, иногда приходится жертвовать качеством, но к великому сожалению слишком часто эти жертвы неоправданно велики.

2. Несоответствие объектов карты масштабу

Очень частая проблема, а среди тех, кто использует данные OpenStreetMap вообще почти повсеместная. Генерализация процесс трудоемкий, но необходимый, иначе вместо карты вы получаете холст в грязных пятнах. Обидно, что во многих случаях генерализация вообще не требуется — можно просто убрать объекты с карты, все равно они на ней никакой роли не играют. Для чего вам на карте тысячи озер размером с придорожную лужу если вы рисуете схему 302 железной дороги?

3. Неаккуратная работа с разрывными линиями

При разработке картографического стиля с большой вариативностью линейных объектов часто возникает желание зафигачить пунктир или штрихпунктир. Это прекрасные приемы, но они требуют обязательного соблюдения мер предосторожности. Линии с разрывами хорошо подходят только для прямых объектов. Другими словами: отображать штрихпунткиром границы американских штатов — норм. Отображать штрихпунктиром границы областей России — фу-фу-фу.

4. Невнимательная работа с цветом

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

5. Небрежность в расстановке подписей

Представьте себе два дома, которые стоят вплотную друг к другу, а указатель с номером висит ровно посередине. Куда идти? То же самое с картой. Да, не всегда удается достичь идеала, иногда просто невозможно не выйти за границы дозволенного. Но гораздо чаще авторы просто уповают на всемогущество хилых алгоритмов расстановки подписей.

6. Разрушение целостности

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

7. Нарушение общепринятых традиций оформления

Иногда можно нарушить это правило (впрочем все остальные тоже) и покрасить озеро в красный, а лес в синий цвет. Но все же без особой нужды лучше этого не делать. Современная картография более требовательна к качеству интуитивного восприятия. Читатели, изнеженные мобильными сервисами привыкли к комфорту и не приемлят сносок внизу страницы как в «Войне и Мире». Чем реже вы будете вынуждать человека обращаться к легенде, тем лучше. Идеальный случай когда легенда совсем не нужна — все понятно сразу по карте.

8. Избыточная стилизация

Здорово когда автор выбирает цветовое оформление исходя исключительно из содержания карты, но к несчастью это не всегда эффективно. Если можно сделать градиент более контрастным, то почему бы этого не сделать? Читатель скажет вам спасибо за то, что ему не придется выбирать среди оттенков оранжевого или синего. Вспомните трехцветную шкалу высот/глубин со школьной географической карты. Но следует помнить, что это замечание справедливо лишь для ситуаций в которых градиентом показан основной объект карты. Если градиент выступает в роли фона, то часто имеет смысл наоборот сделать его максимально плавным, убрав лишние границы и разгрузив карту для важной информации.

9. Прямоугольная компоновка карты

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

10. Неконтролируемый объем

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

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

Но в целом я доволен, насладился. Спасибо участникам конкурса за работы и организаторам за предоставленную возможность. С тревогой должен сообщить всем, кто стирал с кульмана лезвием чернильные кляксы. Судя по тому, что творят студенты первых курсов, если срочно не начнем учиться, через десять лет мы со своим умением придавать объем домикам в мапнике пойдем улицы подметать. Это тоже почетно, но не так интересно. Тщательнее надо.

Шкаф в музее железных дорог

Выход есть

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

Планы эвакуации нужно изучать заранее. Я очень ценю своих читателей. Поэтому просто не мог проигнорировать всеобщую пожарную паранойю и надергал из старых постов соответствующие фоточки, которые сделают вашу жизнь безопасной. Внимательно отнеситесь к этому посту, поскольку после его прочтения вы в любой момент времени будете знать куда давать по съебкам. Например из офиса Mail.Ru:
План эвакуации в МаилРу

Или из океанариума в Питере:
Океанариум

Или из планетария. Московского:
Московский планетарий

и нового питерского:
Питерский планетарий

Из питерского зоопарка:
Питерский зоопарк

и зоопарка в Москве:
Московский зоопарк

Из главного музея железнодорожного транспорта:
Паровозный музей

И шахтинского краеведческого музея:
Шахтинский краеведческий музей

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

Ладно-ладно. Вы уже поняли, что я издеваюсь. Это говно сколько не изучай, толку не будет. Я просто хотел вам подкинуть идею для indoor-маппинга.