微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Python 计算 netcdf 文件的变量相关性并绘制在地图上

如何解决使用 Python 计算 netcdf 文件的变量相关性并绘制在地图上

给定两个 nc 文件 here

data/CMIP6_UKESM1-0-LL_Lmon_piControl_r1i1p1f2_gpp_1960-3059.nc
data/CMIP6_UKESM1-0-LL_Amon_piControl_r1i1p1f2_tas_1960-3059.nc

读取第一个文件

from netCDF4 import Dataset
import numpy as np

ds1 = Dataset('data/CMIP6_UKESM1-0-LL_Lmon_piControl_r1i1p1f2_gpp_1960-3059.nc')
print(ds1.variables.keys()) # get all variable names

出:

odict_keys(['gpp','time','time_bnds','lat','lat_bnds','lon','lon_bnds','clim_season','season_year'])

读取第二个文件

ds2 = Dataset('data/CMIP6_UKESM1-0-LL_Amon_piControl_r1i1p1f2_tas_1960-3059.nc')
print(ds2.variables.keys()) 

出:

odict_keys(['tas','height','season_year'])

检查 gpp 变量:

gpp = ds1.variables['gpp'] # gpp variable
print(gpp)

出:

<class 'netCDF4._netCDF4.Variable'>
float32 gpp(time,lat,lon)
    _FillValue: 1e+20
    standard_name: gross_primary_productivity_of_biomass_expressed_as_carbon
    long_name: Carbon Mass Flux out of Atmosphere Due to Gross Primary Production on Land [kgC m-2 s-1]
    units: kg m-2 s-1
    cell_methods: area: mean where land time: mean
    coordinates: clim_season season_year
unlimited dimensions: 
current shape = (3300,144,192)
filling on

检查 tas 变量:

tas = ds2.variables['tas'] # tas variable
print(tas)

出:

<class 'netCDF4._netCDF4.Variable'>
float32 tas(time,lon)
    _FillValue: 1e+20
    standard_name: air_temperature
    long_name: Near-Surface Air Temperature
    units: K
    cell_methods: area: time: mean
    coordinates: clim_season height season_year
unlimited dimensions: 
current shape = (3300,192)
filling on

现在我想计算 gpptas间的相关性,然后在地图上绘制它们的相关值。

我怎么能这样做?谢谢。

解决方法

您应该可以使用我的软件包 nctoolkit (https://nctoolkit.readthedocs.io/en/latest/) 轻松完成此操作。

我的理解是您想绘制每个网格单元的时间相关系数。在这种情况下:

import nctoolkit as nc
files = ["data/CMIP6_UKESM1-0-LL_Lmon_piControl_r1i1p1f2_gpp_1960-3059.nc","data/CMIP6_UKESM1-0-LL_Amon_piControl_r1i1p1f2_tas_1960-3059.nc"]
ds = nc.open_data(files)
ds.merge()
ds.cor_time(var1 = "gpp",var2 =  "tas")
ds.plot()

如果您想要每个时间步长的变量之间的空间相关系数,您可以使用以下行代替倒数第二行:

ds.cor_space(var1 = "gpp",var2 =  "tas")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。