目前我正在尝试使用CALIPSO LiDAR数据。文件以HDF4分发(使用HDFView进行检查)。我感兴趣的子数据集是Cloud Top Height,它存储在一个简单的表中(56160行,5列):
到目前为止,我尝试了两件事:
A)使用gdal_translate(gdalUtils包)将HDF子数据集转换为GeoTiff
# Get a list of sds names
sds <- get_subdatasets('C:\\Users\\Thomas\\Desktop\\NASA Sat Data\\Cloud Layer Data\\CAL_LID_L2_333mCLay-ValStage1-V3-01.2011-08-16T03-02-01ZN.hdf')
# Isolate name of subdataset and convert
name <- sds[25]
filename <- 'Cloud_Top_Height_Test.tif'
gdal_translate(name, dst_dataset = filename)
# Load the Geotiff created into R
r <- raster(filename)
# fix extent, projection and negative values
e <- extent(-80.016243, 64.831413, -179.183868, -1.711731)
r <- setExtent(r, e)
values(r)[values(r) < 0] = 0 # replace -9999 with NA
crs(r) <- '+proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'
结果是一个光栅文件显然缺少任何空间信息(尺寸,扩展,crs,分辨率),这就是为什么我之后修复了一些东西。
结果如下:。
正如您所看到的,结果是一些奇怪的线条,它应该是方形像素。我想我可能在gdal_translate
电话中遗漏了一些陈述?此外,之后的所有调整似乎都有点愚蠢,或者让我们说“不专业”。
B)将表(子数据集)转换为数据框(在第二步中将其转换为栅格)
几天前,我提出了将子数据集(实质上只是一个表)转换为数据帧并将其转换为栅格的想法,我在其中指定从头开始的所有空间信息&#39;而不是像我第一次尝试那样调整它。尽管如此,我发现没有命令/包这样做,我仍然不相信这是正确的方法。
我最终需要的是什么:一个正确的(地理参考等)栅格(56160行,5列),其中包含HDF4文件中子数据集的值。
我的问题:如何提取HDF4子数据集并将其转换为具有上述规格的栅格?
非常感谢任何帮助(因为这是我在SO的第一篇文章:对不起,如果这个问题缺少本论坛所要求的任何形式,批评也会受到赞赏)