Изменить размер сетки файла netCDF

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

Есть ли способ сделать это с помощью сценария bash, CDO и т. д.

Образец данных можно скачать здесь. https://www.dropbox.com/sh/0vdfn20p355st3i/AabdGyO4 >

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

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


person Ep1c1aN    schedule 18.04.2019    source источник


Ответы (2)


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

cdo remapcon,r360x180 input.nc output.nc

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

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

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

cdo remapcon,my_target_file.nc in.nc out.nc 

РЕДАКТИРОВАТЬ 2021: доступно новое видео ...

Чтобы ответить на комментарий ниже, спрашивающий о том, какой метод использовать, для получения полного руководства по этим методам интерполяции и проблемам, на которые вы должны обратить внимание в отношении подвыборки при грубой зернистости данных, вы можете обратиться к моему видео-руководству по регистрации и интерполяции на YouTube.

Как правило, если вы выполняете интерполяцию от высокого разрешения к низкому (грубая сетка) более чем в 2 раза, вы не хотите использовать билинейную интерполяцию, поскольку она по существу приведет к субдискретизации поля. Это особенно проблематично для негладких, сильно неоднородных полей, таких как осадки. В таких случаях я всегда предлагаю использовать консервативный метод (remapcon или remapcon2). См. Подробности в моем видео-руководстве.

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

person Adrian Tompkins    schedule 18.04.2019
comment
Спасибо, Адриан. Я всегда не понимаю, какой метод использовать при увеличении или уменьшении размера сетки растрового файла (так как конечный результат будет сильно отличаться в случае изменения размера растра). Какое из них лучше всего использовать или какое-либо правило руки, о котором вы можете знать для этого, когда вы увеличиваете размер растра и когда вы уменьшаете размер растра? - person Ep1c1aN; 18.04.2019

ncremap также имеет однострочное решение NCO. Считайте, что 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
person Charlie Zender    schedule 03.05.2019