快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → 利用xesmf对网格数据进行regrid

利用xesmf对网格数据进行regrid

时间:2022-09-24 10:26:09人气:作者:快盘下载我要评论

对比不同分辨率的网格数据时,通常需要将数据插值到相同网格。有很多工具可以实现此功能,本文主要讲一下如何利用xesmf对网格数据进行regrid。

工具安装就不说了,首先导入所需要的库:

import xarray as xr
import xesmf as xe
import numpy as np

然后获取CMIP5的月表面温度数据:

url = 'http://dapds00.nci.org.au/thredds/dodsC/rr3/CMIP5/output1/CSIRO-BOM/ACCESS1-3/historical/mon/atmos/Amon/r1i1p1/latest/tas/tas_Amon_ACCESS1-3_historical_r1i1p1_185001-200512.nc'
ds = xr.open_dataset(url)

执行如下语句可以得到原始数据的经纬度网格分辨率:

(ds['lat'].max() - ds['lat'].min())/(ds['lat'].count()-1.)

(ds['lon'].max() - ds['lon'].min())/(ds['lon'].count()-1.)

原始的数据分辨率为 1.25 x 1.875 度,然后将网格插值为2.5x2.5度。可以直接利用 xesmf 的相关函数生成网格:

ds_out = xe.util.grid_2d(-180.0, 180.0, 2.5, -90.0, 90.0, 2.5)

下一步创建 regridder,默认情况下不会保存所使用的权重信息。注意:由于这里所使用的是全球数据,periodic=True是为了保证在沿着中心经度时不会出现空白间隙。

regridder = xe.Regridder(ds, ds_out, 'bilinear', periodic=True)

下一步就是进行插值操作了:

tas_25deg = regridder(ds['tas'])

可以绘图对比一下结果:

ds['tas'].isel(time=0).plot()
tas_25deg.isel(time=0).plot()

利用xesmf对网格数据进行regrid

插值前后温度分布

如果需要频繁的对相同网格分辨率的数据进行插值,可以重复利用权重信息以节省时间。通过指定文件名保存权重信息:

regridder_save_weights = xe.Regridder(ds,ds_out,'bilinear',periodic=True,filename='bilinear_145x192_180x360_peri.nc')

然后使用保存的权重信息构建 regridder:

regridder_reuse_weights = xe.Regridder(ds,ds_out,'bilinear',periodic=True,reuse_weights=True,filename='bilinear_145x192_180x360_peri.nc')

xesmf支持多种投影方式的网格插值操作,详细信息可以前往官方文档查看。

相关文章

  • 全局配置和windows节点常用配置

    全局配置和windows节点常用配置,小程序根目录下的app.json文件是小程序的全局配置文件,常用的配置项如下: pages 记录当前小程序所有页面的存放路径 windows 全局设置小......
  • 2. 请画出NAT模式、DR模式的原理图并说出有什么区别

    2. 请画出NAT模式、DR模式的原理图并说出有什么区别,集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。