干货分享 | R语言栅格数据并行计算,HDF批量转TIFF
The following article is from 走天涯徐小洋地理数据科学 Author 走天涯徐小洋
R语言栅格数据并行计算
昨天讲了GLASS数据的处理:全球陆表特征参量数据产品GLASS数据批量下载、裁剪、格式转换
多波段HDF数据读取和Geotiff转换方法
今天我发现GLASS数据有的HDF里面有两个波段,例如净辐射数据
http://www.glass.umd.edu/NR/2015/ 有两个波段,NR和QA 这个时候使用terra包读取和裁剪数据会失败
经试验发现:
可以使用 gdalUtils包get_subdatasets获取子数据集名称gdal_translate可以将HDF转换为GEOTIFFfor循环是单核处理,速度慢
for (i in 1:length(gldir)) {
sds = get_subdatasets(gldir[i])
gdal_translate(sds[1], dst_dataset = paste0("./NR/", gldate[i], ".tif")) #gldate是时间序列
}
for循环并行计算
使用 foreach包可以对for循环执行并行计算使用 doPrarllel包启动多核心具体数据处理执行速度不仅仅是并行计算决定的,对于HDF数据处理来说更多限制于硬盘 在这里我使用了8个核心,没有使用全部的 使用 foreach函数改写for循环,注意需要声明for循环中引用的程序包
library(foreach)
library(doParallel)
cl = makeCluster(8) #指定核心数
registerDoParallel(cl)
foreach(i=1:length(gldir), .packages = 'gdalUtils')%dopar%{
sds = get_subdatasets(gldir[i])
gdal_translate(sds[1], dst_dataset = paste0("./NR/", gldate[i], ".tif"))
}
stopCluster(cl) #执行完关闭多核
转换完成后,就可以随便想用啥用啥裁剪了。
GDAL无法找到怎么办
gdalUtils有时无法识别GDAL按照目录
这个时候怎么办呢?需要使用gdal_setInstallation人工指定一下GDAL安装目录
QGIS安装目录下有GDAL,具体可以搜索一下gdalinfo.exe
运行下面的代码即可给gdalUtils指定GDAL目录,上面的代码即可成功运行。
gdal_setInstallation(search_path = "F:/Program Files/QGIS 3.16/bin")
转换完成后,就可以随便想用啥用啥裁剪了。
转载自走天涯徐小洋地理数据科学
文章仅代表作者观点,与本公众号无关,版权归原作者所有
原文标题:R语言栅格数据并行计算
图文编辑:焦悦
审编:张英浩
终审:颜子明 黄宗财 鲁嘉颐
猜你喜欢
1、地学招聘 | 临沂大学资源环境学院2021年人才招聘启事
扫描二维码,关注我们
都看到这里了,点个【在看】再走呗~