Как зарегистрировать файл netCDF с помощью билинейной интерполяции в r - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь зарегистрировать файл Netcdf, используя указанный список долготы и широты. Я хочу использовать билинейную интерполяцию, и хотя я видел, что CDO и NCO полезны, я хочу реализовать это в r. Я видел, что есть пакет akima с функцией bilinear.grid, но он использует только длину разрыва или количество координат, а не c единицы.

Мои целевые долгота и широта ниже

lon <- c(0.000, 1.875, 3.750, 5.625, 7.500, 9.375, 11.250, 13.125, 15.000, 16.875, 18.750, 20.625, 22.500   24.375, 26.250, 28.125, 30.000, 31.875, 33.750, 35.625, 37.500, 39.375, 41.250, 43.125, 45.000, 46.875 , 48.750, 50.625, 52.500, 54.375, 56.250, 58.125, 60.000, 61.875, 63.750, 65.625, 67.500, 69.375, 71.250  , 73.125, 75.000, 76.875, 78.750, 80.625, 82.500, 84.375, 86.250, 88.125, 90.000, 91.875, 93.750, 95.625  , 97.500, 99.375, 101.250, 103.125, 105.000, 106.875, 108.750, 110.625, 112.500, 114.375, 116.250, 118.125  , 120.000, 121.875, 123.750, 125.625, 127.500, 129.375, 131.250, 133.125, 135.000, 136.875, 138.750 , 140.625, 142.500, 144.375, 146.250, 148.125, 150.000, 151.875, 153.750, 155.625, 157.500, 159.375  , 161.250, 163.125, 165.000, 166.875, 168.750, 170.625, 172.500, 174.375, 176.250, 178.125, 180.000, -178.125, -176.250, -174.375, -172.500, -170.625, -168.750, -166.875, -165.000, -163.125, -161.250, -159.375, -157.500, -155.625, -153.750, -151.875, -150.000, -148.125, -146.250, -144.375, -142.500, -140.625, -138.750, -136.875, -135.000, -133.125, -131.250, -129.375, -127.500, -125.625, -123.750, -121.875, -120.000, -118.125, -116.250, -114.375, -112.500, -110.625, -108.750, -106.875, -105.000, -103.125, -101.250,  -99.375,  -97.500,  -95.625,  -93.750,  -91.875, -90.000,  -88.125,  -86.250,  -84.375,  -82.500,  -80.625,  -78.750,  -76.875,  -75.000,  -73.125,  -71.250,  -69.375, -67.500,  -65.625,  -63.750,  -61.875,  -60.000,  -58.125,  -56.250,  -54.375 , -52.500,  -50.625,  -48.750,  -46.875, -45.000,  -43.125,  -41.250,  -39.375,  -37.500,  -35.625,  -33.750,  -31.875,  -30.000,  -28.125,  -26.250,  -24.375, -22.500,  -20.625,  -18.750,  -16.875,  -15.000,  -13.125,  -11.250,   -9.375,   -7.500,   -5.625,   -3.750,   -1.875)

lat <- c(-89.25, -87.75, -86.25, -84.75, -83.25, -81.75, -80.25, -78.75, -77.25, -75.75, -74.25, -72.75, -71.25, -69.75, -68.25, -66.75, -65.25, -63.75, -62.25, -60.75, -59.25, -57.75, -56.25, -54.75, -53.25, -51.75, -50.25, -48.75, -47.25, -45.75, -44.25, -42.75, -41.25, -39.75, -38.25, -36.75, -35.25, -33.75, -32.25, -30.75, -29.25, -27.75, -26.25, -24.75, -23.25, -21.75, -20.25, -18.75, -17.25, -15.75, -14.25, -12.75, -11.25,  -9.75,  -8.25,  -6.75,  -5.25,  -3.75,  -2.25,  -0.75,   0.75,   2.25,   3.75,   5.25,
6.75,   8.25,   9.75,  11.25,  12.75,  14.25,  15.75,  17.25,  18.75,  20.25,  21.75,  23.25,  24.75,  26.25,  27.75,  29.25, 30.75,  32.25,  33.75,  35.25,  36.75,  38.25,  39.75,  41.25,  42.75,  44.25,  45.75,  47.25,  48.75,  50.25,  51.75,  53.25, 54.75,  56.25,  57.75,  59.25,  60.75,  62.25,  63.75,  65.25,  66.75,  68.25,  69.75,  71.25,  72.75,  74.25,  75.75,  77.25, 78.75,  80.25,  81.75,  83.25,  84.75,  86.25,  87.75,  89.25)

Входные данные:

Сетка, которую я пытаюсь пересчитать, является первым временным шагом файла netcdf, найденного здесь: https://esgf-node.llnl.gov/search/cmip6/ с именем: CMIP6.PMIP .CAS.FGOALS-f3-L.lig127k.r1i1p1f1.Amon.tas.gr

  • Доступ OPeNDAP
https://esgf3.dkrz.de/thredds/dodsC/cmip6/PMIP/CAS/FGOALS-f3-L/lig127k/r1i1p1f1/Amon/tas/gr/v20191025/tas_Amon_FGOALS-f3-L_lig127k_r1i1p1f1_gr_070001-119912.nc
  • скачать (1,2 ГБ)

  • Сетка входных данных (1-d координатные переменные lat и lon):

    • lat от -89,5 до 89,5 каждые 1,0 (180 широт)
    • lon от 0,625 до 359,375 каждые 1,25 (288 долготы)
    • (основной массив данных также имеет неограниченное time измерение)

Заранее спасибо

1 Ответ

0 голосов
/ 14 июля 2020

Я использовал CDO для регистрации моего файла NetCDF, после этого я использовал свои выходные данные в R. Могут быть причины для использования только в R . Если вы все еще думаете о пересчете с использованием CDO . Вот код для билинейной интерполяции (скажем) гауссовского N32.

cdo remapbil,n32 infile.nc outfile.nc
...