Итоги филологической вечеринки

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

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

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

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

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

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

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

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

Картографический экзерсис

Нет ничего сексуальнее тригонометрии в необычных местах. Например, представление двумерного массива в качестве суммы квадратов синуса и косинуса. Это позволяет извлечь угол, который мало что дает, но невероятно притягивает. Или взять индекс NDVI. В конце семидесятых Ричардсон и Виганд предложили перпендикулярный вегетационный индекс — по сути бесполезная фигня, но какой полет мысли!

Или взять перпендикулярную раскраску слоя в гисах. Обычно одноканальные растры красят примитивно: малые значения красненьким, а большие зелененьким или наоборот. Но иногда имеет смысл одним цветом выделить краевые значения, а другим центральные. Сделать это можно разными способами, начиная от ручного задания диапазона, заканчивая вычислением модуля разницы текущего и среднего пикселя. Но все это так грубо, что даже противно. Другое дело — подключить тригонометрию.

Представьте, что значения яркости в канале соответствуют величине некоторого мифического угла. Сам этот угол пусть никого не интересует, важно лишь то, что в прямоугольном равнобедренном треугольнике оба острых угла равны сорока пяти градусам. Это значит, что нормализовав значения яркости к диапазону 0-90, мы получим пересечение графика синуса и косинуса яркости для значения 45. Следовательно, чем ближе значения яркости к медиане, тем ближе значения тангенса яркости к единице.

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

Много ли это дает в реальной работе? Да почти ничего. Но боже мой, как же это сексуально.

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

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

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

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

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

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

Рассмотрим процесс создания генерализованной контурной карты растительности 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-серверу, расставить предварительные точки описаний, кешировать все в навигатор и выезжать в поле.

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




Космическая эпоха

Космическая эпоха медленно, но верно наступает. Это не Гагарин, не Звездные войны, и не колонии на Марсе. Космическая эпоха — это время, когда из космоса на тебя смотрят тысячи глаз, пусть даже путем разных сервисов.

Правда тут речь скорее про авиапассажиров (рядом с Пулково), но суть все-равно верна. Жду время, когда надписи «видеосъемка свадеб», «кухни из гранита», «метизы по оптовым ценам» будут клеить не на задние стекла, а на крыши автомобилей.

А еще нас ждет грандиозный баттл: спутники ДЗЗ против коптеров. Это будет даже круче, чем встреча Гнойного с этим вторым, как его.

Полигоны и лесополосы

Разделение лесов, кустов и полей на старых ландсатах при помощи растра высот

Вот смотрите. Берем седьмой Ландсат за июль 1999 года на территорию Игнатьевского сельского поселения в Адыгее и строим по нему растр вегетационного индекса. Он же — стандартный NDVI, который считается по формуле (nir-red)/(nir+red), где nir — инфракрасный канал, а red — красный. В результате имеем вот такую хренотень:
NDVI-index

А теперь берем снимки Alos, которые улучшенный Астер, который, в свою очередь, отснял эту же территорию несколько месяцев спустя:
Alos

Теперь открываем JOSM и рисуем осевые линии лесополос:
JOSM

Которые затем буферизуем в QGis-e до ширины 100 м (что-бы ухватить разные пикселы Ландсата) и режем на стометровые отрезки поперек. Это в QGis требует особой акробатики, но мы справляемся. Самое главное, что-бы квадраты обязательно выходили за границы лесополосы:
лесополосы

Теперь считаем зональную статистику по двум растрам. С данных Alos снимаем размах, который соответствует разности максимальной и минимальной высоты в каждом полигоне (перепад высот). С растра NDVI снимаем среднее значение индекса в каждом полигоне. Экспортируем все это во внешнюю таблицу и строим примитивный график:
график

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

Остается только повторить процедуру в обратном порядке и получим простейшую карту растительности.

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