7.3. Занятие: Анализ рельефа местности¶
Отдельные виды растров позволяют вам лучше изучить ландшафт, который они представляют. Цифровые Модели Рельефа (ЦМР)/ DEM особенно полезны в этом отношении. В этом уроке вы будете использовать инструменты анализа местности, чтобы узнать больше об изучаемой местности для предлагаемой жилой застройки, о которой говорилось ранее.
Цель этого урока: Использовать инструменты анализа местности для того, чтобы получить дополнительные сведения о местности.
7.3.1. Идем дальше: Вычисляем отмывки¶
Мы будем использовать все тот же слой ЦМР, который был использован в предыдущем уроке. Если вы начинаете этот раздел с нуля, вам надо использовать панель Browser и загрузить raster/SRTM/srtm_41_19.tif
.
Слой ЦМР показывает вам высоту местности, но иногда это может показаться немного абстрактным. Он содержит всю необходимую вам трехмерную информацию о местности, но она не выглядит похожей на трехмерный объект. Для того, чтобы получить лучшее представление о местности, можно вычислить отмывку / Hillshade, которая представляет собой растр, отображающий местность с использованием света и тени для создания трехмерного изображения.
Нам надо использовать алгоритмы в меню
.Надо кликнуть на меню
.Алгоритм позволит вам указать положение источника света: Azimuth имеет значения от 0 (север) до 90 (восток), 180 (юг) и 270 (запад), а Vertical angle настраивает высоту источника света (от 0 до 90 градусов).
Нам надо использовать следующие значения:
Z factor на
1.0
Azimuth (horizontal angle) на
300.0
°Vertical angle на
40.0
°
Сохраните файл в новой папке
exercise_data/raster_analysis/
с названиемhillshade
.И кликните на кнопку Run
У вас будет новый слой под названием hillshade, который выглядит так:
Красиво выглядит и трехмерно, но можем ли мы улучшить картинку? Сама по себе отмывка выглядит как гипсовая повязка. Разве мы не можем как-то использовать его вместе с другими, более красочными растрами? Конечно, можем, используя отмывку в качестве наложения.
7.3.2. Идем дальше: Используем отмывки в качестве наложения (оверлей)¶
Отмывка может предоставить очень полезную информацию о солнечном свете в определенное время суток. Но отмывку также можно использовать в эстетических целях для того, чтобы карта выглядела лучше. Это можно сделать, настроив отмывку так, чтобы она была в основном прозрачной.
Надо изменить символы исходного слоя srtm_41_19, чтобы использовать схему Pseudocolor как в предыдущем упражнении.
Надо скрыть все слои, за исключением слоев srtm_41_19 и слоев hillshade.
Кликните на srtm_41_19 и перетащите его и поместите под слой hillshade в панели Layers.
Настроите слой hillshade на прозрачность, кликнув по вкладке Transparency в свойствах слоя.
Настройте Global opacity на
50%
.Вы получите такой результат:
Отключите слой hillshade и включите снова в панели Layers, чтобы увидеть разницу.
Используя отмывку таким образом, вы сможете улучшить топографию ландшафта. Если эффект кажется вам недостаточно сильным, вы можете изменить прозрачность слоя hillshade; но, конечно, чем ярче становится отмывка, тем тусклее будут цвета за ней. Вам надо найти баланс, который вас устроит.
Не забудьте сохранить проект, когда закончите.
7.3.3. Идем дальше: Поиск наилучших мест¶
Вспомните о проблеме агента по недвижимости, которую мы в последний раз рассматривали на уроке по векторному анализу. Предположим, что покупатели теперь хотят приобрести здание и построить на его территории небольшой коттедж. Мы знаем, что в Южном полушарии идеальным местом для этого должен быть участок, который:
смотрит на север,
с уклоном менее 5 градусов,
но если уклон меньше 2 градусов, то аспект не имеет значения.
Давайте найдем лучшее место для них.
7.3.4. Идем дальше: Вычисляем уклон¶
Уклон показывает, уровень отвесности рельефа. Если, например, вы хотите построить на этой земле дома, то вам нужна относительно ровная земля.
Чтобы вычислить уклон, вам надо использовать алгоритм
в .Вам надо открыть алгоритм.
Выберите srtm_41_19 в качестве Elevation layer.
Установите Z factor на
1.0
.Сохраните выход как файл с названием
slope
в той же папке, что иhillshade
.Кликните на кнопку Run.
Теперь вы увидите уклон рельефа. Каждый пиксель показывает соответствующее значение уклона. Черные пиксели показывают ровный рельеф, а белые – крутой рельеф:
7.3.5. Попробуйте сами вычислить аспект¶
Аспект - направление по компасу, к которому обращен уклон местности. Значение аспекта 0 означает, что уклон обращен на север, 90 на восток, 180 на юг и 270 на запад.
Поскольку это исследование проводится в Южном полушарии, дома должны быть построены на северном уклоне, чтобы они могли оставаться под лучами солнца.
Вам надо использовать алгоритм Aspect в для того, чтобы сохранить слой aspect
вместе с slope
.
7.3.6. Идем дальше: Находим северную сторону¶
У вас теперь есть растры, которые показывают уклон, а также аспект, но вы пока не знаете, каковы идеальные условия. Как можно было бы провести этот анализ?
Ответ сидит внутри Raster calculator.
У QGIS есть различные калькуляторы растра:
В процессе:
Каждый инструмент дает один и тот же результат, но синтаксис может немного отличаться, а наличие операторов может отличаться.
Нам надо использовать
в панели инструментов обработки.Надо открыть инструмент, дважды кликнув по нему:
В верхней левой части диалогового окна перечислены все загруженные растровые слои как
name@N
, гдеname
это название слоя иN
это группа.В правой верхней части вы увидите много разных операторов. На мгновение подумайте и представьте, что растр - это изображение. Вы должны представить его как 2D-матрицу, заполненную числами.
Север находится под углом 0 (ноль) градусов, поэтому, чтобы местность смотрела на север, его аспект должен быть больше 270 градусов или меньше 90 градусов. Поэтому, формула такова:
aspect@1 <= 90 OR aspect@1 >= 270
Теперь вам нужно настроить детали растра, например, размер ячейки, масштаб и ССК. Можно вручную или автоматически, выбрав
Reference layer
. Выберите эту последнюю опцию, нажав на кнопку … рядом с параметром Reference layer(s).В диалоговом окне надо выбрать слой aspect так как мы хотим получить слой с таким же разрешением.
Сохраните слой как
aspect_north
.Диалоговой окно должно выглядеть так:
И наконец надо кликнуть на кнопку Run.
Вы получите такой результат:
Выходные значения 0
или же 1
. Что это означает? Для каждого пикселя в растре написанная нами формула, показывает, соответствует ли она условиям или нет. Поэтому окончательный результат будет Неверно (0) и Верно (1).
7.3.7. Попробуйте сами: Больше критериев¶
Теперь после того как вы закончили аспект, создайте два новых слоя из ЦМР.
Первый слой должен определять участки, где уклон меньше или равен 2 градусам.
Второй аналогичен, но уклон должен быть меньше или равен
5
градусам.Сохраните их внутри
exercise_data/raster_analysis
какslope_lte2.tif
иslope_lte5.tif
.
7.3.8. Идем дальше: Объединяем результаты анализа растра¶
Вы теперь получили три растровых слоя из ЦМР:
aspect_north: местность, обращенная на север
slope_lte2: уклон, равный 2 градусу или ниже
slope_lte5: уклон не более 5 градусов
Если условие выполняется, значение пикселя равно 1
. В остальных случаях он равен 0
. Поэтому, если вы умножите эти растры, пиксели со значением 1
для всех они получат значение 1
(остальные получат 0
).
Условия, которые должны быть выполнены:
при уклоне 5 градусов или ниже местность должна быть обращена на север,
при уклоне 2 градуса или ниже направление местности не имеет значения.
Поэтому, вам нужно найти местность, где уклон не превышает пяти градусов AND
местность смотрит на севр, OR
уклон не более 2 градусов. Такая местность подойдет для постройки.
Чтобы вычислить ту местность, которая соответствует этим критериям, необходимо сделать следующее:
Надо открыть снова Raster calculator.
Используйте это выражение в Expression:
( aspect_north@1 = 1 AND slope_lte5@1 = 1 ) OR slope_lte2@1 = 1
Надо настроить параметр Reference layer(s) на
aspect_north
(неважно, выберете ли вы другой – они все были вычислены изsrtm_41_19
).Сохраните выход/результат внутри
exercise_data/raster_analysis/
какall_conditions.tif
.Кликните на кнопку Run
Результат:
Подсказка
Предыдущие шаги можно было упростить с помощью следующей команды:
((aspect@1 <= 90 OR aspect@1 >= 270) AND slope@1 <= 5) OR slope@1 <= 2
7.3.9. Идем дальше: Упрощаем растр¶
Как показывает изображение выше, комбинированный анализ выдал нам множество очень маленьких участков, которые отвечают условиям (выделены белым цветом). Но они не совсем полезны для нашего анализа, так как они слишком малы, чтобы на них что-либо строить. Давайте избавимся от всех этих крошечных непригодных для использования участков.
Надо открыть инструмент Sieve ( внутри Processing Toolbox).
Настройте Input file на
all_conditions
, а Sieved наall_conditions_sieve.tif
(внутриexercise_data/raster_analysis/
).Установите Threshold до 8 (минимум восемь смежных пикселей) и отметьте Use 8-connectedness.
После завершения обработки будет загружен новый слой.
Что происходит? Ответ кроется в метаданных нового растрового файла.
Просмотрите метаданные внутри вкладки Information диалогового окна Layer Properties. Посмотрите на значение
STATISTICS_MINIMUM
:Этот растр, как и тот, из которого он получен, должен содержать только значения
1
и0
, но он имеет очень большое отрицательное число. Изучение данных показывает, что это число представлено как нулевое значение. Поскольку нам нужны только те участки, которые не были отфильтрованы, давайте настроим эти нулевые значения на ноль.Надо открыть Raster Calculator и построить это выражение:
(all_conditions_sieve@1 <= 0) = 0
Это сохранит все положительные значения и переведет отрицательные числа на ноль, оставив все участки со значением
1
нетронутыми.Сохраните выход/результат внутри
exercise_data/raster_analysis/
какall_conditions_simple.tif
.
Ваш выход/результат выглядит так:
Что и следовало ожидать: упрощенная версия предыдущих результатов. Помните, что если результаты, которые вы получаете, не соответствует вашим ожиданиям, надо посмотреть на метаданные (и атрибуты вектора, если есть), которые помочь решить эти проблемы.
7.3.10. Идем дальше: Пере-классификация растра¶
Мы использовали калькулятор растра для вычисления растровых слоев. Есть еще один надежный инструмент, который мы можем использовать для того, чтобы извлечь информацию из существующих слоев.
Вернемся к слою aspect
. Нам известно, что он имеет числовые значения в диапазоне от 0 до 360. Нам надо пере-классифицировать этот слой на другие дискретные значения (от 1 до 4) в зависимости от аспекта:
1 = север (от 0 до 45 и от 315 до 360);
2 = Восток (от 45 до 135);
3 = Юг (от 135 до 225);
4 = Запад (от 225 до 315).
Эту операцию можно выполнить с помощью калькулятора растра, но формула станет очень длинной.
Альтернативный инструмент это инструмент Reclassify by table в внутри Processing Toolbox.
Надо открыть этот инструмент.
Выберите aspect как
Input raster layer
.Кликните на кнопку … из Reclassification table. Появится диалоговое окно в виде таблицы, в котором вы можете выбрать минимальные, максимальные и новые значения для каждого класса.
Кликните на кнопку Add row и добавьте 5 строк. Заполните каждую строку, как показано на следующем рисунке, и кликните на кнопку OK:
Метод, используемый алгоритмом для обработки пороговых значений каждого класса, определяется Range boundaries.
Сохраните слой как
reclassified.tif
внутри папкиexercise_data/raster_analysis/
.Кликните на кнопку Run.
Если вы сравните исходный слой aspect со слоем reclassified, вы не увидите больших различий. Но посмотрев на символы, вы увидите, что значения начинаются от 1
до 4
.
Давайте улучшим стиль этого слоя.
Надо открыть панель Layer Styling.
Выберите Paletted/Unique values, вместо Singleband gray.
Кликните на кнопку Classify для того, чтобы автоматически получить значения и присвоить им случайные цветов:
Выход/результат должен выглядеть следующим образом (цвета у вас могут быть разными, если они были сгенерированы случайным образом):
Применив к слою данную пере-классификацию и стиль палитры, вы можете сразу различать области аспекта.
7.3.11. Идем дальше: Запрос к растру¶
В отличие от векторных слоев, растровые слои не имеют таблицу атрибутов. Каждый пиксель содержит одно или несколько числовых значений (однополосные или многополосные растры).
Все растровые слои, которые мы использовали в этом упражнении, состоят только из одной полосы. В зависимости от слоя значения пикселей могут показывать значения высоты, аспекта или уклона.
Как мы можем запросить растровый слой, чтобы получить значение пикселя? Мы можем использовать кнопку Identify Features!
Надо выбрать инструмент в панели инструментов «Атрибуты».
Кликните на случайное место в слое srtm_41_19. Появится Identify Results со значением полосы в месте, которое вы выбрали:
Вы сможете изменить выход панели Identify Results из текущего режима
tree
на режимtable
, выбрав Table в меню View внизу панели:
Через некоторое время вам может надоесть нажимать на каждый пиксель для получения значения растра. Мы можем использовать плагин Value Tool для решения этой проблемы.
Надо перейти на
Во вкладе All наберите
value t
в поле поиска.Выберите плагин Value Tool, кликните на Install Plugin , а потом Close диалоговое окно.
Появится новая панель Value Tool.
Совет
Если вы закроете панель, вы сможете снова открыть ее, активировав ее в
или кликнув на значок на панели инструментов.Чтобы использовать плагин, просто кликните на флажок Enable и убедитесь, что слой
srtm_41_19
является активным (отмечен) в панели Layers.Наведите курсор на карту, чтобы увидеть значение пикселей.
Но есть еще кое-что. Плагин Value Tool позволяет запрашивать все активные растровые слои в панели Layers. Сделайте слои aspect и slope снова активными и наведите указатель мыши на карту:
7.3.12. В заключении¶
Вы посмотрели, как можно получить все виды аналитических продуктов из ЦМР. К ним относятся вычисление отмывки, уклона и аспекта. Вы также узнали, как использовать калькулятор растра для дальнейшего анализа и объединения этих результатов. И наконец, вы узнали, как пере-классифицировать слой и как запрашивать результаты.
7.3.13. Что дальше?¶
Теперь у вас есть два анализа: векторный анализ, показывающий вам потенциально подходящие участки, и растровый анализ, который показывает потенциально подходящую местность. Как их можно объединить, чтобы получить окончательный результат для решения этой проблемы? Это будет темой следующего урока, который начинается со следующего модуля.