其他
R语言栅格数据并行计算,HDF批量转TIFF
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")