CMIP6 GCMs 数据结构与下载(笔记)
发布于 2021-04-26 02:53 ,所属分类:知识学习综合资讯
1 CMIP6 GCM数据结构
为了探索CMIP6 GCM 的数据结构,这里选择了加拿大CCCma开发的CanESM5。读取tas_Amon_CanESM5_historical_r1i1p1f1_gn_185001-201412.nc文件数据,通过与Swart et al. 2019展示的冬季和夏季的tas全球分布结果对比来确认nc文件的数据结构。
图1 温度标定(Swart et al. 2019. The Canadian Earth SystemModel version 5 (CanESM5.0.3) Geosci. Model Dev., 12, 4823–4873, 2019)
1.1 参考地理坐标设定
图2为参考地理坐标,设定为
geoRefer =georasterref('RasterInterpretation', 'postings');
geoRefer.RasterSize = size(inputData); % In this case is [64,128]
geoRefer.LatitudeLimits = [-90 90];
geoRefer.LongitudeLimits= [-180 180];
geoRefer.ColumnsStartFrom='south';
图2 参考地理坐标
1.2 CanESM5数据展示
原始MATLAB读取nc文件中tas矩阵A(参考图3)为128行× 64列
nc文件中,lat =linspace (-87.8638013437108, 87.8638013437108, 64);
nc文件中,lon =linspace (0, 357.187500000000, 128);
图3 tas矩阵转换AàB
将矩阵A进行转置,得到矩阵B(参考图3)。将矩阵B与参考地理坐标进行匹配,可以得到:
图4 tas(矩阵B)全球分布
观察图4,并将其与图1a比较可以发现:在图1a中非洲西部有明显的弧形带状低温梯度,而且中国青藏高原地区有明显的低温,南极明显的低温梯度;然而在图4中没有发现该现象,但是在澳大利亚西部发现了类似非洲的弧形带状低温梯度。由此推断可能是经度错位了。
经过查证,发现问题产生的原因是,在参考地理坐标中设定的经度为[-180180],但是MATLAB读取的nc文件经度为[0, 360]。二者的对应关系为:0-180是东经,180-360对应着西经的180-0
0-180 à [0 180]à [0E180E] 分别为GCM标记à正负号标记àEW标记
180-360à [-180,0] à [180W,0W] 分别为GCM标记à正负号标记àEW标记
图5 经纬度标记
所以,需要将矩阵B进行截断并平移(参考图6),得到矩阵C.
图6 tas矩阵转换AàBàC
将矩阵C与参考地理坐标进行匹配,可以得到正确的图7。图7和图1a和1b对比几乎是一致的,图7采用的是eqdcylin投影,图1a和1b采用的是Robinson投影。
图7 tas(矩阵C)全球分布
1.3CanESM5数据视频展示
CanESM5 GCM 2011-2012年月尺度温度分布可以参考bilibili网站,
https://www.bilibili.com/video/BV1hA411V7Ze/
2 CMIP6 GCM 月尺度数据下载
2.1 ESGF属性(VariantLabel、Grid Label)
在ESGF网页搜索CMIP6GCM数据的时候,VariantLabel和GridLabel这两个属性会疑惑如何选择。VariantLabel属性中r*i*p*f*表示的具体意思不深究的情况下,可以用水文模型做类似理解:不同的参数组合条件下水文模型r2达到0.8以上,那么用这些不同的参数组合输出的不同的(但是相差不大的)水文模拟结果。所以,可以随便选择一组r*i*p*f*。仔细观察,r1i1p1f1具有最多的模型输出结果,为了下载方便,可以近似认为大多数科研机构提交GCM都运行了r1i1p1f1,尽管ESGF给出警告:
“WARNING: Not all models include a variant"r1i1p1f1", and across models, identical values of variant_label donot imply identical variants! To learn which forcing datasets were used in eachvariant, please check modeling group publications and documentation providedthrough ES-DOC.”
GridLabel属性有相关的解释,个人理解是网格的划分方式不同(原始网格、重新划分网格),利用ncdisp查看gn、gr、gr1、gr2文件的内容,发现经纬度也没很大区别(特别要注意的是,有的nc文件将lat和lon属性写出了latitude和longitude,在读取文件的时候可能会出错)。这个Grid Label属性在数据搜索的时候,不用选择。
"gm":"globalmean data",
"gn":"datareported on a model's native grid",
"gnz":"zonalmean data reported on a model's native latitude grid",
"gr":"regriddeddata reported on the data provider's preferred target grid",
"gr1":"regriddeddata reported on a grid other than the native grid and other than the preferredtarget grid",
"gr2":"regriddeddata reported on a grid other than the native grid and other than the preferredtarget grid",
"grz":"regriddedzonal mean data reported on the data provider's preferred latitude targetgrid"
2.2 基于Wget-Matlab的CMIP6 GCM数据批量下载
在GCM模式不断更新的情况下,无法根据GCM模型的名称来进行下载所需的情景。Wget的单次下载不宜过多,这里根据Variable来分批次下载。
Variable | Experiment ID | Frequency | Table ID | Variant Label |
pr | historical, ssp126, ssp245, ssp370, ssp585 | mon | Amon | r1i1p1f1 |
tas | historical, ssp126, ssp245, ssp370, ssp585 | mon | Amon | r1i1p1f1 |
tasmin | historical, ssp126, ssp245, ssp370, ssp585 | mon | Amon | r1i1p1f1 |
tasmax | historical, ssp126, ssp245, ssp370, ssp585 | mon | Amon | r1i1p1f1 |
期望一次下载所有GCMs模式r1i1p1f1输出的在historical, ssp126, ssp245, ssp370,ssp585情景下的月尺度地表温度数据tas,需要设定如下:在ESGF的任意节点(比如DKRZ节点)搜索数据,选择了r1i1p1f1、Amon、mon、tas、(historical, ssp126, ssp245, ssp370,ssp585),筛选得到GCM模式输出。这里注意,并不是所有的GCM都运行了r1i1p1f1,但是大多数GCM都运行了r1i1p1f1,为了简单起见,我们勾选该选项。点击Addall displayed results to Data Cart,进入MyData Cart界面,
点击WGETScript,依次下载如图所示的6个WGETScript for ****,得到期望下载表温度数据tas所有GCMs的输出wget文件。
类似的操作下,得到降雨pr、最高地表温度tasmax、最低地表温度tasmin的wget文件。
这里注意,不同的机构保持的文件是不一样的,1850-2014年的数据,有的机构用1个nc文件存储,有的用17个nc文件存储,有的用165个nc文件存储,在读取数据的时候要注意。
最后,利用download_esgf.m文件编写的小爬虫进行并行下载(运行爬虫参考bilibili网站,https://www.bilibili.com/video/BV1ph411U7Dw/)。
相关资源