![8d58a435dc90af718e37757dcc816d8e.png](https://i-blog.csdnimg.cn/blog_migrate/6c78d7e57a7e6360ecb0c9056311054b.jpeg)
前段时间确定了方向,第一次接触到了netcdf格式的气象数据。
一开始想了很多办法来进行处理,包括Python、Grads等等,后来突然在网上看到使用Arcgis也能处理nc文件,但是按照网上的步骤去进行netcdf-raster操作时,即使选择了时间作为维度,生成的栅格文件也很不理想,后来尝试转为矢量数据,经过一下午的调试,结果算是差强人意。
把整个流程分享出来,一方面希望能帮到需要的人,另一方面也抛砖引玉,期待大佬们更完善的处理方法。
操作平台及软件:
Windows10、Arcgis10.5、Anaconda、python3.7
数据获取:
关于CMIP6(耦合模式比较计划),在这里不做介绍,相关信息可以通过网站或者文献了解。
获取CMIP6数据的方法很多,笔者只尝试过其中两种:
第一种通过官网进行下载,https://esgf-node.llnl.gov/search/cmip6/ 进入网站后通过左边的选项进行筛选。
![7623c17068bb386f9a6ee97a20ec9796.png](https://i-blog.csdnimg.cn/blog_migrate/11079f512557af58145e5d322892a8e6.jpeg)
关于左边的选项以及CMIP6的一些参数信息,可以参考:
CMIP6 Global Attributes, DRS, File names, Directory Structure, and CV's
不知道为什么无法通过云盘分享,如果找不到该文件可以私信联系我。
第二种是通过python一个包进行检索并批量下载:
#下载该工具
pip install acccmip6
具体使用方法在document里有详细介绍。
数据转化
完成上一步后我们就获得了CMIP6中的一些GCM的数据,笔者这里示例的数据是:
pr_day_CNRM-ESM2-1_ssp585_r1i1p1f2_gr_20150101-21001231
即ssp5-8.5情景下CNRM-ESM2-1模式对全球未来的日尺度降水模拟。
- 打开Arcmap:在Search窗口搜索netcdf,找到Make NetCDF Feature Layer工具
![52e4330a0424e9a420f2569abbc84324.png](https://i-blog.csdnimg.cn/blog_migrate/44adda486e022fb31d159efae79c31c9.jpeg)
2.在新窗口添加文件,设置变量及属性。
![a494d1f85457fc7dc822dad740af6d18.png](https://i-blog.csdnimg.cn/blog_migrate/742cc84c5b0bf30441f64ea93db78db2.jpeg)
(这一步需要注意,variables先选择主要属性数据如:pr,然后在row dimensions里添加lat以及lon坐标数据,下方的dimension value里添加time,再回到variables里添加lat、lon。笔者在第一次操作时将pr、lat、lon一次性添加进var后,发现后面的row及dimension无法选择)
然后点击ok,就能得到点矢量图层了。
![3905fc2ebab5009b228076797acba42a.png](https://i-blog.csdnimg.cn/blog_migrate/04f3d64bc8b9eea0d6c4a3b3ca076681.jpeg)
在time中可以设置时间以以显示不同时间下的数据,然后导出为csv即可在excel中进行操作。
需要注意的是这里的数据都是全球数据,如果只想要研究区的数据,可以通过添加研究区的面矢量数据,然后将两个图层进行intersect操作,提取出研究区上的数据(需要先检查投影方式)。
最后,以笔者采用的pr数据集为例,这里的降水采用的单位是
使用Arcgis其实是我想偷懒,在python中有netCDF4包可以对nc数据进行处理和操作,但是目前我还找不到arcgis环境中批量导出各时间维度下属性表的方法,如果有大佬知道恳请指导。