在R中使用HDF数据



我正在尝试下载和绘制MODIS数据http://orca.science.oregonstate.edu/1080.by.2160.monthly.hdf.vgp.vgpm.s.s.chl.a.sst.php

我定期使用来自Ocean Color网站的.NC文件,但我似乎无法以相同的方式使用HDF文件。可以将HDF转换为栅格吗?

gdalinfo("~vgpm.2008245.hdf")
gdal_translate(sds, dst_dataset = "~test.tiff")

sh:-c:line 0:寻找匹配``''
时出乎意料的EOF SH:-C:第1行:语法错误:文件的意外结束
null

rast <- raster("~test.tiff")

.local中的错误(.object,...(:

.rasterObject fromfile(x,band = band,objectType =" rasterlayer",:
无法从此文件创建rasterlayer对象。(文件不存在(

我在这里尝试了建议,将HDF文件读为R并将其转换为Geotiff Rasters

并收到此错误:SH:-C:第0行:在寻找匹配``''时出乎意料的EOFSH:-C:第1行:语法错误:文件的意外结束

我还尝试了此处的建议,将HDF转换为GeoRected File(Geotiff,ShapeFile(错误是:.rasterObject fromfile(x,band = band,objectType =" rasterlayer",: 无法从此文件创建rasterlayer对象。

我只想提取数据,并在线图中与我拥有的其他数据一起绘制给定位置的生产力数据...
谢谢

在Windows上(以及Linux,如果已安装了HDF驱动程序(,则无需转换这些文件。您可以直接使用它们

library(raster)
x <- raster("vgpm.2008245.hdf")
x
#class      : RasterLayer 
#dimensions : 1080, 2160, 2332800  (nrow, ncol, ncell)
#resolution : 1, 1  (x, y)
#extent     : 0, 2160, 0, 1080  (xmin, xmax, ymin, ymax)
#crs        : NA 
#source     : vgpm.2008245.hdf 
#names      : vgpm.2008245 

您在评论中指出的是,该程度不正确(并且不定定义CRS;也未设置Na标志(。您可以这样解决。

extent(x) <- extent(-180, 180, -90, 90)
crs(x) <- "+proj=longlat +datum=WGS84"
NAvalue(x) <- -9999
x
#class      : RasterLayer 
#dimensions : 1080, 2160, 2332800  (nrow, ncol, ncell)
#resolution : 0.1666667, 0.1666667  (x, y)
#extent     : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
#source     : vgpm.2008245.hdf 
#names      : vgpm.2008245 

,如果您想要tif,可以做

 r <- writeRaster(x, "vgpm.2008245.tif"

过去,这在Windows上不起作用。显然,它在MAC上不起作用 - 取决于您安装GDAL的方式。我认为您需要使用"使用" - 请完成"

安装gdal2

最新更新