Изменить размер сетки файла netCDF - PullRequest
3 голосов
/ 18 апреля 2019

Предположим, у меня есть 2 файла данных netCDF с данными для одного и того же региона (например, Южной Америки, Африки и т. Д.), Но с разными размерами сетки, равными 0,5 градуса х 0,5 градуса и 1,0 градус х 1,0 градуса в другом.Я хочу увеличить или уменьшить размер сетки до другого значения, например 0,25 x 0,25 или 1,0 x 1,0, чтобы можно было легко использовать это для растровых вычислений и сравнения и т. Д.

Есть ли методчтобы сделать это с помощью любого скрипта bash, CDO и т. д.

Пример данных можно загрузить здесь.https://www.dropbox.com/sh/0vdfn20p355st3i/AABKYO4do_raGHC34VnsXGPqa?dl

Можно ли использовать для этого разные методы, такие как билинейная или кубическая интерполяция?Это довольно легко с ArcGIS и другим программным обеспечением, но есть ли способ сделать это для большого файла netCDF с большими наборами данных.Предположим, что это просто подмножество данных.Позднее я буду конвертировать целый набор годовых данных.

Полученный файл должен быть .nc-файлом с измененным размером сетки, заданным пользователем.

Ответы [ 2 ]

6 голосов
/ 18 апреля 2019

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

cdo remapcon,r360x180 input.nc output.nc

Помимо консервативного переотображения первого порядка (remapcon), возможны и другие варианты:

remapbil : bilinear interpolation
remapnn  : nearest neighbour interpolation
remapcon2 : 2nd order conservative remapping

Также можно переназначить один файл в сетку, используемую в другом, если вы предпочитаете.

РЕДАКТИРОВАТЬ: ответить на комментарий ниже. В общем, если вы интерполируете из высокого разрешения в низкое разрешение («грубая сетка»), вы не хотите использовать билинейную интерполяцию, так как она будет по существу подвыбирать поле. Это особенно проблематично для негладких, сильно неоднородных полей, таких как осадки. В этих случаях я бы всегда предлагал использовать консервативный метод (remapcon или remapcon2). Эти методы намного медленнее, поэтому я часто использую билинейный режим при тестировании скрипта на скорость, а затем переключаюсь на remapcon для финального запуска.

Еще один совет по скорости заключается в том, что, если вы выполняете одну и ту же процедуру интерполяции для многих входных файлов с тем же разрешением , то вы можете рассчитать веса интерполяции один раз, используя genbil, gencon и т. Д., А затем выполнить функция переназначения, использующая те в цикле по файлу. Это намного быстрее, так как генерация весов является медленной частью remapcon

4 голосов
/ 03 мая 2019

NCO's ncremap также имеет однострочное решение. Предположим, что a.nc находится в той же сетке, что и b.nc. Мы назовем ответ c.nc (это зарегистрировано a.nc).

ncremap -d b.nc a.nc c.nc

Чтобы выбрать консервативную вместо билинейной интерполяции (по умолчанию), используйте -a:

ncremap -a conserve -d b.nc a.nc c.nc
...