[R-sig-Geo] Error creating a standard deviation map from raster stack
Zia Uddin Ahmed
zua3 at CORNELL.EDU
Mon Jul 1 16:38:43 CEST 2013
I am trying to calculate standard deviation map from a raster stack. I have got following error . Any suggestion?
> std<-sd(s)
Error in as.double(x) :
cannot coerce type 'S4' to vector of type 'double'
Thanks
Zia
fn <- system.file("external/test.grd", package="raster")
s <- stack(fn, fn)
r <- raster(fn)
s <- stack(r, fn)
nlayers(s)
m<-mean(s)
std<-sd(s)
> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] gstat_1.0-16 rgdal_0.8-10 raster_2.1-37 sp_1.0-9
loaded via a namespace (and not attached):
[1] grid_3.0.1 intervals_0.14.0 lattice_0.20-15 spacetime_1.0-4
[5] xts_0.9-3 zoo_1.7-9
>
-----Original Message-----
From: r-sig-geo-bounces at r-project.org [mailto:r-sig-geo-bounces at r-project.org] On Behalf Of ASANTOS
Sent: Sunday, June 23, 2013 4:08 PM
To: Sarah Goslee; r-sig-geo at r-project.org
Subject: Re: [R-sig-Geo] Problem with NDVI difference with subset image
Hi Dra. Goslee,
I work in OS linux and I like very much your lssub function, despites your notice. I think that the problems are in linux system, because:
> landc<- stack(c("stackIm1.sample.tif","tackIm2.sample.tif"))
Error in .local(.Object, ...) :
`/home/asantos/Documentos/Sensoriamento remoto percevejo bronzeador/Contornos/tackIm2.sample.tif' does not exist in the file system, and is not recognised as a supported dataset name.
Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer", :
Cannot create a RasterLayer object from this file. (file does not exist)
When I try to look the geotiff created
(stackIm1.sample.tif) there are something wrong, because the pictures
doesn't open (complete example below).
Thanks for your attention,
Alexandre
require(raster)
require(sp)
require(rgdal)
require(landsat)
#
#Create raster
r <- raster(nc=1000, nr=1000)
set.seed(20130622)
stackIm1 <- stack(lapply(1, function(x) setValues(r, round(runif(ncell(r))* 255))))## Simulation red band
stackIm2 <- stack(lapply(1, function(x) setValues(r, round(runif(ncell(r))* 255))))## Simulation nir
# define projection system
r.geo <- CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs") # geographical datum WGS84
proj4string(stackIm1) <- r.geo
proj4string(stackIm2) <- r.geo
#
#Create geotiff
writeRaster(stackIm1, filename="stackIm1.tif", format="GTiff",overwrite=TRUE)
writeRaster(stackIm2, filename="stackIm2.tif", format="GTiff",overwrite=TRUE)
#
#Subset a geotiff image 50 x 50 pixels
stackIm1.sample<-lssub("stackIm1.tif", "stackIm1.sample.tif", centerx = 0, centery = 0, widthx = 50, widthy = 50)
stackIm2.sample<-lssub("stackIm1.tif", "sstackIm2.sample.tif", centerx = 0, centery = 0, widthx = 50, widthy = 50)
#
landc<- stack(c("stackIm1.sample.tif","tackIm2.sample.tif"))
Em 23/06/2013 12:59, Sarah Goslee escreveu:
> Hi,
>
> What happens?
>
> Do you get an error? Where?
>
> What is your sessionInfo()?
>
> As it says in the lssub() help, this function was written for a
> particular purpose, is only known to work on linux, and may not be
> widely applicable.
>
> It's a "use at your own risk" kind of function, and you may well be
> better off using one of the many other methods available for
> subsetting raster data, which would save you the whole "export as
> GeoTIFF, subset, reimport" sequence.
>
> Sarah
>
> On Sun, Jun 23, 2013 at 11:36 AM, Alexandre Santos
> <alexandresantosbr at yahoo.com.br> wrote:
>> Dear Members,
>>
>>
>> I'm having trouble calculating NDVI difference, first the images Geotiff can not view using Ubuntu 4.12 64-bit and therefore can not get to the NDVI, follow an example:
>>
>> require(raster)
>> require(sp)
>> require(rgdal)
>> require(landsat)
>> #
>> #Create raster
>> r <- raster(nc=1000, nr=1000)
>> set.seed(20130622)
>> stackIm1 <- stack(lapply(1, function(x) setValues(r, round(runif(ncell(r))* 255))))## Simulation red band
>> stackIm2 <- stack(lapply(1, function(x) setValues(r, round(runif(ncell(r))* 255))))## Simulation nir
>>
>> # define projection system
>> r.geo <- CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs") # geographical datum WGS84
>> proj4string(stackIm1) <- r.geo
>> proj4string(stackIm2) <- r.geo
>> #
>>
>> #Create geotiff
>> writeRaster(stackIm1, filename="stackIm1.tif", format="GTiff",overwrite=TRUE)
>> writeRaster(stackIm2, filename="stackIm2.tif", format="GTiff",overwrite=TRUE)
>> #
>>
>> #Subset a geotiff image 50 x 50 pixels
>> stackIm1.sample<-lssub("stackIm1.tif", "stackIm1.sample.tif", centerx = 0, centery = 0, widthx = 50, widthy = 50)
>> stackIm2.sample<-lssub("stackIm1.tif", "sstackIm2.sample.tif", centerx = 0, centery = 0, widthx = 50, widthy = 50)
>> #
>>
>> #Calculate NDVI difference
>>
>> multi.espc<-stack(c("stackIm1.sample.tif","stackIm2.sample.tif"))
>>
>> band3<-raster(multi.espc,1)
>> band4<-raster(multi.espc,2)
>>
>> ndvi<-(band4-band3)/(band4+band3)
>>
>> #
>>
>>
>>
--
======================================================================
Alexandre dos Santos
Proteção Florestal
Coordenador do curso Técnico em Florestas
Vice Coordenador do curso de Engenharia Florestal
IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
Campus Cáceres
Caixa Postal 244
Avenida dos Ramires, s/n
Bairro: Distrito Industrial
Cáceres - MT CEP: 78.200-000
Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO)
alexandre.santos at cas.ifmt.edu.br
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo at r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
More information about the R-sig-Geo
mailing list