Ошибка при преобразовании файла grib в netcdf

Я пытаюсь преобразовать файл grib, полученный от кого-то другого, в netcdf с помощью cdo. Файл представляет собой глобальные данные в формате сетки Гаусса:

      File format : GRIB szip
    -1 : Institut Source   T Steptype Levels Num    Points Num Dtype : Parameter ID
     1 : MPIMET   unknown  v instant       1   1    294912   1  P24s : 182.128
   Grid coordinates :
     1 : gaussian                 : points=294912 (768x384)  F192
                              lon : 0 to 359.5312 by 0.46875 degrees_east  circular
                              lat : 89.64165 to -89.64165 degrees_north
   Vertical coordinates :
     1 : surface                  : levels=1
   Time coordinate :  unlimited steps

При запуске cdo выдает ошибку, что у меня нет нужного инструмента для распаковки (szip), но у меня есть более новый пакет ECCODES:

      [user]$ cdo -f nc copy input.grb output.nc
Warning (gribUnzip): Decompression disabled, szlib not available!

Error (grbUnzipRecord): Decompression problem!

Я также пытался использовать cfgrib и eccodes, но это тоже не сработало, на этот раз из-за другой ошибки. Код:

      import xarray as xr
import cfgrib
import eccodes

ds = cfgrib.open_datasets('input.nc',backend_kwargs={'filter_by_keys': {'typeOfLevel':'surface','level':0,'shortName': 'e'}})

Ошибка:

      ValueError: conflicting sizes for dimension 'latitude': length 384 on 'e' and length 285 on {'time': 'time', 'step': 'step', 'surface': 'surface', 'latitude': 'latitude', 'longitude': 'longitude'}

Я также пробовал gdal, но также получил другую ошибку. Код:

      [user]$ gdalwarp -overwrite -to SRC_METHOD=NO_GEOTRANSFORM -t_srs EPSG:4326 input.grb -of netCDF output.nc

Ошибка:

      numPts * (numBits in a Group) + # of unused bits 7077888 != # of available bits 5244760
Creating output file that is 768P x 384L.
Processing /scistor/ivm/hmt250/raed_paper/swift.dkrz.de/clisap_echam_182/CLI_MPI-ESM-XR_t255l95_echam_265-276.cdo_processed.grb [1/1] : 0numPts * (numBits in a Group) + # of unused bits 7077896 != # of available bits 5225512
numPts * (numBits in a Group) + # of unused bits 7077888 != # of available bits 5265624
numPts * (numBits in a Group) + # of unused bits 7077888 != # of available bits 5258632
numPts * (numBits in a Group) + # of unused bits 7077896 != # of available bits 5275464
numPts * (numBits in a Group) + # of unused bits 7077888 != # of available bits 5352712

Наконец, я попробовал напрямую ECCODES, и это также привело к ошибке:

      [user]$ grib_to_netcdf -o output2.nc input.grb
grib_to_netcdf: Version 2.21.0
grib_to_netcdf: Processing input file 'input.grb'.
grib_to_netcdf: Found 8760 GRIB fields in 1 file.
grib_to_netcdf: Ignoring key(s): method, type, stream, refdate, hdate
grib_to_netcdf: Creating netCDF file 'output2.nc'
grib_to_netcdf: NetCDF library version: 4.7.4 of Oct 29 2020 15:05:42 $
grib_to_netcdf: Creating large (64 bit) file format.
grib_to_netcdf: Defining variable 'e'.

grib_to_netcdf ERROR: line 2863, nc_put_vara_type: NetCDF: Start+count exceeds dimension bound

Буду признателен за любую помощь в преобразовании этого файла в netcdf.

0 ответов

Другие вопросы по тегам