I'm trying, without success, to access the object 'latitude' in a NETCDF4_CLASSIC file, with python and the netcdf4 library. When I open the file:
ncFile = '/path/to/file.nc4'
f = netCDF4.Dataset(ncFile, 'r')
f
I get this structure:
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:
I've tried this and didn't worked. Also when I tried to retrive the variables keys with f.variables.keys() I got
odict_keys(['Height', 'cloud_scenario', 'CloudLayerBase', 'CloudLayerTop', 'CloudLayerType'])
It seems like 'Height' is a variables and 'Latitude' is not, even though they're in the same GROUP. I also tried f.groups and the output is just OrderedDict().
The file is Cloudsat CLDCLASS.hdf converted to .nc through NCL (convert2nc).
Any hint will be very appreciated. I'm new in the NetCDF world.