Регриддинг, наджинг, интерполяция растра в растр.
- Jasen
- Активный участник
- Сообщения: 100
- Зарегистрирован: 27 янв 2006, 18:33
- Репутация: 4
- Ваше звание: Специалист
- Откуда: Москва
- Контактная информация:
Регриддинг, наджинг, интерполяция растра в растр.
Всем снова добрый день!
Задача состоит в следующем:
Даны результаты расчета двух моделей, каждая на поверхности Земли имеет регулярную сетку. Шаг сетки модели 2 меньше, чем у модели 1.
Требуется получить (проинтерполировать) значения модели 1 в узлы сетки модели 2. Конечно же с минимальными искажениями. Проекции у моделей тоже разные. Но даже если перепроецировать одну в другую, сетки будут лежать друг относительно друга как показано на рисунке.
Итак, значения в зеленых узлах нужно проинтерполировать в красные узлы. Существует ли способ лучше, чем перевод одной из сеток в вектор и использование инструментов интерполяции растра в векторные точки?
Изначально формат файлов GRIB, netCDF.
Задача состоит в следующем:
Даны результаты расчета двух моделей, каждая на поверхности Земли имеет регулярную сетку. Шаг сетки модели 2 меньше, чем у модели 1.
Требуется получить (проинтерполировать) значения модели 1 в узлы сетки модели 2. Конечно же с минимальными искажениями. Проекции у моделей тоже разные. Но даже если перепроецировать одну в другую, сетки будут лежать друг относительно друга как показано на рисунке.
Итак, значения в зеленых узлах нужно проинтерполировать в красные узлы. Существует ли способ лучше, чем перевод одной из сеток в вектор и использование инструментов интерполяции растра в векторные точки?
Изначально формат файлов GRIB, netCDF.
- Вложения
-
- IMG_20180711_110347.jpg (392.68 КБ) 8702 просмотра
Что написал - то написал!
-
- Участник
- Сообщения: 79
- Зарегистрирован: 01 май 2013, 22:38
- Репутация: 30
- Откуда: Сыктывкар
Re: Регриддинг, наджинг, интерполяция растра в растр.
В горном софте есть такая процедура – «Опустить точки на поверхность». Построить по регулярной сетке MODEL1 поверхность. «Опустить точки» модели MODEL2 на эту поверхность, т.е. присвоить им значение атрибута Z.
- Эдуард Казаков
- Гуру
- Сообщения: 546
- Зарегистрирован: 23 апр 2014, 17:11
- Репутация: 532
- Откуда: Planet Earth
- Контактная информация:
Re: Регриддинг, наджинг, интерполяция растра в растр.
Конечно, задача стандартная. По сути, вам нужно одно изображение трансформировать в пространственный домен другого. Пространственный домен это не только проекция, это:
1. Проекция - более общо скажем "система координат"
2. Границы сетки (xmin, ymin, xmax, ymax)
3. Размер ячейки (пространственное разрешение)
Так мы однозначно определяем (если опустить поворот, которого в 99% случаев нет) пространство нашей "сетки".
Решение на python для python gdal
https://github.com/silenteddie/RasterAdjuster
Просто через консольный gdal это делается тоже просто, gdal_warp:
gdalwarp -te <xmin ymin xmax ymax> -s_srs <проекция второго растра> -t_srs <проекция первого растра> -tr <размер ячейки по X, размер ячейки по Y> <второй растр> <трансформированный растр>
Таким образом приведем второй растр к первому.
xmin ymin xmax ymax и размеры ячейки должны совпадать с таковыми у первого растра. Можно посмотреть через gdalinfo.
Типом интерполяции можно управлять через ключ -r, там много, посмотрите здесь:
http://www.gdal.org/gdalwarp.html
1. Проекция - более общо скажем "система координат"
2. Границы сетки (xmin, ymin, xmax, ymax)
3. Размер ячейки (пространственное разрешение)
Так мы однозначно определяем (если опустить поворот, которого в 99% случаев нет) пространство нашей "сетки".
Решение на python для python gdal
https://github.com/silenteddie/RasterAdjuster
Просто через консольный gdal это делается тоже просто, gdal_warp:
gdalwarp -te <xmin ymin xmax ymax> -s_srs <проекция второго растра> -t_srs <проекция первого растра> -tr <размер ячейки по X, размер ячейки по Y> <второй растр> <трансформированный растр>
Таким образом приведем второй растр к первому.
xmin ymin xmax ymax и размеры ячейки должны совпадать с таковыми у первого растра. Можно посмотреть через gdalinfo.
Типом интерполяции можно управлять через ключ -r, там много, посмотрите здесь:
http://www.gdal.org/gdalwarp.html
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Регриддинг, наджинг, интерполяция растра в растр.
если это модель, то лучше интерполировать с точек, поскольку интерполяция растра в растр - штука довольно специфическая и в данном случае не очень пригодная. Исходную сетку лучше перевести в XYZ, поменять проекцию, и использовать интерполятор на целевую сетку в SAGA, там методов хватает.
- Jasen
- Активный участник
- Сообщения: 100
- Зарегистрирован: 27 янв 2006, 18:33
- Репутация: 4
- Ваше звание: Специалист
- Откуда: Москва
- Контактная информация:
Re: Регриддинг, наджинг, интерполяция растра в растр.
Да, я тоже думаю о конвертации, потому что
у меня дало желаемый результат, но работало очень долго.
А при gdal_translate в xyz не будет потерь точности?
Код: Выделить всё
gdalwarp -te -311874.01519 -1695484.48086 222125.98481 -1161484.48086 -s_srs gfs.t00z.pgrb2.0p25.prj -t_srs "+proj=lcc +lat_1=60 +lat_2=47.5 +lat_0=60 +lon_0=41.3 +x_0=0 +y_0=0 +a=6367470 +b=6367470 +units=m +no_defs" -te_srs "+proj=lcc +lat_1=60 +lat_2=47.5 +lat_0=60 +lon_0=41.3 +x_0=0 +y_0=0 +a=6367470 +b=6367470 +units=m +no_defs" -tr 18000 -18000 -of netCDF gfs.t00z.pgrb2.0p25.grb wrfgfs1.nc -r bilinear -overwrite
А при gdal_translate в xyz не будет потерь точности?
Что написал - то написал!
- Jasen
- Активный участник
- Сообщения: 100
- Зарегистрирован: 27 янв 2006, 18:33
- Репутация: 4
- Ваше звание: Специалист
- Откуда: Москва
- Контактная информация:
Re: Регриддинг, наджинг, интерполяция растра в растр.
Вторая попытка сделать то же самое (будем называть это "алгоритм 1" - из растра в растр. Ошибки привожу в картинках.
Растр явно не записался, хотя привязка правильная, хоть и не совсем совпадают, как в первом тесте.
"алгоритм 2" - предложенный gamm будет опробован завтра, когда я пойму как записывать SET в cmd.
Растр явно не записался, хотя привязка правильная, хоть и не совсем совпадают, как в первом тесте.
"алгоритм 2" - предложенный gamm будет опробован завтра, когда я пойму как записывать SET в cmd.
- Вложения
-
- это то что произошло с данными
- overflow1.PNG (20.27 КБ) 8501 просмотр
-
- это команда и ответ
- overflow.PNG (9.68 КБ) 8501 просмотр
Что написал - то написал!
- Эдуард Казаков
- Гуру
- Сообщения: 546
- Зарегистрирован: 23 апр 2014, 17:11
- Репутация: 532
- Откуда: Planet Earth
- Контактная информация:
Re: Регриддинг, наджинг, интерполяция растра в растр.
А попробуйте добавить в команду параметры:
-wo SAMPLE_GRID=YES -wo SAMPLE_STEPS=1000
-wo SAMPLE_GRID=YES -wo SAMPLE_STEPS=1000
- Jasen
- Активный участник
- Сообщения: 100
- Зарегистрирован: 27 янв 2006, 18:33
- Репутация: 4
- Ваше звание: Специалист
- Откуда: Москва
- Контактная информация:
Re: Регриддинг, наджинг, интерполяция растра в растр.
Привело к аналогичному результату.
https://lists.osgeo.org/pipermail/gdal- ... 37659.html тут кажется об этом.
Видимо, нужно обрезать большой растр сначала. вот только как получить маску обрезки.
Что написал - то написал!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 29 гостей