Сглаживание матрицы высот с использованием GRASS?

45

У меня есть DEM SRTM, и я хочу создать из него затененный рельеф. Я создал затененный рельеф в GRASS, и результат очень хороший, но немного грубый, потому что область почти плоская, а разрешение высот составляет 90 м.

То, что я хочу, - это сделать DEM более гладким, чтобы создать гладкий затененный рельеф. Есть ли алгоритм или метод интерполяции для этого?

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

Образ

Pablo
источник
Смотрите также: Как мне установить mdenoise в GRASS?
Hugolpz

Ответы:

43

Как насчет Джона Стивенсона r.denoiseиз вики GRASS AddOns :

r.denoise denoises (сглаживает / despeckles) топографические данные, определенные DEMS , полученные из радиолокационных данных ( в том числе SRTM), используя шумодав алгоритм Xianfang Солнца . Он предназначен для сохранения острых краев и уменьшения шума при минимальных изменениях исходных данных.

mdenoise

Далее я прочитал на этом веб-сайте (который я также благодарен за приведенную выше анимацию), что более общим методом будет использование файла Esri ASCII Grid. Положение mdenoise(скачать с веб - сайта компании Sun ) должен быть в вашей переменной PATH (например, пользователи Windows: падение MDenoise.exeв binпапку с вашим OSGeo4w или FWTools установки). Затем, например, вы можете использовать следующую команду оболочки для обработки файла сетки ASCII:

# gdal_translate -of AAIGrid my_dem.tif my_dem.asc      # convert to .asc
mdenoise -i my_dem.asc -n 5 -t 0.99 -o my_dem_DN.asc    # denoise
# gdal_translate -of GTiff my_dem_DN.asc my_dem_DN.tif  # convert back to .tif

Denoise находится под лицензией GNU, смотрите здесь

Майк Т
источник
Любой питон / GDAL Portage?
Hugolpz
1
Вы всегда можете запустить любую команду из Python.
Майк Т
Я имею в виду эквивалент Python, который не нуждается в R.
Hugolpz
1
Для этого не требуется R. Из Python используйте os.system('mdenoise ...')для запуска исполняемого файла.
Майк Т
Чтобы уточнить: р. здесь расшифровывается как растр. Команда из GRASS GIS, а не из R.
bugmenot123
11

У Тома Паттерсона, ведущего картографа Службы национальных парков США, есть отличные учебные пособия по работе с данными DEM для создания красивых затененных рельефов. Часть его рабочего процесса включает в себя использование Natural Scene Designer и Adobe Photoshop.

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

По сути, процесс заключается в указании новой ширины и / или высоты (в пикселях) для выходной матрицы высот, которая меньше исходного размера файла. Например делать:

gdalwarp -ts 3000 0 -r bilinear kings_canyon_2228.tif kings_canyon_2228_rs.tif

Уменьшит ширину матрицы высот до 3000 пикселей от исходной ширины 3800 пикселей. Установка высоты в 0 позволит GDAL определить наилучшую высоту нового файла на основе соотношения сторон оригинала.

clhenrick
источник
7

Я использовал плагин GIMP для вейвлет-шумоподавления и быстро получаю хорошие результаты:

GIMP Плагин Вейвлет шумоподавления

введите описание изображения здесь

введите описание изображения здесь

SamTux
источник
Я сгладил растр (отмывку), но файл (TIFF) потерял пространственную привязку. Поэтому, когда я поместил его в свой проект qgis, он не наложился корректно на другие слои. Это случилось с тобой?
Диого Карибе
Есть способы переопределить геолокацию.
Hugolpz
Да, в QGIS экспортировать горку в растровом меню и экспортировать в PNG.
SamTux
6

Вы можете запустить простой фильтр на ЦМР - скажем, фильтр среднего скользящего окна 5x5.

радиолокационный
источник
3

В ArcMap мне нравится использовать инструмент пространственной статистики Spatial Analyst>, чтобы сгладить лидар до создания контуров ... это также может помочь в вашем случае затенения. Я верю, что это похоже на пост выше.

aug_aug
источник
упс, просто прочитайте часть GRASS ... ну, я уверен, что есть аналогичная операция ...
aug_aug