1

我正在尝试使用 python 和 netcdf4 库访问 NETCDF4_CLASSIC 文件中的对象“纬度”,但没有成功。当我打开文件时:

ncFile = '/path/to/file.nc4'
f = netCDF4.Dataset(ncFile, 'r')
f 

我得到这个结构:

NETCDF4_CLASSIC
<class 'netCDF4._netCDF4.Dataset'>
root group (NETCDF4_CLASSIC data model, file format HDF5):
    StructMetadata_0: GROUP=SwathStructure
    GROUP=SWATH_1
        SwathName="2B-CLDCLASS"
        GROUP=Dimension
            OBJECT=Dimension_1
                DimensionName="nray"
                Size=37081
            END_OBJECT=Dimension_1
            OBJECT=Dimension_2
                DimensionName="scalar"
                Size=1
            END_OBJECT=Dimension_2
            OBJECT=Dimension_3
                DimensionName="nbin"
                Size=125
            END_OBJECT=Dimension_3
            OBJECT=Dimension_4
                DimensionName="Ncloud"
                Size=10
            END_OBJECT=Dimension_4
        END_GROUP=Dimension
        GROUP=DimensionMap
        END_GROUP=DimensionMap
        GROUP=IndexDimensionMap
        END_GROUP=IndexDimensionMap
        GROUP=GeoField
            OBJECT=GeoField_1
                GeoFieldName="Profile_time"
                DataType=DFNT_FLOAT32
                DimList=("nray")
            END_OBJECT=GeoField_1
            OBJECT=GeoField_2
                GeoFieldName="UTC_start"
                DataType=DFNT_FLOAT32
                DimList=("scalar")
            END_OBJECT=GeoField_2
            OBJECT=GeoField_3
                GeoFieldName="TAI_start"
                DataType=DFNT_FLOAT64
                DimList=("scalar")
            END_OBJECT=GeoField_3
            OBJECT=GeoField_4
                GeoFieldName="Latitude"
                DataType=DFNT_FLOAT32
                DimList=("nray")
            END_OBJECT=GeoField_4
            OBJECT=GeoField_5
                GeoFieldName="Longitude"
                DataType=DFNT_FLOAT32
                DimList=("nray")
            END_OBJECT=GeoField_5
            OBJECT=GeoField_6
                GeoFieldName="Height"
                DataType=DFNT_INT16
                DimList=("nray","nbin")
            END_OBJECT=GeoField_6
            OBJECT=GeoField_7
                GeoFieldName="Range_to_intercept"
                DataType=DFNT_FLOAT32
                DimList=("nray")
            END_OBJECT=GeoField_7
            OBJECT=GeoField_8
                GeoFieldName="DEM_elevation"
                DataType=DFNT_INT16
                DimList=("nray")
            END_OBJECT=GeoField_8
            OBJECT=GeoField_9
                GeoFieldName="Vertical_binsize"
                DataType=DFNT_FLOAT32
                DimList=("scalar")
            END_OBJECT=GeoField_9
            OBJECT=GeoField_10
                GeoFieldName="Pitch_offset"
                DataType=DFNT_FLOAT32
                DimList=("scalar")
            END_OBJECT=GeoField_10
            OBJECT=GeoField_11
                GeoFieldName="Roll_offset"
                DataType=DFNT_FLOAT32
                DimList=("scalar")
            END_OBJECT=GeoField_11
        END_GROUP=GeoField
        GROUP=DataField
            OBJECT=DataField_1
                DataFieldName="Data_quality"
                DataType=DFNT_UINT8
                DimList=("nray")
            END_OBJECT=DataField_1
            OBJECT=DataField_2
                DataFieldName="Data_status"
                DataType=DFNT_UINT16
                DimList=("nray")
            END_OBJECT=DataField_2
            OBJECT=DataField_3
                DataFieldName="Data_targetID"
                DataType=DFNT_UINT8
                DimList=("nray")
            END_OBJECT=DataField_3
            OBJECT=DataField_4
                DataFieldName="RayStatus_validity"
                DataType=DFNT_UINT8
                DimList=("nray")
            END_OBJECT=DataField_4
            OBJECT=DataField_5
                DataFieldName="Navigation_land_sea_flag"
                DataType=DFNT_UINT8
                DimList=("nray")
            END_OBJECT=DataField_5
            OBJECT=DataField_6
                DataFieldName="Precip_flag"
                DataType=DFNT_INT8
                DimList=("nray")
            END_OBJECT=DataField_6
            OBJECT=DataField_7
                DataFieldName="SST"
                DataType=DFNT_FLOAT32
                DimList=("nray")
            END_OBJECT=DataField_7
            OBJECT=DataField_8
                DataFieldName="Surface_wind"
                DataType=DFNT_FLOAT32
                DimList=("nray")
            END_OBJECT=DataField_8
            OBJECT=DataField_9
                DataFieldName="cloud_scenario"
                DataType=DFNT_INT16
                DimList=("nray","nbin")
                CompressionType=HDFE_COMP_DEFLATE
                DeflateLevel=4
            END_OBJECT=DataField_9
            OBJECT=DataField_10
                DataFieldName="CloudLayer"
                DataType=DFNT_INT16
                DimList=("nray")
            END_OBJECT=DataField_10
            OBJECT=DataField_11
                DataFieldName="CloudLayerBase"
                DataType=DFNT_FLOAT32
                DimList=("nray","Ncloud")
                CompressionType=HDFE_COMP_DEFLATE
                DeflateLevel=4
            END_OBJECT=DataField_11
            OBJECT=DataField_12
                DataFieldName="CloudLayerTop"
                DataType=DFNT_FLOAT32
                DimList=("nray","Ncloud")
                CompressionType=HDFE_COMP_DEFLATE
                DeflateLevel=4
            END_OBJECT=DataField_12
            OBJECT=DataField_13
                DataFieldName="CloudLayerType"
                DataType=DFNT_INT16
                DimList=("nray","Ncloud")
                CompressionType=HDFE_COMP_DEFLATE
                DeflateLevel=4
            END_OBJECT=DataField_13
        END_GROUP=DataField
        GROUP=MergedFields
        END_GROUP=MergedFields
    END_GROUP=SWATH_1
END_GROUP=SwathStructure
GROUP=GridStructure
END_GROUP=GridStructure
GROUP=PointStructure
END_GROUP=PointStructure
END
    HDFEOSVersion: HDFEOS_V2.5
    creation_date: Wed Feb 17 03:59:37 UTC 2021
    NCL_Version: 6.6.2
    system: Linux 0fc9309f2c2a 4.19.112+ #1 SMP Thu Jul 23 08:00:38 PDT 2020 x86_64 x86_64 x86_64 GNU/Linux
    Conventions: None
    hdf_source: 2010017014344_19801_CS_2B-CLDCLASS_GRANULE_P1_R05_E03_F00.hdf
    title: NCL: convert-HDF-to-netCDF
    dimensions(sizes): nray_2B_CLDCLASS(37081), nbin_2B_CLDCLASS(125), Ncloud_2B_CLDCLASS(10)
    variables(dimensions): int16 Height(nray_2B_CLDCLASS, nbin_2B_CLDCLASS), int16 cloud_scenario(nray_2B_CLDCLASS, nbin_2B_CLDCLASS), float32 CloudLayerBase(nray_2B_CLDCLASS, Ncloud_2B_CLDCLASS), float32 CloudLayerTop(nray_2B_CLDCLASS, Ncloud_2B_CLDCLASS), int16 CloudLayerType(nray_2B_CLDCLASS, Ncloud_2B_CLDCLASS)
    groups: 

我已经尝试过,但没有奏效。另外,当我尝试使用f.variables.keys()检索变量键时,我得到了

odict_keys(['Height', 'cloud_scenario', 'CloudLayerBase', 'CloudLayerTop', 'CloudLayerType'])

似乎“高度”是一个变量,而“纬度”不是,即使它们在同一个 GROUP 中。我也试过f.groups,输出只是OrderedDict()

该文件是 Cloudsat CLDCLASS.hdf 通过 NCL (convert2nc) 转换为 .nc。

任何提示将不胜感激。我是 NetCDF 世界的新手。

4

1 回答 1

0
dt = netCDF4.Dataset(file_names,'r')
variable = dt.groups['group_name'].variables['variable_name']

(另见https://www.codegrepper.com/code-examples/python/python+nc+group+variables

于 2021-11-17T12:33:06.743 回答