Способ отмывки изображения рельефа

Комбинирование светотеневой отмывки и цветовой карты рельефа с помощью GDAL

Создание слоя сочетающего теневую отмывку и цветовую ЦМР в нескольких вариантах

Мы все очень любим красивый рельеф. Эта статья рассказывает про то как получить подобный результат в виде единого комбинированного слоя с помощью GDAL и вдается в некоторые нюансы применения прозрачности.

Обычно эффект комбинирования в ГИС (таких как QGIS) достигается использованием двух слоёв. Берется сама ЦМР (цифровая модель рельефа) в виде растра, где высоты сгруппированы в пояса и каждому задан свой цвет и берется теневая отмывка рельефа. Слой цветового рельефа располагается поверх теневого и цветовому рельефу задается определенный процент прозрачности (в примере выше — 30%). В результате получается картинка показанная выше.

Все хорошо и красиво, но есть одна проблема. Этот вариант работает пока вы находитесь в локальной ГИС, умеющей работать со слоями. Что если вам нужен комбинированный рельеф единым слоем? Для использования в веб, графических редакторах или просто для удобства управления.

Разберем как получается изображение выше с помощью GDAL. GDAL — это швейцарский нож специалиста в области ГИС, набор кросс-платформенных консольных утилит позволяющих выполнять большее количество различных операций (подробнее с примерами).

Содержание

Исходные данные

В качестве единственного источника выступает ЦМР, растровая матрица, где каждому пикселю соответствует значение его высоты над уровнем моря. Это может быть SRTM, ASTER GDEM и другие источники.

Посмотреть на эти матрицы можно в QGIS в сером или цветном представлении.

Теневая отмывка

Создадим теневую отмывку на основе нашей ЦМР. Для многих операций с данными о рельефе в GDAL используется инструмент gdaldem. Результатом операции является 8-битный растр, где каждому пикселю назначается интенсивность освещенности в зависимости от его положения. Также можно указывать высоту (-alt) солнца над горизонтом 0-90 и угол (-az) освещения солнца 0-360.

Цветовой рельеф

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

Для GDAL результат такого раскрашивания нужно преобразовать в текстовый файл следующего формата, пример:

Где первая цифра — высота, а 2-3-4, ее цвет в RGB. В данном примере, все пиксели от 0 до 200 будут закрашены одним цветом, от 200 до 400 другим и так далее. Сохраним файл под названием ramp.txt

Дальше, выполним команду, которая на основе ЦМР создаст RGB изображение (информация о высотах таким образом будет потеряна, останется только цвет):

Комбинирование

Метод 1: «в HSV и обратно»

Один из методов сложения цветового рельефа и теневой отмывки — преобразование через HSV и обратно. В рамках этого метода, цветовой рельеф из RGB (red-green-blue) преобразуется в HSV (hue-saturation-value), получившаяся компонента V заменяется целиком на теневую отмывку, результирующий HSV преобразуется обратно в RGB.

Осуществить такое преобразование можно с помощью скрипта hsv_merge.py использующего возможности GDAL (автор: Frank Warmerdam, подробнее о скрипте).

Скрипт запускается следующим образом:

Метод 2: «Прозрачность как в ГИС»

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

Чтобы получить точно такой же результат, нужно конвертировать не через HSV, а действовать простым сложением компонент по следующему принципу (подсмотрено на Stackoverflow, спасибо Дмитрию Барышникову за наводку!):

Где, r,g,b — каналы исходного изображения, h — растр теневой отмывки, а R,G,B — каналы результирующего изображения, alpha — значение прозрачности от 0 до 1, 0 — верхний растр непрозрачен (нижний, отмывка, просто не будет виден), 1 — верхний растр полностью прозрачен, результат будет идентичен слою теневой отмывки.

Читайте также:  Выберите наиболее распространенный способ сушки древесины

Выполнить эти манипуляции можно с помощью скрипта transparent_merge.py (адаптирован автором статьи, скачать), следующим образом:

Таким образом, синтаксис у скрипта такой же, как и у hsv_merge.py, за исключением добавления параметра alpha, который указывает, сколько прозрачность добавить к цветовому рельефу (relief.tif). Результат будет такой же, как и наложение двух растров в пользовательской ГИС:

Метод 3: «Взять прозрачность из RGBA»

Исследование исходников hsv_merge.py показывает, что в качестве исходного растра может использовать не только RGB, но и RGBA, т.е. растр с заданной прозрачностью. Хотя это похоже на то, что нам нужно, на самом деле это не оно, так как никакого учета канала прозрачности при цветовой трансформации не происходит, а канал прозрачности (альфа-канал) просто переносится с исходного изображения на результат перевода через HSV и обратно.

Чтобы воспользоваться этим методов, нужно сначала создать из RGB — RGBA, самый простой способ это сделать (не разобрался как это сделать в GDAL) следующий, нужно просто загрузить растр цветового рельефа в QGIS, задать ему прозрачность и щелкнув правой кнопки мыши по нему выбрать «Сохранить как» и далее «Rendered image». Растр сохранится с учетом прозрачности в RGBA.

Вспомогательные операции

Часто встречающиеся задачи по доделке результата — обрезка по контуру и создание альфа-канала.

Обрезка по существующему сложному (необязательно прямоугольному контуру) может быть выполнена с помощью следующей команды:

Создать и назначить определенное значение альфа-каналу можно с помощью следующей команды:

Источник

ArcMap

Общий обзор

Функция Отмывка создает это 3D представление поверхности рельефа в оттенках серого при относительном положении солнца, учитываемом при затенении изображения. Отмывка является способом визуализации рельефа, при котором учитываются источник света, а также уклон и экспозиция поверхности высот. Это качественный метод визуализации топографии, который не дает абсолютных значений высот. Данная функция предоставляет два способа создания отмывки: традиционный и многонаправленный. При традиционном способе отмывка вычисляется с использованием источника света из одного направления, с применением свойств высоты и азимута для определения местоположения солнца. При многонаправленном способе для получения рельефа с отмывкой комбинируется свет из нескольких источников. Преимущество многонаправленного метода отмывки заключается в том, что в областях, обычно подверженных перенасыщению и глубоким теням, отображается больше деталей, чем при использовании традиционного метода.

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

Это пример изображения с традиционной отмывкой рельефа.

Это пример изображения с многонаправленной отмывкой рельефа.

Параметры

Функция Отмывка имеет следующие параметры:

Входной набор данных высот.

Управляет источником освещения для отмывки:

  • Традиционная — Отмывка вычисляется с использованием источника света из одного направления. Можно задать Азимут и Высоту , чтобы контролировать местоположение источника света.
  • Многонаправленная — Комбинирует свет из нескольких источников, чтобы улучшить визуализацию рельефа.

По умолчанию используется Традиционная

Азимут – это относительное положение источника освещения вдоль горизонта (в градусах). Это положение указано углом источника освещения, измеряемое по часовой стрелке с севера. Азимут 0 градусов указывает на север, 90 градусов – на восток, 180 градусов – на юг, 270 градусов – на запад.

Этот параметр доступен только при условии, что Типом отмывки является Традиционная . Значение по умолчанию – 315 градусов (с северо-запада).

Высота – это угол превышения источника света над горизонтом в диапазоне от 0 до 90 градусов. Значение 0 градусов указывает, что источник освещения находится на горизонте, т.е. на той же горизонтальной плоскости, что и фрейм привязки. Значение 90 градусов указывает, что солнце находится прямо над головой.

Этот параметр доступен только при условии, что Типом отмывки является Традиционная . Значение по умолчанию — 45 градусов над горизонтом.

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

  • Нет – Масштабирование не применяется. Эта опция удобна при наличии одного набора растровых данных, покрывающего небольшую территорию. Не рекомендуется для глобальных наборов данных с большими колебаниями высот или мультимасштабных карт, так как будет создаваться рельеф местности с небольшими перепадами для небольших масштабов.
  • Уравненное – Применяется нелинейная корректировка с использованием значений по умолчанию для Степень размера пиксела и Коэффициент размера пиксела , что позволяет учитывать широкий спектр изменений высоты (масштаб по высоте) при приближении и удалении изображения. Опция Уравненное рекомендуется при использовании глобального набора данных.
Читайте также:  Способы анализа сетевого трафика

По умолчанию – NONE.

Коэффициент z является коэффициентом масштабирования, используемым для конвертации значений высоты для двух целей:

  • Конвертация единиц измерения высоты (метров или футов) в единицы измерения горизонтальных координат набора данных, это могут быть футы, метры или градусы.
  • Добавление вертикального преувеличения для визуального эффекта.

Значение по умолчанию равно 1.

Степень размера пиксела учитывает изменения высоты (или масштаба) по мере увеличения и уменьшения масштаба просмотра карты. Это экспонента, примененная к значениям размера пикселей в выражении, управляющем степенью изменения Z коэффициента , что позволяет избежать значительных потерь рельефа.

Этот параметр доступен только если типом Масштабирования является Уравненное . Значение по умолчанию равно 0.664.

Коэффициент размера пиксела учитывает изменения масштаба по мере увеличения и уменьшения отображения карты. Он управляет скоростью изменения Коэффициента Z .

Этот параметр доступен только если типом Масштабирования является Уравненное . Значение по умолчанию равно 0.024.

Отключить интерполяцию по умолчанию пикселов на границах

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

  • Не отмечено — Билинейная интерполяция будет равным образом применяться для пересчета отмывки. Используйте эту опцию, если набор данных мозаики, содержащий растровые данные высот, состыкован по краям. Используется по умолчанию.
  • Выбрано – билинейная интерполяция будет выполняться с отмывкой, исключая ребра растров или пикселы NoData. Эти пикселы будут заполняться значениями NoData и отображаться с использованием значений перекрывающихся пикселей, что позволяет снизить возможный эффект острых ребер. Используйте эту опцию, если набор данных мозаики, содержащий растровые данные высот, состоит из пересекающихся элементов или листов.

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

Более подробно о том, как работает инструмент отмывки

Тип отмывки

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

На следующем изображении показаны два типа отмывки:

  • На верхнем рисунке показан результат традиционной отмывки рельефа.
  • На нижнем рисунке показан результат многонаправленной отмывки рельефа.

Традиционная отмывка рельефа. Исходная ЦМР предоставлена Geological Survey (USGS) США.

Многонаправленная отмывка рельефа. Исходная ЦМР предоставлена Geological Survey (USGS) США.

Для получения дополнительной информации о многонаправленной отмывке рельефа см. раздел Многонаправленная отмывка рельефа улучшает ваши карты.

Азимут и высота

Свойства высота и азимут вместе указывают на относительное местоположение источника освещения, который будет использоваться для создания 3D модели (отмывка или цветная отмывка). Высота – это угол превышения источника света над горизонтом в диапазоне от 0 до 90 градусов. Значение 0 градусов указывает, что источник освещения находится на горизонте, т.е. на той же горизонтальной плоскости, что и фрейм привязки. Значение 90 градусов указывает, что солнце находится прямо над головой.

Азимут – это относительное положение источника освещения вдоль горизонта (в градусах). Это положение указано углом источника освещения, измеряемое по часовой стрелке с севера. Азимут 0 градусов указывает на север, 90 градусов – на восток, 180 градусов – на юг, 270 градусов – на запад.

Масштабирование и размер пиксела

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

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

Коэффициент z изменяется с использованием следующего выражения:

Уклон является фактором размера пиксела. При использовании больших пикселов значение уклона становится меньше, поскольку уклон представляет собой усредненный уклон на протяжении большого расстояния. В результате, в мелких масштабах объекты кажутся плоскими. В картографическом смысле результатом является существенная потеря рельефности. Чтобы это компенсировать, параметр Коэффициент Z может быть изменен в зависимости от масштаба. Отношение является не линейным, а экспоненциальным. При изменении Степени размера пиксела и Фактора размера пиксела будет изменены уровни, на которых изменяется Коэффициент Z . Это означает, что z-коэффициент следует задать в соответствии с масштабом.

Коэффициент Z

Коэффициент z является коэффициентом масштабирования, используемым для конвертации значений высоты для двух целей:

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

Конвертация единиц измерения

Если единицы измерения для z (высоты) единиц являются теми же, что и для x,y (линейных) единиц, то коэффициент z равен 1. Если набор данных находится в системе координат проекции, для масштабирования указано значение Нет и единицы измерения высот и линейные единицы измерения различны, то необходимо определить Z-коэффициент для вычисления различия.

Для конвертации из футов в метры или наоборот, см. таблицу ниже. Например, если единицы высоты ЦМР – футы, а единицы набора данных мозаики – метры, вы будете использовать значение 0,3048 для конвертации единиц высоты из футов в метры (1 фут = 0,3048 метра).

Масштабирование и размер пиксела

Из метров в футы

Из метров в футы

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

Примечание:

Когда масштабирование устанавливается как Уравненное , то можно использовать Коэффициент Z для преобразования единиц z в метры, и ArcGIS автоматически уравняет широту и долготу в метрах.

Вертикальное преувеличение

Чтобы применить вертикальный масштаб, вы должны умножить коэффициент конвертации на коэффициент масштаба. К примеру, если координатами высот и набора данных являются метры, и вы хотите применить вертикальный масштаб, равный 10, коэффициент для преобразования единиц будет равен коэффициенту конвертации (1.0), умноженному на коэффициент вертикального масштаба (10.0), т.е. коэффициент Z составит 10. Если координатами высот являются метры, а координатами набора данных — градусы, вы должны умножить коэффициент конвертации (1.0) на коэффициент вертикального масштаба (10.0), т.е. коэффициент Z составит 10. Если вашими единицами измерения являются не метры, используйте Арифметическую функцию для преобразования вашей высоты в метры перед применением данной функции. Затем умножьте коэффициент конвертации единиц (1.0) на коэффициент преувеличения (10.0), что даст z-коэффициент, равный 10.

Удалить эффект ребер

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

  • Не отмечено — Билинейная интерполяция будет равным образом применяться для пересчета отмывки. Используется по умолчанию.
  • Выбрано – билинейная интерполяция будет выполняться с отмывкой, исключая ребра растров или пикселы NoData. Эти пикселы будут заполняться значениями NoData и отображаться с использованием значений высот перекрывающихся наборов данных, что позволяет снизить возможный эффект острых ребер.

Источник

Читайте также:  Способы ориентирование с компасами
Оцените статью
Разные способы
Тип преобразования Коэффициент преобразования