首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从具有分组变量的MODIS中读取多个NetCDF文件?

如何从具有分组变量的MODIS中读取多个NetCDF文件?
EN

Stack Overflow用户
提问于 2020-11-17 21:10:48
回答 1查看 307关注 0票数 0

最近,我尝试读取MODIS云属性数据。我试着合并/合并MOIDS文件,但是NetCDF和CDO都不起作用。然后我发现MODIS中的变量数据是在每一组中收集的。

代码语言:javascript
运行
复制
a='MCD06COSP_M3_MODIS.A2002182.061.2020181145824.nc'

b=nc.Dataset(a)
print(b.groups.keys())
c=b.groups['Cloud_Mask_Fraction']
print(c.variables['Mean'])

然后它会给出结果

代码语言:javascript
运行
复制
dict_keys(['Solar_Zenith', 'Solar_Azimuth', 'Sensor_Zenith', 'Sensor_Azimuth', 'Cloud_Top_Pressure', 'Cloud_Mask_Fraction', 'Cloud_Mask_Fraction_Low', 'Cloud_Mask_Fraction_Mid', 'Cloud_Mask_Fraction_High', 'Cloud_Optical_Thickness_Liquid', 'Cloud_Optical_Thickness_Ice', 'Cloud_Optical_Thickness_Total', 'Cloud_Optical_Thickness_PCL_Total', 'Cloud_Optical_Thickness_Log10_Liquid', 'Cloud_Optical_Thickness_Log10_Ice', 'Cloud_Optical_Thickness_Log10_Total', 'Cloud_Particle_Size_Liquid', 'Cloud_Particle_Size_Ice', 'Cloud_Water_Path_Liquid', 'Cloud_Water_Path_Ice', 'Cloud_Retrieval_Fraction_Liquid', 'Cloud_Retrieval_Fraction_Ice', 'Cloud_Retrieval_Fraction_Total'])

<class 'netCDF4._netCDF4.Variable'>
float64 Mean(longitude, latitude)
    _FillValue: -999.0
    title: Cloud_Mask_Fraction: Mean
    units: none
path = /Cloud_Mask_Fraction
unlimited dimensions: 
current shape = (360, 180)
filling on

在许多组中还有其他变量,我需要读取所有其他文件或合并这些文件。因此,我想知道如何才能读取多个包含组的NetCDF文件?既然我必须读取这些数据多年,我如何才能用新的维度时间为每个变量创建数组呢?python中的CDO或ncrcat或xarray可以合并这种nc文件吗?

非常感谢。余航

EN

回答 1

Stack Overflow用户

发布于 2020-11-18 15:32:44

我建议使用xarray作为python中最先进的4D网格数据处理程序。

您必须安装netcdf4,我推荐使用h5netcdf,因为它的处理速度更快。

代码语言:javascript
运行
复制
path_to_file = 'MCD06COSP_M3_MODIS.A2002182.061.2020181145824.nc'
# if h5netcdf is installed:
data = xarray.open_dataset(path_to_file, engine='h5netcdf') 
# if just netcdf4 is installed:
data = xarray.open_dataset(path_to_file)

# access variables:
data[<variable_name>]
data.<variable_name>

# inspect whole file:
data

您可以将多个文件加载到一个数据集中:

代码语言:javascript
运行
复制
datasets = xarray.open_datasets([path_to_file_1, path_to_file_2], parallel=True)

我希望在你有不同的时间跨度的情况下会出现一些错误,但你可以找到解决这个问题的方法。

我在这里添加了并行化,以提高解析速度。请通过链接到云存储或类似的方式添加测试数据,否则社区无法帮助您更喜欢这些建议。

PS:请明智地选择变量名称;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64875916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档