别追问旅行的意义,去主动赋予

医疗反腐,风向带偏了

女律师台上传授“拿捏”法官神技:穿裙子开庭,把声音夹起来,嗲起来

医疗反腐,风向带偏了

【漏洞预警-已验证】企业微信敏感信息泄露漏洞

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

干货分享 | R语言栅格数据并行计算,HDF批量转TIFF

地研联 2022-07-17

The following article is from 走天涯徐小洋地理数据科学 Author 走天涯徐小洋

R语言栅格数据并行计算

昨天讲了GLASS数据的处理:全球陆表特征参量数据产品GLASS数据批量下载、裁剪、格式转换

多波段HDF数据读取和Geotiff转换方法

今天我发现GLASS数据有的HDF里面有两个波段,例如净辐射数据

  • http://www.glass.umd.edu/NR/2015/
    • 有两个波段,NR和QA
    • 这个时候使用terra包读取和裁剪数据会失败

经试验发现:

  • 可以使用gdalUtilsget_subdatasets获取子数据集名称
  • gdal_translate可以将HDF转换为GEOTIFF
  • for循环是单核处理,速度慢
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无法识别警告

这个时候怎么办呢?需要使用gdal_setInstallation人工指定一下GDAL安装目录

  • QGIS安装目录下有GDAL,具体可以搜索一下gdalinfo.exe
GDAL就是gdalinfo.exe的所在目录

运行下面的代码即可给gdalUtils指定GDAL目录,上面的代码即可成功运行。

gdal_setInstallation(search_path = "F:/Program Files/QGIS 3.16/bin")

转换完成后,就可以随便想用啥用啥裁剪了。


转载自走天涯徐小洋地理数据科学

文章仅代表作者观点,与本公众号无关,版权归原作者所有

原文标题:R语言栅格数据并行计算

图文编辑:焦悦

审编:张英浩

终审:颜子明 黄宗财 鲁嘉颐

猜你喜欢

1、地学招聘 | 临沂大学资源环境学院2021年人才招聘启事

2、干货分享 | rgee尝鲜Landsat9,以及Landsat8对比

3、干货分享 | 数据驱动页面工具小技巧

4、干货分享 |  rgee获取全国高程、坡度、坡向数据

扫描二维码,关注我们

都看到这里了,点个【在看】再走呗~

文章有问题?点此查看未经处理的缓存