Превью картинка для привлечения внимания
Превью картинка для привлечения внимания

Привет хабр! Предлагаю погрузиться в одну увлекательную гидрологическую тему - ранжирование речных систем. Под катом я постарался привести материал полезный как для географов, которые сталкиваются с проблемой ранжирования векторного слоя рек с помощью геоинформационных систем (ГИС), так и для всех неравнодушных, которые иногда видели "красивые реки" на карте, но не знают, как именно они оформляются в картографических материалах. Начнем с картинки:

Рисунок 1. Изображение реки в двух вариантах (a и b)
Рисунок 1. Изображение реки в двух вариантах (a и b)

Теперь вопрос: какая часть выглядит симпатичнее? - Для меня та, что внизу (b).

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

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

Что такое река

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

Анимация 1. Линейный векторный слой. В таблице атрибутов записан идентификатор сегмента реки (id), его геометрия (geometry) и скорость водотока (скорость течения, м/с). Важное замечание: геометрия отдельных линейных сегментов может определяться не двумя точками, а большим их количеством
Анимация 1. Линейный векторный слой. В таблице атрибутов записан идентификатор сегмента реки (id), его геометрия (geometry) и скорость водотока (скорость течения, м/с). Важное замечание: геометрия отдельных линейных сегментов может определяться не двумя точками, а большим их количеством

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

Рисунок 2. Визуализация скорости водотока участков реки с помощью градаций красного
Рисунок 2. Визуализация скорости водотока участков реки с помощью градаций красного

Для визуализации пространственных объектов и составления карт часто используются специализированное программное обеспечение, например ArcGIS (проприетарная ГИС) или QGIS (с открытым исходным кодом).

Структура рек

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

Рисунок 3. Добавление нового поля и его визуализация с помощью толщины линии
Рисунок 3. Добавление нового поля и его визуализация с помощью толщины линии

Теперь мы видим, что Рисунок 3 напоминает схему из начала статьи (Рисунок 1b). Но возникает вопрос: по какому принципу можно присвоить такие значения? - Чтобы не затягивать, сразу ответ: их много. Существует несколько общепринятых систем ранжирования водотоков в гидрологии - см. например страницу википедии Stream order или для более глубокого погружения, книгу “Основы речной гидрологии и гидробиологии”. Ниже приведены несколько подходов, которые я сам использовал (Рисунок 4).

Рисунок 4. Некоторые из подходов к упорядочиванию водотоков в гидрологии
Рисунок 4. Некоторые из подходов к упорядочиванию водотоков в гидрологии

Для чего это

Теперь пришло время ответить на вопрос для чего нужны такие системы ранжирования. Можно выделить две причины:

  • Визуализация - используя ранг как атрибут размера линейного объекта на карте, можно создавать красивые картографические материалы (Рисунок 1);

  • Дальнейший анализ.

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

Рисунок 5. Зависимость скорости течения от порядка по Шриву
Рисунок 5. Зависимость скорости течения от порядка по Шриву

Какие инструменты можно использовать для ранжирования водотоков

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

  • Ранжирование водотоков по растровым данным (цифровая модель рельефа);

  • Ранжирование водотоков по векторным слоям.

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

Рисунок 6. Цифровая модель рельефа (ЦМР) в виде растрового слоя. Часто используется для расчета направления потока, а затем и его порядка
Рисунок 6. Цифровая модель рельефа (ЦМР) в виде растрового слоя. Часто используется для расчета направления потока, а затем и его порядка

Цифровая модель рельефа используется для расчета матрицы направления стока (flow direction matrix) и аккумуляции (flow accumulation). По такому принципу работает, например, инструмент Stream Order (Spatial Analyst) в ArcGIS. В этой заметке я не буду подробно описывать, как работает такой алгоритм, поскольку в официальной документации есть довольно хорошие визуализации и описания (если хотите узнать больше, зайдите на страницу функции Flow Direction). Ниже я перечислил некоторые инструменты, которые можно использовать для получения порядка Штралеру с помощью растровых данных:

Однако все это требует большого количества манипуляций с растровыми данными. Что делать, если у вас уже есть векторный слой? (Это может произойти, если у вас есть, например, векторный слой речной сети, загруженный из OpenStreetMap). Рассмотрим дальше!

Как получить ранги по Шриву, Штралеру и Топологический порядок на векторном слое с помощью QGIS

Во время работы четыре года назад мы с коллегами реализовали алгоритм, позволяющий вычислять порядок Шрива, Штраглера и Топологический, основываясь только на векторном слое и конечной точке (точке, где речная система заканчивается и впадает в озеро/море/океан). Первая версия алгоритма описана подробнее в моей первой статье на хабре: "Алгоритм ранжирования сегментов речной сети с использованием графов для геоинформационного анализа" (смахиваю слезу ностальгии). Сам алгоритм подготовили в виде open-source плагина Lines Ranking для QGIS и снабдили документацией. Подробного описания как именно алгоритм работает здесь не будет, ограничусь перечислением действий, которые потребуется совершить, чтобы осуществить расчет: 

  1. Загрузить векторный слой в проект QGIS

  2. Перепроецировать в метрическую проекцию 

  3. Выбрать на карте точку “в которую” впадает река

  4. Визуализировать результат используя параметр размера или цвета (Рисунок 7)

Рисунок 7. Топологический порядок водотоков для реки Обь с использованием векторного слоя и плагина QGIS Lines Ranking
Рисунок 7. Топологический порядок водотоков для реки Обь с использованием векторного слоя и плагина QGIS Lines Ranking

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

Полезные ссылки:

С рассказом про ранжирование рек выступал Михаил Сарафанов

Комментарии (4)


  1. Javian
    21.07.2024 18:02

    Есть реки пересыхающих на некоторых участках в середине течения. Формально на карте она есть, а по факту там дорога.


    1. Dreamlone Автор
      21.07.2024 18:02

      Да, вы верно заметили граничный случай, однако в контексте задачи анализа структуры речной сети могу рассудить следующим образом:

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

      С другой стороны, это все конечно очень специфичные примеры. Все таки порядки рек в основном рассчитываются для крупных речных систем, в которых ключевые притоки (для Оби это скажем, будет Иртыш) из системы не выпадают. А если и выпадают, то всегда можно применить подход выше - в зависимости от сезона по разному анализировать, в межень включать только основную систему в анализ, а в половодье - всё до чего руки доятнутся


  1. mirwide
    21.07.2024 18:02
    +2

    Почему-то ничего лучше, удобнее и детальнее обозначений Генштабовских топокарт за 100 лет не придумали.

    Обозначения рек


    1. Dreamlone Автор
      21.07.2024 18:02
      +1

      Вы говорите верно, однако я хотел бы подсветить следующий момент:

      Если замерить ширину реки (буквально каждой реки в системе) нет возможности или сбор и визуализация такой информации будет избыточным из-за масштаба карты (неважно что ширина реки 5 м или 50 м, когда в рамке карты показана вся Евразия, все равно обе такие реки попадут в условную категорию "до 100 метров"), то назначать ширину реки обычно принято не по полевым измерениям а по эвристике "ширина реки на карте пропорциональна совокупному количеству притоков в неё втекающих". А это будет как раз порядок реки обсуждаемый в статье. Можно конечно как при составлении топокарт исходить из фактических измерений ширины, но иногда это избыточно.

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