Как работает инструмент Отмывка (Hillshade)
Инструмент Отмывка (Hillshade) позволяет получить гипотетическое освещение поверхности путем определения освещенности для каждой ячейки растра. Принцип его работы заключается в установке положения гипотетического источника света и вычислении значений освещенности каждой ячейки по отношению к соседним ячейкам. Применение функции может значительно улучшить визуальное представление поверхности для анализа и графического отображения, особенно, при использовании опции прозрачности.
По умолчанию, тень и свет — это оттенки серого, связанные с целыми числами от 0 до 255 (возрастающие от черного к белому).
Параметры отмывки
Главным фактором при создании карты отмывки для конкретного местоположения является расположение солнца на небе.
Азимут
Азимут — это угловое направление источника освещения, измеренное по часовой стрелке с севера в градусах от 0 до 360. Азимут 90? — восток. Азимут по умолчанию — 315? (NW).
Широта
Широта — это уклон или угол высоты источника света над горизонтом. Единицы — в градусах, от 0 (на горизонте) до 90 (над головой). Значение по умолчанию равно 45 градусам.
В примере отмывки ниже азимут равен 315º, а широта — 45º.
Использование отмывки для отображения
Помещая растр высот поверх растра отмывки и настраивая прозрачность растра высот, вы легко можете создать визуально привлекательную карту рельефа ландшафта.
Вы можете добавить другие слои, например, типы землепользования, растительности, дорог или потоков дальнейшее увеличение информационного содержания в отображении.
Использование отмывки в анализе
Моделируя оттенок (опция по умолчанию), вы можете вычислить локальное освещение и то, попадают ли ячейки в тень или нет.
Моделируя тень, вы можете определить каждую ячейку, которая будет в тени другой ячейки в определенное время дня. Ячейкам в тени другой ячейки дается код 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 градусам.
- Угол положения источника света
Угол Зенита будет вычислен с использованием уравнения 2:
(2) Zenith_deg = 90 - Altitude = 90 - 45 = 45
И преобразован из градусов в радианы с использованием уравнения 3:
(3) Zenith_rad = Zenith_deg * pi / 180.0 = 45 * 3.1428571429 / 180 = 0.7857142857
- Направление положения источника света
Угол азимута будет преобразован из географического в математический с помощью уравнения 4:
(4) Azimuth_math = 360.0 - Azimuth + 90 = 360.0 - 315 + 90 = 135 = 2.3571428571
Преобразование угла азимута в радианы выполняется с использованием уравнения 6:
(6) Azimuth_rad = Azimuth_math * pi / 180.0 = 135 * 3.1438571429 / 180
- Уклон и экспозиция
Степень изменения в направлении x для центральной ячейки 'e' выполняется следующим образом:
(7) [dz/dx] = ((c + 2f + i) - (a + 2d + g)) / (8 * cellsize) = ((2483 + 4966 + 2477) - (2450 + 4904 + 2447)) / (8 * 5) = (9926 - 9801)/ 40 = 3.125
Степень изменения в направлении y для центральной ячейки 'e' выполняется следующим образом:
(8) [dz/dy] = ((g + 2h + i) - (a + 2b + c)) / (8 * cellsize) = (2447 + 4910 + 2477) - (2450 + 4922 + 2483) / (8 * 5) = (9834 - 9855) / 40 = -0.525
Вычисление угла уклона:
(9) Slope_rad = ATAN ( z_factor * √ ([dz/dx]2 + [dz/dy]2)) = atan(1 * sqrt(3.125 * 3.125 + -0.525 * -0.525)) = 1.26511
Вычисление угла экспозиции в радианах Aspect_rad в соответствии с правилом 10 выполняется следующим образом: (т. к. dz/dx в этом примере не равно 0):
Aspect_rad = atan2 ([dz/dy], -[dz/dx]) = atan2(-0.525, -3.125) = -2.9751469600412
Поскольку это значение меньше 0, эта часть правила применяется следующим образом:
Aspect_rad = 2 * pi + Aspect_rad = 2 * 3.1428571429 + -2.9751469600412 = 3.310567
- Отмывка
Окончательное вычисление отмывки выполняется следующим образом:
Hillshade = 255.0 * ((cos(Zenith_rad) * cos(Slope_rad)) + (sin(Zenith_rad) * sin(Slope_rad) * cos(Azimuth_rad - Aspect_rad))) = 255.0 * ((cos(0.7857142857) * cos(1.26511)) + (sin(0.7857142857) * sin(1.26511) * cos(2.3571428571 - 3.310567))) = 153.82
Поскольку выходной растр имеет целочисленный тип, значение оттенка для центральной ячейки e = 154.
Ссылки
Burrough, P. A. and McDonell, R. A., 1998. Principles of Geographical Information Systems (Oxford University Press, New York), 190 pp.