多个含两组公共维度的HDF5文件拼接异常问题咨询
问题根源
- 你使用的SOFRID产品为HDF-EOS5格式,Panoply可视化时自动将不同组下同长度的phony维度映射为统一的
npixels逻辑维度,底层物理存储中Data_Fields和Geolocation_Fields的维度是完全独立的phony_dim_0和phony_dim_4 - 同时将两个独立phony维度设为记录维度后,ncrcat默认会对所有记录维度执行拼接,导致
Data_Fields下的变量被错误广播/聚合,2D变量因为双记录维度的长度不匹配触发索引越界错误
解决方案步骤
第一步:统一维度名称(核心)
先对每个输入文件做重命名,将两个组的phony维度统一为同一个名称,这样就不需要同时设置两个记录维度:
# 对单个文件执行维度重命名 ncrename -d phony_dim_0,npixels -g Data_Fields ${file} ncrename -d phony_dim_4,npixels -g Geolocation_Fields ${file}
如果重命名时报组路径错误,可以加上全组路径,比如/Data_Fields/phony_dim_0
第二步:仅将统一后的npixels设为记录维度
ncks -O --mk_rec_dmn npixels ${file} ${file}
所有输入文件都执行完上述两步操作后再做拼接。
第三步:分情况执行拼接
1D变量拼接
直接指定变量即可,建议带上全组路径避免识别歧义:
ncrcat Valid_CO_SOFRID-v4.0_200???.he5 Valid_CO_SOFRID-v4.0_200801-200907.he5 -v /Geolocation_Fields/Latitude,/Geolocation_Fields/Longitude,/Geolocation_Fields/Day,/Geolocation_Fields/Hour,/Geolocation_Fields/Minute,/Data_Fields/"CO Total Column"
2D变量拼接
先确认2D变量的非拼接维度(如高度层levels)在所有输入文件中长度完全一致,再直接执行拼接即可:
ncrcat Valid_CO_SOFRID-v4.0_200???.he5 Valid_CO_SOFRID-v4.0_200801-200907_withCO.he5 -v /Data_Fields/CO
验证方法
拼接完成后用ncdump -h查看输出文件的npixels维度长度是否等于「输入文件数量 × 655」,再随机抽取几个位置的数值和原始文件对比,确认没有被错误聚合。
内容的提问来源于stack exchange,提问作者PierreL
相关产品推荐
相关产品推荐

