我正在尝试读取R.中的.hdr文件。这些文件来自GlobSnow,可在以下位置找到 http://www.globsnow.info/swe/archive_v2.0/2013/L3A_daily_SWE_HDF/
我使用了gdalUtils包,它似乎适用于MODIS数据,但不适用于GlobSnow数据。我试过这个:
sd <- get_subdatasets("GlobSnow_SWE_L3A_20130101_v2.0.hdf")
gdal_translate(sd[2], sds=T, dst_dataset = "hdftrial.tif")
然而它返回NULL。
我也尝试过通过自制软件安装gdal,但我不确定如何在R中进行工作。我在HDFview中打开数据并且数据似乎是正确的。在R中访问这些数据似乎并不是一种简单的方法。我希望从.hdf文件中获取栅格或矩阵。
答案 0 :(得分:0)
NULL
也出现在我身上,只需跟进raster("hdftrial.tif")
即可加载光栅。 NULL
出现是因为你没有子数据集(sds),你故意只调用一个数据集,但是如果你没有声明,似乎hdf没有在子数据集中读取。
library(gdalUtils)
library(raster)
sd <- get_subdatasets("c:/_LOCALdata/GlobSnow_SWE_L3A_20130101_v2.0.hdf")
gdal_translate(sd[2], dst_dataset = "hdftrial.tif")
plot(raster("hdftrial.tif"))
当您使用gdal_translate来拉取每个单独的数据集时,如果没有&#34; subatasets&#34;它只会抛出NULL。
来自gdal_translate
:
if (output_Raster) {
if (missing(sds)) {
return(brick(dst_dataset))
}
else {
if (!sds) {
return(brick(dst_dataset))
}
else {
return(NULL)
}
}
}
else (return(NULL))
更新
gdal_translate("c:/_LOCALdata/GlobSnow_SWE_L3A_20130101_v2.0.hdf", sds=T, of="GTiff", dst_dataset = "hdftrial.tif")
您不需要get_subdatasets,因为它在内部执行。通过声明sds = T,它将为每个子数据集创建一个单独的文件。它仍然抛出NULL
,试图破译原因。对于数据集中存在的每个子数据集,您将获得一个带有_#。tif的文件。