python - 将新变量添加到 cds 工具箱中的数据对象
问题描述
我想计算一个变量的每日气候学和标准偏差(在这种情况下是两个水平的压力)。
我能够做到这一点,但目前无法创建可以作为 netcdf 下载的单个数据对象。
我的代码当前输出一个数据对象area_ave_c
,它是气候学,并且area_ave_s
具有标准偏差。
我可以让函数返回这些对象之一,但理想情况下,我想合并它们并返回一个包含这两个变量的数据对象(作为 netcdf 下载)。
import cdstoolbox as ct
@ct.application(title='Retrieve Data')
@ct.output.download()
def retrieve_sample_data():
data = ct.catalogue.retrieve(
'reanalysis-era5-pressure-levels',
{
'product_type': 'reanalysis',
'pressure_level': [
'1','2',
],
'year': [ '1979', '1980', '1981'
],
'month': [
'01','02','12',
],
'day': [
'01', '02', '03',
'04', '05', '06',
],
'time': [
'00:00',
],
"grid": [1, 1],
"area":[90,-180,60,180],
}
)
climatology = ct.climate.climatology_mean(data,frequency='dayofyear')
std_deviation = ct.climate.climatology_std(data,frequency='dayofyear')
area_ave_c = ct.geo.spatial_average(climatology)
area_ave_s = ct.geo.spatial_average(std_deviation)
return (area_ave_s, area_ave_c)
返回行当前抛出一个错误,但我想下载两个数据对象并运行代码两次以按顺序输出它们是浪费的(因为它两次获取所有数据)。
解决方案
事实证明,您可以从函数中返回两个对象,然后只需在函数之前的序言中调用两次retrieve_sample_data()
即可下载它们。ct.output.download()
所以我的代码现在是:
import cdstoolbox as ct
@ct.application(title='Retrieve Data')
@ct.output.download()
@ct.output.download()
def retrieve_sample_data():
etc etc
推荐阅读
- javascript - React,子组件映射问题
- excel - 遍历列并检查当前行中的值是否与前一行中的值不同
- python - Python节拍间隔跟踪
- css - 如何在 bootstrap 4 中使打开的手风琴标题变粘?
- phpmailer - phpMailer 在 Outlook 中设置破坏 HTML 模板
- c# - 在 ASP.net 中创建 PDF 或“打印报告”
- excel - 是否有可以更改复制单元格内容的 vba 代码?
- database - 使用内存 SQLite 进行并发读取的最佳方法?
- python-3.x - 尽管 post() 登录成功,但 Python 请求身份验证失败并使用 get()
- json - 防止 Plug.ErrorHandler 在回调后重新引发错误