Обновление данных SRTM или ASTER детальными данными

Получение, новые источники, открытость
Ответить
geodesist.ru
Активный участник
Сообщения: 115
Зарегистрирован: 27 янв 2012, 23:29
Репутация: 14

Обновление данных SRTM или ASTER детальными данными

Сообщение geodesist.ru » 19 фев 2018, 16:07

Здравствуйте!

По результатам АФС получена ЦМР - возможно ли "впечатать" (уточнить) в существующие данные SRTM и/или ASTER GDEM и после это использовать для работы?

Если это возможно - то как это сделать средствами QGIS?

Мой ход мыслей таков - создать полигон по границам новой ЦМР - вырезать по нему данные SRTM - потом объединить модели - экспорт в HGT.

Игорь Белов
Гуру
Сообщения: 1600
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 996
Откуда: Казань

Re: Обновление данных SRTM или ASTER детальными данными

Сообщение Игорь Белов » 19 фев 2018, 18:04

Сделать можно, только лучше средствами GDAL (входит в QGIS).
geodesist.ru писал(а):
19 фев 2018, 16:07
Мой ход мыслей таков - создать полигон по границам новой ЦМР - вырезать по нему данные SRTM - потом объединить модели - экспорт в HGT.
Геометрия грида, как я понял, будет SRTM HGT. Что значит "объединить модели"? За границами полигона оставить в узлах грида значения SRTM, а внутри заменить округлёнными до метра значениями АФС ЦМР?

gamm
Гуру
Сообщения: 2682
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 592
Ваше звание: программист
Откуда: Казань

Re: Обновление данных SRTM или ASTER детальными данными

Сообщение gamm » 19 фев 2018, 18:36

geodesist.ru писал(а):
19 фев 2018, 16:07
Если это возможно - то как это сделать средствами QGIS?
QGIS тут никак, нужно руками в чем-нибудь растровом (лучше затащить в R или Питон): нужно сначала понять, можно ли это сделать в принципе, для этого построить регрессию "точного" рельефа на SRTM. Если они "бьются", то нужно убрать систематическую погрешность SRTM (учитывая, что SRTM - не рельеф, а поверхность), и "впечатать" точный фрагмент, гладко сшивая по краям (внутрь точного сегмента). Для сшивки нужно построить дистанционное преобразование от границы, отбить буфер, и использовать это расстояние в пределах буфера для линейной интерполяции.

P.S. Мы это делали, впечатывая рельеф городов, результат удовлетворительный.

Игорь Белов
Гуру
Сообщения: 1600
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 996
Откуда: Казань

Re: Обновление данных SRTM или ASTER детальными данными

Сообщение Игорь Белов » 19 фев 2018, 19:19

gamm писал(а):
19 фев 2018, 18:36
Для сшивки нужно построить дистанционное преобразование от границы
Верно.
gamm писал(а):
19 фев 2018, 18:36
отбить буфер, и использовать это расстояние в пределах буфера для линейной интерполяции.
Использование нелинейной весовой функции типа гауссианы проще технически (не надо париться с буфером) и в теории симпатичнее по результатам (отсутствует разрыв производных на границах буфера). Мы так сшиваем рельеф в точках полевых измерений с окружающим, а также локальные геофизические поля с региональными.

gamm
Гуру
Сообщения: 2682
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 592
Ваше звание: программист
Откуда: Казань

Re: Обновление данных SRTM или ASTER детальными данными

Сообщение gamm » 20 фев 2018, 03:11

Линейная интерполяция - это alpha*f1 + (1-alpha)*f2. Сама alpha есть функция от расстояния от границы, и там не гауссиан, а что-то сигмоидоподобное, сам сигмоид, любая функция распределения, и т.д., alpha равна нулю на границе, и единице на расстоянии буфера. Мы и кусок косинуса пробовали, и не симметричные, типа транзитивной вариограммы - лишь бы клиент был доволен :-)

Игорь Белов
Гуру
Сообщения: 1600
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 996
Откуда: Казань

Re: Обновление данных SRTM или ASTER детальными данными

Сообщение Игорь Белов » 20 фев 2018, 12:14

Ясное дело, f = f₁ * w + f₂ * (1 - w), где w — весовая функция. Я использую w = exp(-0.5*(d/σ)²), где σ — характерное расстояние. Это идеально для f₁ из детальных точных измерений и менее детальным гладким полем f₂ вокруг.

Кстати, в GRASS есть готовый модуль r.patch.smooth с кучей опций.

В QGIS реализация того, о чём мы с gamm говорим, несложная:
  1. [Raster] → [Conversion] → [Rasterize (Vector to Raster)…] при необходимости
  2. [Raster] → [Analysis] → [Proximity (Raster Distance)…]
  3. [Raster] → [Raster Calculator…] пару раз
При этом QGIS использует утилиты GDAL, так что можно всю работу выполнить одним скриптом с gdal_rasterize, gdal_proximity.py и gdal_calc.py.
Последний раз редактировалось Игорь Белов 20 фев 2018, 13:40, всего редактировалось 1 раз.

gamm
Гуру
Сообщения: 2682
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 592
Ваше звание: программист
Откуда: Казань

Re: Обновление данных SRTM или ASTER детальными данными

Сообщение gamm » 20 фев 2018, 13:39

Игорь Белов писал(а):
20 фев 2018, 12:14
Это идеально для f₁ из детальных точных измерений и менее детальным гладким полем f₂ вокруг.
но не идеально в данном случае, поскольку в SRTM почти наверняка есть систематическое смещение, и ладно, если просто сдвиг по высоте. Есть печальный опыт :mrgreen:

Игорь Белов
Гуру
Сообщения: 1600
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 996
Откуда: Казань

Re: Обновление данных SRTM или ASTER детальными данными

Сообщение Игорь Белов » 20 фев 2018, 13:44

Так очевидно же, что предварительно растры должны быть проанализированы, и один из них как минимум смещён! И не в SRTM дело, — таких задач без систематических и случайных расхождений между гридами просто не бывает. А дистанционное преобразование нужно для разглаживания юбки, оставшейся после предварительной подгонки.

Ответить

Вернуться в «Данные»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя