Как работает инструмент Отмывка (Hillshade)

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

По умолчанию, тень и свет — это оттенки серого, связанные с целыми числами от 0 до 255 (возрастающие от черного к белому).

Параметры отмывки

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

Азимут

Азимут — это угловое направление источника освещения, измеренное по часовой стрелке с севера в градусах от 0 до 360. Азимут 90? — восток. Азимут по умолчанию — 315? (NW).

Азимут солнца по умолчанию (направление) для отмывки — 315?
Азимут солнца по умолчанию (направление) для отмывки — 315?

Широта

Широта — это уклон или угол высоты источника света над горизонтом. Единицы — в градусах, от 0 (на горизонте) до 90 (над головой). Значение по умолчанию равно 45 градусам.

Широта солнца по умолчанию для отмывки — 45
Широта солнца по умолчанию — 45°

В примере отмывки ниже азимут равен 315º, а широта — 45º.

Пример выходных данных инструмента Отмывка (Hillshade)
Пример выходных данных инструмента Отмывка (Hillshade)

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

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

Использование прозрачности для совмещения растра высот с отмывкой
Создайте растр рельефа с отмывкой, объединив растры высот и отмывки с прозрачностью

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

Использование отмывки в анализе

Моделируя оттенок (опция по умолчанию), вы можете вычислить локальное освещение и то, попадают ли ячейки в тень или нет.

Моделируя тень, вы можете определить каждую ячейку, которая будет в тени другой ячейки в определенное время дня. Ячейкам в тени другой ячейки дается код 0; всем другим ячейкам дается код целого числа от 1 до 255. Вы можете переклассифицировать все значения больше 1 в 1, создавая бинарный выходной растр. В примере ниже черные области — в тени. Азимут одинаковый на каждом изображении, но угол к источнику освещения (широта) был изменен.

Тени с маленьким углом к источнику освещения
Тени с маленьким углом к источнику освещения
Тени с большим углом к источнику освещения
Тени с большим углом к источнику освещения

Как вычисляется отмывка

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

Алгоритм отмывки

Алгоритм вычисления значения отмывки следующий:

(1)  Hillshade = 255.0 * ((cos(Zenith_rad) * cos(Slope_rad)) +
                 (sin(Zenith_rad) * sin(Slope_rad) * cos(Azimuth_rad - Aspect_rad)))

Обратите внимание, что если вычисленное значение отмывки меньше 0, выходное значение ячейки будет равно 0.

Вычисление положения источника света

Высота источника света задается в градусах над горизонтом. Однако, формула для вычисления значения отмывки требует, чтобы угол был выражен в радианах и чтобы было известно отклонение от вертикали. Направление непосредственно вверх от поверхности (прямо над головой) обозначается как 'Зенит'. Угол зенита измеряется от точки зенита до направления на источник света и в сумме образует 90° с углом высоты. Чтобы вычислить угол положения источника света, в качестве первого шага необходимо преобразовать угол высоты в угол зенита. Второй шаг — это преобразование угла в радианы.

Замените угол широты на угол зенита:

(2)  Zenith_deg = 90 - Altitude

Преобразуйте градусы в радианы:

(3)  Zenith_rad = Zenith * pi / 180.0

Вычисление направления освещения

Направление положения источника света или азимут, задается в градусах. Формула вычисления отмывки предполагает, что угол выражен в радианах. Сначала угол азимута меняется с географических единиц измерения (компасного направления) на математические единицы (правый угол). Далее, угол азимута переводится из градусов в радианы.

Измените измерение угла азимута:

(4)  Azimuth_math = 360.0 - Azimuth + 90

Обратите внимание, что если Azimuth_math >= 360,0, то:

(5)  Azimuth_math = Azimuth_math - 360.0

Преобразуйте градусы в радианы:

(6)  Azimuth_rad = Azimuth_math * pi / 180.0

Вычисление Уклона (Slope) и Экспозиции (Aspect)

Скользящее окно размером 3 x 3 ячейки проходит через каждую ячейку на входном растре и для каждой ячейки на входном растре в центре окна с использованием алгоритма, который учитывает значения восьми соседних ячеек, вычисляются значения уклонов и экспозиции. Ячейки обозначаются буквами от 'a' до 'i, при этом буква 'e' представляет ячейку, для которой вычисляется значение экспозиции.

Степень изменения по направлению x для ячейки 'e' вычисляется с помощью следующего алгоритма:

(7)  [dz/dx] = ((c + 2f + i) - (a + 2d + g)) / (8 * cellsize)

Степень изменения по направлению y для ячейки 'e' вычисляется с помощью следующего алгоритма:

(8)  [dz/dy] = ((g + 2h + i) - (a + 2b + c)) / (8 * cellsize)

Уклон — это самый крутой спуск из каждой ячейки на поверхности. Алгоритм вычисления уклона в радианах, учитывающий коэффициент по z, следующий:

(9)  Slope_rad = ATAN (z_factor * √ ([dz/dx]2 + [dz/dy]2)) 

Экспозиция — это направление самого крутого спуска по поверхности. Экспозиция в радианах определяется в диапазоне от 0 до 2pi, при этом значение 0 соответствует направлению на восток. Экспозиция определяется по правилам следующего алгоритма:

(10)
  If [dz/dx] is non-zero:
    Aspect_rad = atan2 ([dz/dy], -[dz/dx])
      if Aspect_rad < 0 then
        Aspect_rad = 2 * pi + Aspect_rad

  If [dz/dx] is zero:
    if [dz/dy] > 0 then
      Aspect_rad = pi / 2
    else if [dz/dy] < 0 then
      Aspect_rad = 2 * pi - pi / 2
    else
      Aspect_rad = Aspect_rad

Пример вычисления отмывки рельефа

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

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

Размер ячейки равен 5 единицам измерения. По умолчанию используются значения Широты (Altitude), равной 45 градусам и Азимута (Azimuth), равного 315 градусам.

Поскольку выходной растр имеет целочисленный тип, значение оттенка для центральной ячейки e = 154.

Ссылки

Burrough, P. A. and McDonell, R. A., 1998. Principles of Geographical Information Systems (Oxford University Press, New York), 190 pp.

Связанные темы

9/10/2013