这应该是微不足道的,但我一辈子都无法弄清楚该怎么做:我正在尝试从R中的NetCDF4文件读取属性值。现在,我的NetCDF4文件(已上载{{{3} })非常复杂,即它包含嵌套组。
我想使用R从组gml:posList
中提取名为METADATA/EOP_METADATA/om:featureOfInterest/eop:multiExtentOf/gml:surfaceMembers/gml:exterior
的属性的值。我不确定在这种情况下是否重要,但是该组不包含任何变量,仅元数据属性。
我尝试了以下
library(ncdf4)
fid = nc_open('S5P_NRTI_L2__NO2____20180728T130136_20180728T130636_04089_01_010100_20180728T140302.nc')
ncatt_get(fid, varid=0, attname='METADATA/EOP_METADATA/om:featureOfInterest/eop:multiExtentOf/gml:surfaceMembers/gml:exterior/gml:posList', verbose=TRUE)
但这会返回
[1] "ncatt_get: entering"
[1] "ncatt_get: is a global att"
[1] "ncatt_get: calling ncatt_get_inner for a global att"
[1] "ncatt_get_inner: entering with ncid= 65536 varid= -1 attname= METADATA/EOP_METADATA/om:featureOfInterest/eop:multiExtentOf/gml:surfaceMembers/gml:exterior/gml:posList"
[1] "ncatt_get_inner: about to call R_nc4_inq_att"
[1] "ncatt_get_inner: R_nc4_inq_att returned with error= -43 type= -1"
$`hasatt`
[1] FALSE
$value
[1] 0
大概表明它找不到该属性,我认为我以某种方式弄错了路径。
所以我的问题是,我该如何指定一个属性的路径,即a)嵌套组中的b)不链接到特定变量的,这样ncatt_get()可以找到该属性并返回其值?
顺便说一句,仅供参考,在Matlab中,命令
test = ncreadatt(file, 'METADATA/EOP_METADATA/om:featureOfInterest/eop:multiExtentOf/gml:surfaceMembers/gml:exterior', 'gml:posList')
工作正常,所以我知道这与文件无关。
任何提示将不胜感激!