testing for a valid raster format before reading
On 27/07/12 11:35, Barry Rowlingson wrote:
On Fri, Jul 27, 2012 at 10:08 AM, Mauricio Zambrano-Bigiarini <mauricio.zambrano at jrc.ec.europa.eu> wrote:
Dear list,
Do you know if there is any way for testing if a file can be read by the
'raster' command of the 'raster' package ?
something like:
is.raster("myfile.asc") ....
I'm asking because I have to read many files within several directories.
The filenames of the maps go from XXXXXXXX.001 up to XXXXXX99.999, with
some additional files that should be skipped of the reading process
(which extension varies from directory to directory, e.g., .csv, .txt,
.zip, etc).
The error I'm getting now, which appears when trying to get information
about the file with 'GDALinfo', is the following:
Error in .local(.Object, ...) :
`lai.zip' not recognised as a supported file format.
1> traceback()
15: .Call("RGDAL_OpenDataset", as.character(filename), TRUE, silent,
PACKAGE = "rgdal")
14: .local(.Object, ...)
13: initialize(value, ...)
12: initialize(value, ...)
11: new("GDALReadOnlyDataset", filename, silent = silent)
10: GDAL.open(fname, silent = silent)
9: GDALinfo(maps.list[i])
Thanks in advance for any help,
You can use 'try' to run code and catch errors. See help(try) for more:
for(f in files){
r = try(raster(f))
if(inherits(r, "try-error")){
warning("couldnt read ",f)
}else{
print(summary(r))
}
}
Thanks Barry for your feedback.
Adding the 'silent' argument to 'try' produced the behaviour I wanted:
for(f in files){
r = try(raster(f), silent=TRUE)
if(inherits(r, "try-error")){
warning("couldnt read ",f)
}else{
print(summary(r))
}
}
Length Class Mode
66548 RasterLayer S4
Warning messages:
1: In eval(expr, envir, enclos) : couldnt read LHOAT-AGNPS2012.txt
2: In eval(expr, envir, enclos) : couldnt read SPSO.zip
All the best,
Mauricio
==================================================== Water Resources Unit Institute for Environment and Sustainability (IES) Joint Research Centre (JRC), European Commission webinfo : http://floods.jrc.ec.europa.eu/ ==================================================== DISCLAIMER:\ "The views expressed are purely those of th...{{dropped:10}}