Как прочитать этот файл netCDF в Python? - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть этот файл NetCDF.

В нем 2 группы!Я хочу выбрать одну группу и получить желаемую переменную.Я пробовал это несколькими способами, но мне не удалось.Я мог бы просто использовать

print(ncfile.variables)

, но он не работает!

структура файла выглядит следующим образом, я хочу выбрать группу / O4 / и переменную 'aerosol_optical_depth'

filename =
    'output.nc'
Source:
           C:\Users\IITM\Desktop\work\output.nc
Format:
           netcdf4
Global Attributes:
           _NCProperties = 'version=2,netcdf=4.6.3,hdf5=1.10.2'
           version       = 1
Dimensions:
           DIM_SCAN_NAME  = 3
           DIM_ANGLE_NAME = 10
           DIM_LAYERS     = 20
Groups:
    /O4/
        Variables:
            vertical_column_density                                 
                   Size:       3x1
                   Dimensions: /DIM_SCAN_NAME
                   Datatype:   double
                   Attributes:
                               _FillValue  = NaN
                               description = 'o4 vertical column density'
                               units       = 'molec/cm5'
            aerosol_optical_depth                                   
                   Size:       3x1
                   Dimensions: /DIM_SCAN_NAME
                   Datatype:   single
                   Attributes:
                               _FillValue  = NaN
                               description = 'Total aerosol optical depth'
                               units       = '1'

 /TG/
        Variables:
            vertical_column_density                                  
                   Size:       3x1
                   Dimensions: /DIM_SCAN_NAME
                   Datatype:   single
                   Attributes:
                               _FillValue  = NaN
                               description = 'gas vertical column density'
                               units       = 'molec/cm2'
            vertical_column_density_error                            
                   Size:       3x1
                   Dimensions: /DIM_SCAN_NAME
                   Datatype:   single
                   Attributes:
                               _FillValue  = NaN
                               description = 'gas vertical column density error calculated from covariance smoothing error matrix, covariance measurement noise error matrix and systematic error as a fixed fraction of vcd'
                               units       = 'molec/cm2'

1 Ответ

2 голосов
/ 25 сентября 2019

у вас должна быть возможность доступа к переменной следующим образом:

from netCDF4 import Dataset
file = 'C:\Users\IITM\Desktop\work\output.nc'
with Dataset(file) as f:
    O4 = f.groups['O4'] # variable O4 references to group 'O4'...
    # extract everything (could also be just one variable)
    data_O4 = {}
    for attr in O4.ncattrs():
        data_O4[attr] = O4.getncattr(attr) # put everything from the group to a dict

AOD = data_O4['aerosol_optical_depth']

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

nc_dct = {}
with Dataset(file) as f:
    for g in f.groups:
        tmp_grp = f.groups[g]
        nc_dct[g] = {}
        for attr in tmp_grp.ncattrs():
            nc_dct[g][attr] = tmp_grp.getncattr(attr)

Примечание: мое «общее» решение не будет работать должным образом, если у вас есть вложенные группы.

...