首页 > 解决方案 > 将新变量添加到 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)

返回行当前抛出一个错误,但我想下载两个数据对象并运行代码两次以按顺序输出它们是浪费的(因为它两次获取所有数据)。

标签: pythoncdo-climateera5

解决方案


事实证明,您可以从函数中返回两个对象,然后只需在函数之前的序言中调用两次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

推荐阅读