写在前面:
长夜路漫漫,感谢每个愿意帮助其他Programmer的人,感恩!
在近一段工作中,需要将从各个模式数据下载得到的日尺度数据进行变“时间尺度”的操作。
data_tenday_1_cal = data_show_tenday_1_base + data_show_tenday_1_2
lon = data_tenday_1_cal['lon']
lat = data_tenday_1_cal['lat']
# data_test = np.array(data_tenday_1_cal)
data_test= xr.DataArray(data_tenday_1_cal.values, dims=['lat', 'lon'], coords={'lat':lat,'lon':lon}, name='sm')
data_test.to_netcdf(r'D:\Python_work\soil_moisture\Already_processed_data\SMAP\test.nc')
data_test
这需要将原始数据打开,进过计算后,在生成新的NC数据文件,但在这个过程中出现了“未解错误”:
“AttributeError: NetCDF: String match to name in use”
翻译:attributeError:NetCDF:字符串与正在使用的名称匹配。大概的意思就是新生成的NC文件属性中存在于所命名的属性同名的属性。
经过调试发现:构成新的nc文件的"lon"和"lat"属性的lon和lat是由原数据中的lon和lat取来的,这个数据单取出"lon"属性可以看到:
同样是带着"Indexes"的,而且它的名字和取得的"lon"变量名字相同!!!
ok,找到问题症结所在,下面只需要获取值就可以了,不需要"lon"和"lat"的标签信息了。
data_tenday_1_cal = data_show_tenday_1_base + data_show_tenday_1_2
lon = data_tenday_1_cal['lon'].values # 这里只取‘lon’的数值
lat = data_tenday_1_cal['lat'].values # 这里只取‘lat’的数值
# data_test = np.array(data_tenday_1_cal)
data_test= xr.DataArray(data_tenday_1_cal.values, dims=['lat', 'lon'], coords={'lat':lat,'lon':lon}, name='sm') # 转换成DataArray的时候也是,只使用计算得到的data_tenday_1_cal.values
data_test.to_netcdf(r'D:\Python_work\soil_moisture\Already_processed_data\SMAP\test.nc')
data_test
至此,问题解决!!!
感谢你能看到这!!!