[R-sig-Geo] Quantiles (10th and 90th) of a Raster Stack?

Zia Uddin Ahmed zua3 at cornell.edu
Wed Jul 3 20:19:27 CEST 2013


I am trying to calculate 10- and 90-th quantiles of a raster stack . When I use following I always get quartile values from 0 to 100% with 25% interval. I am interested only 10th and 90-th quantiles of   a set of raster. Any suggestion?  
Thanks
Zia

library(raster)
fn <- system.file("external/test.grd", package="raster") 
r <- raster(fn)
r2 <- raster(fn)+runif(ncell(r))
r3 <- raster(fn)+runif(ncell(r))
r4 <- raster(fn)+runif(ncell(r))
s <- stack(r, r2,r3, r4)

Q10 <- calc(s, fun = stats::quantile,probs = 0.10,na.rm=TRUE)
summary(Q10)
> summary(Q10)
               0%       25%       50%       75%      100%
Min.     128.4340  128.4760  128.5845  128.7812  129.0879
1st Qu.  293.2325  293.4515  293.6626  293.9346  294.1769
Median   371.4120  371.6039  371.6643  371.6944  371.7912
3rd Qu.  499.8195  500.0833  500.3306  500.4950  500.5551
Max.    1805.7800 1805.8013 1805.8857 1806.0099 1806.1505
NA's    6097.0000 6097.0000 6097.0000 6097.0000 6097.0000
plot(Q10)

Q90 <- calc(s, fun = stats::quantile,probs = 0.90,na.rm=TRUE)
summary (Q90)
> summary(Q90)
               0%       25%       50%       75%      100%
Min.     128.4340  128.4760  128.5845  128.7812  129.0879
1st Qu.  293.2325  293.4515  293.6626  293.9346  294.1769
Median   371.4120  371.6039  371.6643  371.6944  371.7912
3rd Qu.  499.8195  500.0833  500.3306  500.4950  500.5551
Max.    1805.7800 1805.8013 1805.8857 1806.0099 1806.1505
NA's    6097.0000 6097.0000 6097.0000 6097.0000 6097.0000

-----Original Message-----
From: r-sig-geo-bounces at r-project.org [mailto:r-sig-geo-bounces at r-project.org] On Behalf Of Zia Uddin Ahmed
Sent: Wednesday, July 03, 2013 1:18 PM
To: Oscar Perpiñán Lamigueiro; Andrew Vitale
Cc: r-sig-geo at r-project.org
Subject: Re: [R-sig-Geo] Help: Individual plots all raster in a raster stack in loop

Thank you so much.
 It works with following code:

saveGIF(
print(spplot(s, layout=c(1, 1))),
height = 500, width = 350, interval = .3, outdir = getwd())

-----Original Message-----
From: Oscar Perpiñán Lamigueiro [mailto:oscar.perpinan at gmail.com]
Sent: Wednesday, July 03, 2013 2:56 AM
To: Andrew Vitale; Zia Uddin Ahmed
Cc: r-sig-geo at r-project.org
Subject: Re: [R-sig-Geo] Help: Individual plots all raster in a raster stack in loop

Hello,

Instead of using lapply, you can define layout=c(1, 1):

library(raster)

fn <- system.file("external/test.grd", package="raster") r <- raster(fn)
r2 <- raster(fn)+runif(ncell(r))
r3 <- raster(fn)+runif(ncell(r))
r4 <- raster(fn)+runif(ncell(r))
s <- stack(r, r2,r3, r4)

spplot(s, layout=c(1, 1))


On the other hand, you may be interested in this stackoverflow Q&A about animated plots:
http://stackoverflow.com/questions/1298100/creating-a-movie-from-a-series-of-plots-in-r

Last, there is a FAQ about the use of lattice/ggplot2 inside loops:
http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f

Best,

Oscar.

Andrew Vitale <vitale232 at gmail.com> writes:

> I was about to give up when I looked at your original email again.  
> Looks like you just need to wrap it with print():
>
> lapply(1:length(s), function(x){x11(); print(spplot(s[[x]], main =
> names(s[[x]])))})
>
> Does anyone on the list know why?
>
>
> On Tue, Jul 2, 2013 at 1:38 PM, Zia Uddin Ahmed <zua3 at cornell.edu> wrote:
>
>>  Hi Andrew,****
>>
>> It works fine with plot function. But like  to use “spplot” function.
>> Because like to customize plot following ways to create animated gif plot.
>>     ****
>>
>> However, when  I use spplot function in your code,  I have got plots 
>> with NULL values. Thanks Zia****
>>
>> ** **
>>
>> > lapply(1:nlayers(s), function(x){spplot(s[[x]], main =
>> names(s[[x]]));x11()})****
>>
>> [[1]]****
>>
>> NULL****
>>
>> ** **
>>
>> [[2]]****
>>
>> NULL****
>>
>> ** **
>>
>> [[3]]****
>>
>> NULL****
>>
>> ** **
>>
>> [[4]]****
>>
>> NULL****
>>
>> ** **
>>
>> # ****
>>
>> bd<-readShapePoly("BD_boundary.shp")****
>>
>> thana <- list("sp.lines", as(bd, "SpatialLines"), col="grey",
>> lwd=.7,lty=3)
>> ****
>>
>> at.NDVI <- seq(-3, +3, by = 0.5)****
>>
>> rgb.palette <-
>> colorRampPalette(c("firebrick4","khaki1","green4"))****
>>
>> ** **
>>
>> # Plot****
>>
>> ** **
>>
>> spplot(s$May_2012, main = "",****
>>
>>    sp.layout=list(thana),at=at.NDVI,****
>>
>>    par.settings=list(axis.line=list(col="grey60",lwd=0.5)),****
>>
>>
>> colorkey=list(space="right",width=1.8,at=1:13,labels=list(cex=1.2,at=
>> 1:13,
>> ****
>>
>>    labels=c("-3.0","","","-1.5","","", "0.0", "", "", "1.5", "", "",
>> "3.0"))),****
>>
>>    col.regions=rgb.palette(60))****
>>
>> ** **
>>
>> # Animated GIF (This function did not work!)****
>>
>> saveGIF(****
>>
>> for (i in 1:ns){****
>>
>>    print(spplot(s[], main = list(label=paste("May_",i),cex=1.5),****
>>
>>    sp.layout=list(thana), at=at.NDVI,****
>>
>>    par.settings=list(axis.line=list(col="grey25",lwd=0.5)),****
>>
>>
>> colorkey=list(space="right",width=1.8,at=1:21,labels=list(cex=1.2,at=
>> 1:21,
>> ****
>>
>>    labels=c("-3.0","","","-1.5","","", "0.0", "", "", "1.5", "", "",
>> "3.0"))),****
>>
>>    col.regions=rgb.palette(60)))}, ****
>>
>> height = 500, width = 350, interval = .3, outdir = getwd())****
>>
>> }****
>>
>> ** **
>>
>> *From:* Andrew Vitale [mailto:vitale232 at gmail.com]
>> *Sent:* Tuesday, July 02, 2013 4:24 PM
>>
>> *To:* Zia Uddin Ahmed
>> *Cc:* r-sig-geo at r-project.org
>> *Subject:* Re: [R-sig-Geo] Help: Individual plots all raster in a 
>> raster stack in loop****
>>
>> ** **
>>
>> Zia,****
>>
>> ** **
>>
>> I like to use the plot function from the raster package.****
>>
>> ** **
>>
>> ?raster:::plot****
>>
>> ** **
>>
>> To continue your example, I'm able to plot the individual layers of a 
>> stack using the lapply() function.  I'm not sure if there is a 
>> simpler way to do it, but this way works for me:****
>>
>> ** **
>>
>> library(raster)****
>>
>> library(sp)****
>>
>> library(gstat)****
>>
>> ** **
>>
>> fn <- system.file("external/test.grd", package="raster")****
>>
>> r <- raster(fn)****
>>
>> r2 <- raster(fn)+runif(ncell(r))****
>>
>> r3 <- raster(fn)+runif(ncell(r))****
>>
>> r4 <- raster(fn)+runif(ncell(r))****
>>
>> s <- stack(r, r2,r3, r4)****
>>
>> ** **
>>
>> # Plot all rasters in a raster stack****
>>
>> ** **
>>
>> lapply(1:nlayers(s), function(x){plot(s[[x]], main =
>> names(s[[x]]));x11()})
>> ****
>>
>> ** **
>>
>> ** **
>>
>> ####And if you want the layers all in one plot, just use****
>>
>> ** **
>>
>> plot(s)****
>>
>> ** **
>>
>> ** **
>>
>> ** **
>>
>> ** **
>>
>> ** **
>>
>> ** **
>>
>> On Tue, Jul 2, 2013 at 10:47 AM, Zia Uddin Ahmed <zua3 at cornell.edu> wrote:
>> ****
>>
>> I like to plot (individual plot all raster objects in raster stack in 
>> a loop. Help will be appreciated.
>> Thanks
>> Zia
>>
>> library(raster)
>> library(sp)
>> library(gstat)
>> fn <- system.file("external/test.grd", package="raster") r <-
>> raster(fn)
>> r2 <- raster(fn)+runif(ncell(r))
>> r3 <- raster(fn)+runif(ncell(r))
>> r4 <- raster(fn)+runif(ncell(r))
>> s <- stack(r, r2,r3, r4)
>> names(s)
>> # [1] "test.1" "test.2" "test.3" "test.4"
>>
>> # Plot all rasters in a raster stack
>> print(spplot(s$test.1))
>> print(spplot(s$test.2))
>> print(spplot(s$test.3))
>> print(spplot(s$test.4))
>>
>> From: Andrew Vitale [mailto:vitale232 at gmail.com]
>> Sent: Monday, July 01, 2013 3:13 PM
>> To: Zia Uddin Ahmed
>> Cc: Roman Luštrik; r-sig-geo at r-project.org
>> Subject: Re: [R-sig-Geo] Error creating a standard deviation map from 
>> raster stack
>>
>> Did the sample code I sent not run on your system?  That's strange.
>>
>>
>> On my machine:
>>
>>
>> library(raster)
>> fn <- system.file("external/test.grd", package="raster") r <-
>> raster(fn)
>> r2 <- raster(fn)+runif(ncell(r))
>> s <- stack(r, r2)
>> nlayers(s)
>> m<-mean(s)
>>
>> std<-calc(s, fun = sd)
>>
>> fun = function(x)
>> { sqrt(var(x))
>> }
>> sd <- calc(s, fun)
>>
>> par(mfrow=c(1,2));plot(sd,main = 'sd'); plot(std, main = 'std')
>>
>> identical(sd, std)
>> #[1] TRUE
>>
>> > 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  LC_CTYPE=English_United
>> States.1252
>> [3] LC_MONETARY=English_United States.1252 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] raster_2.1-37 sp_1.0-9
>>
>> loaded via a namespace (and not attached):
>> [1] grid_3.0.1      lattice_0.20-15
>>
>> On Mon, Jul 1, 2013 at 10:14 AM, Zia Uddin Ahmed <zua3 at cornell.edu<mailto:
>> zua3 at cornell.edu>> wrote:
>> Thanks you so much it works with following code. Zia
>>
>> fun = function(x)
>> { sqrt(var(x))
>> }
>> sd <- calc(s, fun)
>> plot(sd)
>>
>> From: Andrew Vitale
>> [mailto:vitale232 at gmail.com<mailto:vitale232 at gmail.com
>> >]
>> Sent: Monday, July 01, 2013 12:45 PM
>> To: Zia Uddin Ahmed
>> Cc: Roman Luštrik;
>> r-sig-geo at r-project.org<mailto:r-sig-geo at r-project.org>
>>
>> Subject: Re: [R-sig-Geo] Error creating a standard deviation map from 
>> raster stack
>>
>> Check out ?calc
>>
>> library(raster)
>> fn <- system.file("external/test.grd", package="raster") r <-
>> raster(fn)
>> r2 <- raster(fn)+runif(ncell(r))
>> s <- stack(r, r2)
>> nlayers(s)
>> m<-mean(s)
>> std<-calc(s, fun = sd)
>>
>>
>> On Mon, Jul 1, 2013 at 9:30 AM, Zia Uddin Ahmed <zua3 at cornell.edu<mailto:
>> zua3 at cornell.edu>> wrote:
>> In my case, object “s” is a set of 22 geo-tif files.
>> Thanks
>> zia
>>
>> From: romunov at gmail.com<mailto:romunov at gmail.com> [mailto:
>> romunov at gmail.com<mailto:romunov at gmail.com>] On Behalf Of Roman 
>> Luštrik
>> Sent: Monday, July 01, 2013 12:09 PM
>> To: Zia Uddin Ahmed
>> Cc: r-sig-geo at r-project.org<mailto:r-sig-geo at r-project.org>
>> Subject: Re: [R-sig-Geo] Error creating a standard deviation map from 
>> raster stack
>>
>> What's the class/structure of object `s`?
>>
>> Cheers,
>> Roman
>> On Mon, Jul 1, 2013 at 4:38 PM, Zia Uddin Ahmed <zua3 at cornell.edu<mailto:
>> zua3 at cornell.edu><mailto:zua3 at cornell.edu<mailto:zua3 at cornell.edu>>>
>> wrote:
>> 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><mailto:r-sig-geo-bounces at r-project.o
>> rg <mailto:r-sig-geo-bounces at r-project.org>> [mailto:
>> r-sig-geo-bounces at r-project.org<mailto:r-sig-geo-bounces at r-project.or
>> g
>> ><mailto: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<mailto:r-sig-geo at r-project.org
>> ><mailto:r-sig-geo at r-project.org<mailto: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<mailto:alexandresantosbr at yahoo.com.b
>> >r
>> ><mailto:alexandresantosbr at yahoo.com.br<mailto:
>> 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<tel:%28%2B55%29%2065%208132-8112<%28%2B55%29%2065%208132-8112>>
>> (TIM)   (+55) 65 9686-6970<tel:%28%2B55%29%2065%209686-6970<%28%2B55%29%2065%209686-6970>>
>> (VIVO)
>>          alexandre.santos at cas.ifmt.edu.br<mailto:
>> alexandre.santos at cas.ifmt.edu.br><mailto:alexandre.santos at cas.ifmt.ed
>> u.br <mailto:alexandre.santos at cas.ifmt.edu.br>>
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org<mailto:R-sig-Geo at r-project.org><mailto:
>> R-sig-Geo at r-project.org<mailto:R-sig-Geo at r-project.org>>
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org<mailto:R-sig-Geo at r-project.org><mailto:
>> R-sig-Geo at r-project.org<mailto:R-sig-Geo at r-project.org>>
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>>
>>
>> --
>> In God we trust, all others bring data.
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org<mailto:R-sig-Geo at r-project.org>
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>>
>>
>> --
>> Andrew P. Vitale
>> Masters Student
>> Department of Geography
>> University of Nevada, Reno
>> (412) 915-3632<tel:%28412%29%20915-3632 <%28412%29%20915-3632>> 
>> vitale232 at gmail.com<mailto:vitale232 at gmail.com>
>>
>>
>>
>> --
>> Andrew P. Vitale
>> Masters Student
>> Department of Geography
>> University of Nevada, Reno
>> (412) 915-3632
>> vitale232 at gmail.com<mailto:vitale232 at gmail.com>
>>
>>         [[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****
>>
>>
>>
>> ****
>>
>> ** **
>>
>> -- ****
>>
>> *Andrew P. Vitale*****
>>
>> Masters Student****
>>
>> Department of Geography****
>>
>> University of Nevada, Reno****
>>
>> (412) 915-3632****
>>
>> vitale232 at gmail.com****
>>


--
Oscar Perpiñán Lamigueiro
Grupo de Sistemas Fotovoltaicos (IES-UPM) Dpto. Ingeniería Eléctrica (EUITI-UPM)
URL: http://procomun.wordpress.com
Twitter: @oscarperpinan
LinkedIn: http://www.linkedin.com/in/oscarperpinan

_______________________________________________
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