我试图从IRI/LDEO气候数据库(dust_pm25_sconc10_mon)读取NetCDF文件,但读取此文件时遇到问题。当我选择计算数据库的变量(经度(X)、纬度(Y)和时间(T))时,X和Y的输出是一个带有观察数的序列(例如1,2,…,139)。也就是说,经度和纬度值没有正确导出。在
有人能帮我解决这个问题吗?我已经尝试过用R、Python和Qgis来读取这个文件,在这三个文件中,X和Y的输出都是相同的。在
我的代码如下(Python)。在
非常感谢大家。在
from netCDF4 import Dataset as dt
filestr = 'dust_pm25_sconc10_mon.nc'
ncfile = dt(filestr, 'r')
print(ncfile.variables)
lat = ncfile.variables['Y'][:]
lat
lon = ncfile.variables['X'][:]
lon
time = ncfile.variables['T'][:]
time
编辑:
这个文件有三个自变量,X,Y和T。X和Y的值故意从1到len(X)和len(Y)。在
查看文件说明: http://iridl.ldeo.columbia.edu/home/.nasa_roses_a19/.Dust_model/.dust_mon_avg/.dust_pm25_sconc10_mon/
当然,这可能对经度有意义,但对于纬度来说,这是无稽之谈。不幸的是,我没有发现任何提示这个数据集应该描述这个星球上的哪个区域。在
然而,我也没有在它唯一的因变量
dust_pm25_sconc10_mon
中找到任何数据,它是空的。在PS:例如:
这里的数据集 http://iridl.ldeo.columbia.edu/home/.nasa_roses_a19/.Dust_model/.RegDustModelProjected/.dust_pm25_sconc10/datafiles.html
看起来更合理。。。在
仅此描述就更有希望:
其因变量
dust_pm25_sconc10
也不为空。在我真的想在你提到的网站上找到这个文件,但是在我看来是徒劳的。所以在不知道的情况下,我不得不猜测:
netcdf文件提供了通过缩放和移动任何变量的值来节省数据空间的可能性,以便它们可以存储为
int
,而不是float
。您可以简单地检查是否存在除0以外的
add_offset
和除1以外的scale_factor
属性。在有关此概念的更多信息,请参阅https://www.unidata.ucar.edu/software/netcdf/workshops/2010/bestpractices/Packing.html。在
尽管上面链接中的信息表明netcdf的java接口确实自动应用了这些属性,
netcdf4-python
库没有。因此,如果你想继续使用这个包,你必须重新缩放和偏移数据,使之回到原来的值。在不过,您也可以考虑试用
xarray
,这是一个实现netcdf文件n维数据结构的库,据我所知,这个库根据上述规则自动缩放和偏移。http://xarray.pydata.org/en/stable/
您在sphttcd响应的注释中链接的位于http://iridl.ldeo.columbia.edu/home/.nasa_roses_a19/.Dust_model/.dust_mon_avg/.dust_pm25_sconc10_mon/datafiles.html的示例文件格式不正确。首先,X和Y数组没有适合于此类维度的units属性,而是都有值“units”。如前所述,数组中的值无论如何都不“看起来”有效。此外,该文件中dust_pm25_sconc10_mon数组中的值似乎都是NaN。在
另一方面,sphttcd引用的http://iridl.ldeo.columbia.edu/home/.nasa_roses_a19/.Dust_model/.RegDustModelProjected/.dust_pm25_sconc10/datafiles.html处的示例数据集具有良好的单位属性信息(“分别为“东度”和“北度”)。此外,X和Y数组中的实际值看起来不错。我在那个数据集中绘制了dust_pm25_sconc10变量的图(使用Panoply),并看到了映射到相应区域上的数据。在
SpghttCd关于缩放和偏移的注释在这里不适用,因为在那一秒,好的文件有实际的lon和lat值。在
相关问题 更多 >
编程相关推荐