Все реки в порядке: как и зачем в географических науках ранжируют водотоки
Превью картинка для привлечения внимания
Привет хабр! Предлагаю погрузиться в одну увлекательную гидрологическую тему — ранжирование речных систем. Под катом я постарался привести материал полезный как для географов, которые сталкиваются с проблемой ранжирования векторного слоя рек с помощью геоинформационных систем (ГИС), так и для всех неравнодушных, которые иногда видели «красивые реки» на карте, но не знают, как именно они оформляются в картографических материалах. Начнем с картинки:
Рисунок 1. Изображение реки в двух вариантах (a и b)
Теперь вопрос: какая часть выглядит симпатичнее? — Для меня та, что внизу (b).
На самом деле, вторая визуализация более корректная и с точки зрения здравого смысла. Чем больше притоков впадает в русло реки, тем шире и полноводнее она будет. Например, одна из крупнейших рек мира, Нил, в своем истоке высоко в горах едва напоминает могучую реку в нижнем течении: с каждым километром пути к Средиземному морю река вбирает в себя все больше притоков и становится все более полноводной.
Представленная выше карта (Рисунок. 1b) была подготовлена на основе информации о структуре речной сети. В этом посте как раз хочется обсудить, какими способами можно получить эту дополнительную информацию о реках и какие инструменты для этого можно использовать.
Что такое река
Для начала объясним, как представляется информация о реках в геоинформационных системах. В картографии и Науках о Земле реки в большинстве случаев представляются в виде линейного векторного слоя: каждый участок реки изображается в виде линейного объекта с некоторыми характеристиками. Например, длина участка, его географические координаты (геометрия объекта), тип грунта, средняя глубина, скорость течения и т. д. (Анимация 1).
Анимация 1. Линейный векторный слой. В таблице атрибутов записан идентификатор сегмента реки (id), его геометрия (geometry) и скорость водотока (скорость течения, м/с). Важное замечание: геометрия отдельных линейных сегментов может определяться не двумя точками, а большим их количеством
Таким образом, когда вы видите реку на карте, то вы видите набор именно этих простых геометрических примитивов (отдельные строки в атрибутивной таблице), собранных в одну большую систему. Для визуализации характеристик сегментов можно использовать различные цвета (Рисунок 2).
Рисунок 2. Визуализация скорости водотока участков реки с помощью градаций красного
Для визуализации пространственных объектов и составления карт часто используются специализированное программное обеспечение, например ArcGIS (проприетарная ГИС) или QGIS (с открытым исходным кодом).
Структура рек
Информация для записи в таблицу атрибутов по рекам собирается разными способами: используются данные дистанционного зондирования, экспедиции, автоматические сенсоры на гидрологических станциях и т.д. Что же касается информации о структуре реки: она обычно присваивается специалистом в самый последний момент, когда он видит на карте, как выглядит вся система. Например, исследователь может сам добавить в атрибутивную таблицу векторного слоя новый столбец, в котором он присваивает ранг каждому сегменту реки (Рисунок 3).
Рисунок 3. Добавление нового поля и его визуализация с помощью толщины линии
Теперь мы видим, что Рисунок 3 напоминает схему из начала статьи (Рисунок 1b). Но возникает вопрос: по какому принципу можно присвоить такие значения? — Чтобы не затягивать, сразу ответ: их много. Существует несколько общепринятых систем ранжирования водотоков в гидрологии — см. например страницу википедии Stream order или для более глубокого погружения, книгу «Основы речной гидрологии и гидробиологии». Ниже приведены несколько подходов, которые я сам использовал (Рисунок 4).
Рисунок 4. Несколько подходов к упорядочиванию водотоков в гидрологии
Для чего это
Теперь пришло время ответить на вопрос для чего нужны такие системы ранжирования. Можно выделить две причины:
Визуализация — используя ранг как атрибут размера линейного объекта на карте, можно создавать красивые картографические материалы (Рисунок 1);
Дальнейший анализ.
Развивая второй пункт: знания о структуре речной сети могут быть объединены с другими характеристиками, например, для выявления следующих закономерностей (Рисунок 5). Как видно из рисунка, при увеличении ранга сегмента, скорость водотока уменьшается.
Рисунок 5. Зависимость скорости течения от порядка по Шриву
Какие инструменты можно использовать для ранжирования водотоков
Ранжировать большие речные системы вручную очень долго, поэтому для автоматического расчета рангов были разработаны специализированные инструменты. Существует два принципиально разных способа:
Ранжирование водотоков по растровым данным (цифровая модель рельефа);
Ранжирование водотоков по векторным слоям.
Выше было описано как можно назначать ранги векторным слоям. Однако пространственные данные иногда представляются в другом формате — в виде растров (матриц) (Рисунок. 6). Особенно часто при расчете рангов рек используются цифровые модели рельефа (матрицы, в которых каждый пиксель имеет определенный размер, например 90 на 90 метров, и значение высоты над уровнем моря, которое хранится в каждой ячейке этой матрицы).
Рисунок 6. Цифровая модель рельефа (ЦМР) в виде растрового слоя. Часто используется для расчета направления потока, а затем и его порядка
Цифровая модель рельефа используется для расчета матрицы направления стока (flow direction matrix) и аккумуляции (flow accumulation). По такому принципу работает, например, инструмент Stream Order (Spatial Analyst) в ArcGIS. В этой заметке я не буду подробно описывать, как работает такой алгоритм, поскольку в официальной документации есть довольно хорошие визуализации и описания (если хотите узнать больше, зайдите на страницу функции Flow Direction). Ниже я перечислил некоторые инструменты, которые можно использовать для получения порядка Штралеру с помощью растровых данных:
Однако все это требует большого количества манипуляций с растровыми данными. Что делать, если у вас уже есть векторный слой? (Это может произойти, если у вас есть, например, векторный слой речной сети, загруженный из OpenStreetMap). Рассмотрим дальше!
Как получить ранги по Шриву, Штралеру и Топологический порядок на векторном слое с помощью QGIS
Во время работы четыре года назад мы с коллегами реализовали алгоритм, позволяющий вычислять порядок Шрива, Штраглера и Топологический, основываясь только на векторном слое и конечной точке (точке, где речная система заканчивается и впадает в озеро/море/океан). Первая версия алгоритма описана подробнее в моей первой статье на хабре: «Алгоритм ранжирования сегментов речной сети с использованием графов для геоинформационного анализа» (смахиваю слезу ностальгии). Сам алгоритм подготовили в виде open-source плагина Lines Ranking для QGIS и снабдили документацией. Подробного описания как именно алгоритм работает здесь не будет, ограничусь перечислением действий, которые потребуется совершить, чтобы осуществить расчет:
Загрузить векторный слой в проект QGIS
Перепроецировать в метрическую проекцию
Выбрать на карте точку «в которую» впадает река
Визуализировать результат используя параметр размера или цвета (Рисунок 7)
Рисунок 7. Топологический порядок водотоков для реки Обь с использованием векторного слоя и плагина QGIS Lines Ranking
Таким образом мы немного углубились в тему ранжирования водотоков в гидрологии (бонитировка речной сети) и узнали как с помощью различных инструментов получить ранги из исходных данных (растровых или векторных). Получив информацию о структуре реки, вы можете подготовить красивые и понятные визуализации или продолжить анализ, объединив полученную информацию с другими характеристиками реки.
Полезные ссылки:
С рассказом про ранжирование рек выступал Михаил Сарафанов