1.MERRA-2数据下载
网址:https://gmao.gsfc.nasa.gov/reanalysis/MERRA-2/
第一步,打开网站
第二步:点击Data Access-MDISC进入数据集选择
第三步:登录个人账号,输入想搜索数据集版本号(后边有版本号对应数据及数据解释的链接),或者根据自己需求在左边选择。
如果不知道版本号可以查看《README Document for MERRA-2 Data Products》手册
第四步:数据批量下载,需使用插件Down Them All插件(下载地址:https://www.downthemall.net/,该插件目前只支持Firefox、Chrome、Opera三个浏览器,建议使用谷歌浏览器),不建议使用weget下载,对网络要求高,并且cmd有时候会进不去服务器
选中需要下载的数据(建议如果研究时间长按照年选择,如果研究时间段按月选择),右键使用点击用DownThemAll保存选中项
点击所有文件后选择下载,就开始下载了,下载位置为浏览器默认下载位置,可以更改!
2.提取所需指标并转为TIFF(RStudio)
代码如下
library(terra)
library(tidyverse)
library(sf)
rast("D:/data/merra2_dust original data/M2TMNXAER.5.12.4ːMERRA2_100.tavgM_2d_aer_Nx.198001.nc4") -> rst
rst
# raster::raster("mydata/M2TMNXAER.5.12.4ːMERRA2_100.tavgM_2d_aer_Nx.198001.nc4", varname = "BCSCATAU") -> rsttemp
# plot(rsttemp)
#
# terra::ext(rst) <- terra::ext(rsttemp)
# terra::crs(rst) <- terra::crs(rsttemp) %>% st_crs() %>% .$proj4string
# rst
rst$DUSMASS %>%
writeRaster("temp.tif")
# 循环所有的文件
# 使用 str_extract 可以提取月份:
str_extract("D:/data/merra2_dust original data//M2TMNXAER.5.12.4ːMERRA2_100.tavgM_2d_aer_Nx.198001.nc4", "\\d{6}") -> month
# 使用 fs::dir_ls() 可以索引所有的文件,假设所有的文件都在 mydata 文件夹里面
fs::dir_ls("D:/data/merra2_dust original data")
# 创建 rasterdata 文件夹保存结果
dir.create("rasterdata")
lapply(fs::dir_ls("D:/data/merra2_dust original data"), function(x){
str_extract(x, "\\d{6}") -> month
rast(x) -> rst
rst$DUSMASS %>%
writeRaster(paste0("rasterdata/", month, ".tif"))
}) -> res
其中新版的 terra 包很奇怪,没法识别 nc 文件的坐标参考系
有两种办法解决,第一个是安装旧版本的 terra 包:install.packages("https://cran.r-project.org/src/contrib/Archive/terra/terra_1.5-17.tar.gz", repos = NULL, type = "source")
但是有可能会安装失败
另外一种办法是使用 raster 包读取,然后使用读取得到的 crs 和 extent 设置
运行结果非常快速。