[R-sig-Geo] Converting .hdf file to raster layer
Arnold Salvacion
arnold_salvacion at yahoo.com
Thu Aug 21 09:52:43 CEST 2014
Hi Ahmadou,
Have tried your code but still no success. However, I have actually tried to download the .hdf file directly from net. What I did is import the data from local folder. Below is the error that I got:
Error in .local(.Object, ...) : `C:\Users\Owner\Documents\VHP.G16.C07.NC.P1982006.VH.hdf' not recognised as a supported file format.
Best regards,
Arnold
On Friday, August 15, 2014 2:33 AM, Ahmadou Dicko <dicko.ahmadou at gmail.com> wrote:
You can use the gdalUtils package to get information on datasets inside your hdf file and then stack them using the raster package
library(raster)
library(rgdal) ## built with HDF4 support
library(gdalUtils)
fsrc <- "ftp://ftp.star.nesdis.noaa.gov/pub/corp/scsb/wguo/data/VHP_16km/VH/VHP.G16.C07.NC.P1981035.ND.hdf"
f <- file.path("/tmp", basename(fsrc))
if (!file.exists(f)) download.file(fsrc, f, mode = "wb")
info <- gdalinfo(f)
data <- grep("HDF4_SDS", info, value = TRUE)
data <- gsub("SUBDATASET_\\d+_NAME=|\\s+", "", data)
sds <- stack(data)
sds
## class : RasterStack
## dimensions : 904, 2500, 2260000, 3 (nrow, ncol, ncell, nlayers)
## resolution : 1, 1 (x, y)
## extent : 0, 2500, 0, 904 (xmin, xmax, ymin, ymax)
## coord. ref. : NA
## names : VHP.G16.C07.NC.P1981035.ND.1, VHP.G16.C07.NC.P1981035.ND.2, VHP.G16.C07.NC.P1981035.ND.3
## min values : -32768, -32768, 0
## max values : 32767, 32767, 255
##You can use RasterBrick too, by doing `brick(sds)`
sessionInfo()
## R version 3.1.1 Patched (2014-08-12 r66349)
## Platform: x86_64-unknown-linux-gnu (64-bit)
## locale:
## [1] LC_CTYPE=en_US.utf8 LC_NUMERIC=C
## [3] LC_TIME=en_US.utf8 LC_COLLATE=en_US.utf8
## [5] LC_MONETARY=en_US.utf8 LC_MESSAGES=en_US.utf8
## [7] LC_PAPER=en_US.utf8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C
## attached base packages:
## [1] stats graphics grDevices utils datasets methods
## [7] base
## other attached packages:
## [1] gdalUtils_0.3.2 rgdal_0.8-16 raster_2.2-32
## [4] sp_1.0-15
## loaded via a namespace (and not attached):
## [1] codetools_0.2-8 compiler_3.1.1 foreach_1.4.2
## [4] grid_3.1.1 iterators_1.0.7 lattice_0.20-29
## [7] R.methodsS3_1.6.1 R.oo_1.18.0 R.utils_1.32.4
## [10] tools_3.1.1
grep("hdf4", gdalDrivers()$name, ignore.case = TRUE, value = TRUE)
## [1] "HDF4" "HDF4Image"
On Thu, Aug 14, 2014 at 8:52 AM, Michael Sumner <mdsumner at gmail.com> wrote:
Just had a look, the file has subdatasets and seemingly raster can't
>handle those. (I haven't explored this much but might have a chance
>to).
>
>library(raster)
>library(rgdal) ## built with HDF4, HDF5 and NetCDF4
>
>fsrc <- "ftp://ftp.star.nesdis.noaa.gov/pub/corp/scsb/wguo/data/VHP_16km/VH/VHP.G16.C07.NC.P1981035.ND.hdf"
>f <- basename(fsrc)
>if (!file.exists(f)) download.file(fsrc, f, mode = "wb")
>
>## found with system GDAL, see below
>sds <- c('HDF4_SDS:UNKNOWN:"VHP.G16.C07.NC.P1981035.ND.hdf":0',
> 'HDF4_SDS:UNKNOWN:"VHP.G16.C07.NC.P1981035.ND.hdf":1',
> 'HDF4_SDS:UNKNOWN:"VHP.G16.C07.NC.P1981035.ND.hdf":2'
> )
>
>##r <- brick(sds)
>##Error in GDALinfo(filename, silent = silent, returnRAT = RAT,
>returnCategoryNames = RAT) :
> ## object 'RATlist' not found
>##Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer", :
> ## Cannot create a RasterLayer object
>from this file.
> ## In addition: Warning message:
> ## In dim(x) : no bands in dataset
>
>
>## try with rgdal directly, so far so good but
>## no spatial-reference (again see gdalinfo output below)
>raster(readGDAL(sds[1]) )
>
> raster(readGDAL(sds[1]) )
>HDF4_SDS:UNKNOWN:"VHP.G16.C07.NC.P1981035.ND.hdf":0 has GDAL driver HDF4Image
>and has 904 rows and 2500 columns
>class : RasterLayer
>dimensions : 904, 2500, 2260000 (nrow, ncol, ncell)
>resolution : 1, 1 (x, y)
>extent : 0, 2500, 0, 904 (xmin, xmax, ymin, ymax)
>coord. ref. : NA
>data source : in memory
>names : band1
>values : -99.9, 322 (min, max)
>
>Warning message:
>In readGDAL(sds[1]) : GeoTransform values not available
>
>
>## proceed without caution, again values from gdalinfo
>b <- brick(stack(sapply(sds, function(x) raster(readGDAL(x)))))
>proj4string(b) <- CRS(" +proj=longlat +ellps=WGS84 +datum=WGS84
>+no_defs +towgs84=0,0,0")
>extent(b) <- c(-180, 180, -55.15200043, 75.02400208)
>
>library(maptools
>data(wrld_simpl)
>plot(b, addfun = function() plot(wrld_simpl, add = TRUE))
>
>That looks ok to me, I don't know if it's WGS84 or the sphere or
>something else.
>
>Cheers, Mike.
>
>
>
>
>
>system(sprintf("gdalinfo %s", f))
>
>Driver: HDF4/Hierarchical Data Format Release 4
>Files: VHP.G16.C07.NC.P1981035.ND.hdf
>Size is 512, 512
>Coordinate System is `'
>Metadata:
> ANCILLARY_FILES=FILE_CONFIGURE:vh.config
>FILE_PRELAUNCH_CALIBRATION:../ancillary/AVHRR_calibration_prelaunch.txt
>FILE_POSTLAUNCH_CALIBRATION:../ancillary/AVHRR_calibration_postlaunch.txt
>FILE_IGBP_LANDTYPE:../ancillary/igbp_landtype_GVIx.hdf
>FILE_METADATA_REGIONS:../ancillary/regions_for_metadata.txt
>FILE_EDF_NDVI:../ancillary/NVI_counts_ByLine_G04.hdf
>FILE_EDF_BT4:../ancillary/BT4_counts_ByLine_G04.hdf
>
> CITATION_TO_DOCUMENTS=User Guide of Vegetation Health(VH) system
>(version 1.3, March 21 2012)
> CONFIGURE_FILE_CONTENT=[Options for vh.exe]
>DIR_Ancillary= ../ancillary
>DIR_GVI= data/VH_unitTest1/weekly
>DIR_VH= data/VH_unitTest1/G04
>DIR_VH_META= data/VH_unitTest1/G04/meta
>DIR_CLIMAT= data/VH_EDF_v2/climate_G04
>DIR_CLIMAT_META= data/VH_EDF_v2/climate_G04/meta
>FILE_PREFIX= VHP
>Input_Data_Type= VHP
>ResolutionString= G04
>Days_Per_Period= 7
>FilterSize= 15
>applyEDFonNDVI= 1 # 0: none, 1: linebyline for NVI;
>applyEDFonBT= 1
>Instrument= AVHRR # so far AVHRR is the only option
>FORMAT_GVI= NETCDF #or HDF4
>FORMAT_CLIMAT= HDF4
>FORMAT_ND= NETCDF
>FORMAT_SM= NETCDF
>FORMAT_VH= NETCDF
>
>[Periods of GVI data used for VH]
># this section control which satellite will be used for calculating
>ND, SM and VH
>#satID satNumber yearWeek1 yearWeek2
>NC 07 198135 198449
>NF 09 198509 198844
>NH 11 198846 199436
>NJ 14 199504 200052
>NL 16 200101 200401
>NL 16 200405 200410
>NL 16 200425 200428
>NL 16 200430 200523
>NN 18 200524 201052
>NP 19 201101 399999
>
>[Periods of AVHRR data used for GVI climatology]
>#this section controls which satellite will be used for creating VH climatology
>#satID satNumber yearWeek1 yearWeek2
>NC 07 198142 198450
>NF 09 198515 198752
>NH 11 198920 199252
>NJ 14 199520 199952
>NL 16 200120 200252
>
>[END]
>
>
> CONTACT=NOAA/NESDIS/STAR/EMB
> DATE_BEGIN=239
> DATE_END=245
> DAYS_PER_PERIOD=7
> END_LATITUDE_RANGE=-55.15200043
> END_LONGITUDE_RANGE=180
> INPUT_FILENAMES=data/VH_unitTest1/weekly/VHP.G04.C07.NC.P1981035.S239.E245.nc
>
> INPUT_FILES=1
> INSTRUMENT=AVHRR
> PERIOD_OF_YEAR=35
> PRODUCT_NAME=Vegetation Health
> PROJECTION=Plate_Carree
> SATELLITE=NC
> START_LATITUDE_RANGE=75.02400208
> START_LONGITUDE_RANGE=-180
> TIME_BEGIN=00:00 UTC (use day time data only)
> TIME_END=23:59 UTC (use day time data only)
> VERSION=VH (vh.exe,version 1.3, March 21 2012)
> YEAR=1981
>Subdatasets:
> SUBDATASET_1_NAME=HDF4_SDS:UNKNOWN:"VHP.G16.C07.NC.P1981035.ND.hdf":0
> SUBDATASET_1_DESC=[904x2500] BT4 (16-bit integer)
> SUBDATASET_2_NAME=HDF4_SDS:UNKNOWN:"VHP.G16.C07.NC.P1981035.ND.hdf":1
> SUBDATASET_2_DESC=[904x2500] NDVI (16-bit integer)
> SUBDATASET_3_NAME=HDF4_SDS:UNKNOWN:"VHP.G16.C07.NC.P1981035.ND.hdf":2
> SUBDATASET_3_DESC=[904x2500] QA (8-bit unsigned integer)
>Corner Coordinates:
>Upper Left ( 0.0, 0.0)
>Lower Left ( 0.0, 512.0)
>Upper Right ( 512.0, 0.0)
>Lower Right ( 512.0, 512.0)
>Center ( 256.0, 256.0)
>
>
>On Thu, Aug 14, 2014 at 10:27 AM, Arnold Salvacion
><arnold_salvacion at yahoo.com> wrote:
>> Dear Colleagues,
>>
>> Does any here have already experience converting NOAA AVHRR VHP Product in .hdf (ftp://ftp.star.nesdis.noaa.gov/pub/corp/scsb/wguo/data/VHP_16km/VH/ ) format to a raster layer in R?
>>
>>
>> Best regards,
>>
>> Arnold
>> [[alternative HTML version deleted]]
>>
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
>
>
>--
>Michael Sumner
>Software and Database Engineer
>Australian Antarctic Division
>Hobart, Australia
>e-mail: mdsumner at gmail.com
>
>_______________________________________________
>R-sig-Geo mailing list
>R-sig-Geo at r-project.org
>https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Ahmadou H. DICKO
statistician economist (Ingénieur Statisticien Économiste)
PhD candidate in Climate change economics
Faculty of economics and managment - Cheikh Anta Diop University
West African Science Service Center on Climate Change and Adaptated Land Use (WASCAL)
Center for Development Research (ZEF) - University of Bonn
email : ahmadou.dicko at ucad.edu.sn
twitter : @dickoah
github : github/dickoa
tel : +221 33 827 55 16
portable: +221 77 123 81 69
[[alternative HTML version deleted]]
More information about the R-sig-Geo
mailing list