Robert, Thanks for the input. Looks like resample() and terrain() return the same values, which is reassuring.
G On Mon, Sep 16, 2013 at 5:38 PM, Robert J. Hijmans <r.hijm...@gmail.com>wrote: > Gabrielle you are right, if the resolution is in fact different -- I > did not look carefully enough at the decimals -- then crop/extend > won't work and you will need resample. > Another approach would be to use the "terrain" function in raster and > compute slope and aspect from the elevation data. > Robert > > On Sun, Sep 15, 2013 at 11:50 PM, Gabriele Cozzi <gab.co...@gmail.com> > wrote: > > Dear Robert, > > > > thank you for going through my post again. Really appreciated > > > > I just tried what you suggested but neither crop() nor extend() do fix my > > problem; the extent and the resolution of forest remains different from > > slope and aspect > > > > Indeed aspect and slope have one more column than altitude, but I believe > > this is the result of the resolution being different in the original > rasters > > > > res(aspect) > > res(slope) > > # 27.28532 27.28532 > > > > res(altitude) > > # 27.28532 27.28677 > > > > I believe this is the reason why cropping (or extending) does not work > > because a raster cannot be cropped using an extent that does not allow > for a > > finite number of rows? > > I think that cropping aspect with altitude would result in a decimal > number > > nrow(aspect) = xxx.y and a raster row can not take decimals? > > > > Does this make sense? > > > > Any further suggestion is appreciated > > > > I think I will also try to find out why, to begin with, the 3 raster > layers > > that I was given have different resolution. They all come from the same > > satellite imagery so they should have the same resolution. > > > > Thanks in advance, > > > > Gabriele > > > > > > > > On Mon, Sep 16, 2013 at 8:07 AM, Robert J. Hijmans <r.hijm...@gmail.com> > > wrote: > >> > >> Gabriele, > >> > >> That is not the best solution in this case; resampling should be a > >> function of last resort. As Lionel pointed out, aspect has one more > >> column than altitude, but has otherwise the same parameters. > >> Therefore, the approach should be using the crop function (which you > >> used, but after first making a mistake with res). > >> > >> asp = crop(aspect, altitude) > >> slp = crop(slope, altitude) > >> > >> OR the opposite route; add the row to the altitude raster: > >> > >> alt = extend(altitude, aspect) > >> > >> Robert > >> > >> On Thu, Sep 12, 2013 at 8:45 AM, Gabriele Cozzi <gab.co...@gmail.com> > >> wrote: > >> > Lionel, Paco, > >> > > >> > thanks for the quick answers. > >> > > >> > Going through your suggestions I found that the function *resample > >> > {raster} > >> > *that transfers values between non matching Raster* objects (in terms > of > >> > origin and resolution) does exactly what I need. > >> > > >> > *resample* is actually embedded in the function *spatial_sync_raster* > >> > that > >> > I had problems to run. When I tried to run it I got the following > error > >> > message: > >> > > >> > Error in spatial_sync_raster(alt, slo, method = "ngb", verbose = > FALSE) > >> > : > >> > could not find function "expand" > >> > > >> > *expand* is not part of the package climstats and I am not quite sure > >> > where > >> > to find it... > >> > > >> > But as said, *resample()* solved my problem. > >> > > >> > Thanks! > >> > > >> > > >> > Gabriele > >> > > >> > > >> > > >> > On Thu, Sep 12, 2013 at 1:33 PM, Francisco Rodriguez Sanchez < > >> > f.rodriguez.s...@gmail.com> wrote: > >> > > >> >> Hi Gabriele, > >> >> > >> >> Try the spatial_sync_raster function in package climstats: > >> >> > >> >> https://r-forge.r-project.org/**projects/climstats/< > https://r-forge.r-project.org/projects/climstats/>. > >> >> It will align the projection, extent and resolution of your rasters > all > >> >> at > >> >> once > >> >> > >> >> Hope it helps, > >> >> > >> >> Paco > >> >> > >> >> > >> >> El 12/09/2013 11:59, Gabriele Cozzi escribió: > >> >> > >> >> Dear list, > >> >>> > >> >>> I was given three raster files with 'slope', 'aspect' and 'altitude' > >> >>> of my > >> >>> study site. I realised that one of the three rasters (namely > >> >>> 'altitude') > >> >>> has a slightly different raster cell resolution, which results in a > >> >>> slightly different raster extent and does not allow me to > >> >>> raster::stack() > >> >>> the three layers to create a single stack object. > >> >>> I tried to change the raster resolution using raster::res() for the > >> >>> raster > >> >>> 'altitude' but, when I subsequently cropped the three rasters with > an > >> >>> object of class extent, I still got different extents between "slope > >> >>> and > >> >>> aspect" vs. "altitude". > >> >>> > >> >>> Any advice on how to solve this cell resolution incongruence is very > >> >>> welcome. > >> >>> Here below I report the output to make things more understandable. > >> >>> > >> >>> Thanks in advance, > >> >>> Gabriele > >> >>> > >> >>> > >> >>> > >> >>> #---------------- > >> >>> #---------------- > >> >>> > >> >>> aspect <- raster("~/Envir/aspect/prj.**adf") > >> >>> slope <- raster("~/Envir/slope/prj.adf"**) > >> >>> altitude <- raster("~/Envir/**20130508094222_992463356.tif") > >> >>> > >> >>> aspect ( N.B. 'slope' returns exactly the same attributes!) > >> >>> #class : RasterLayer > >> >>> #dimensions : 9813, 8428, 82703964 (nrow, ncol, ncell) > >> >>> #resolution : 27.28532, 27.28532 (x, y) > >> >>> #extent : 135446.9, 365407.6, 4345919, 4613669 (xmin, > xmax, > >> >>> ymin, > >> >>> ymax) > >> >>> #coord. ref. : +proj=utm +zone=38 +ellps=WGS84 > >> >>> +towgs84=0,0,0,0,0,0,0 > >> >>> +units=m +no_defs > >> >>> > >> >>> altitude > >> >>> #class : RasterLayer > >> >>> #dimensions : 9812, 8428, 82695536 (nrow, ncol, ncell) > >> >>> #resolution : 27.28532, 27.28677 (x, y) > >> >>> #extent : 135446.9, 365407.6, 4345919, 4613656 (xmin, > xmax, > >> >>> ymin, > >> >>> ymax) > >> >>> #coord. ref. : +proj=utm +zone=38 +datum=WGS84 +units=m +no_defs > >> >>> +ellps=WGS84 +towgs84=0,0,0 > >> >>> > >> >>> ex <- extent(animal_locations) > >> >>> ex > >> >>> #class : Extent > >> >>> #xmin : 257473.1 > >> >>> #xmax : 312499.1 > >> >>> #ymin : 4452821 > >> >>> #ymax : 4570717 > >> >>> > >> >>> Before using the function raster.crop <- crop('raster_file', ex) to > >> >>> crop > >> >>> all rasters to the same extent, I tried to change the resolution of > >> >>> 'altitude' using > >> >>> > >> >>> res(altitude) <- 27.28532 > >> >>> > >> >>> altitude > >> >>> #class : RasterLayer > >> >>> #dimensions : 9813, 8428, 82703964 (nrow, ncol, ncell) > >> >>> #resolution : 27.28532, 27.28532 (x, y) > >> >>> #extent : 135446.9, 365407.6, 4345905, 4613656 (xmin, > xmax, > >> >>> ymin, > >> >>> ymax) > >> >>> #coord. ref. : +proj=utm +zone=38 +datum=WGS84 +units=m +no_defs > >> >>> +ellps=WGS84 +towgs84=0,0,0 > >> >>> > >> >>> When I then run crop() for aspect and the new defined altitude I > >> >>> however > >> >>> become different extents (i.e. ymin and ymax) despite now the > >> >>> dimensions > >> >>> and resolutions are the same > >> >>> > >> >>> crop(aspect, ex) > >> >>> #class : RasterLayer > >> >>> #dimensions : 5054, 2749, 13893446 (nrow, ncol, ncell) > >> >>> #resolution : 27.28532, 27.28532 (x, y) > >> >>> #extent : 247480.5, 322487.8, 4442809, 4580709 (xmin, > xmax, > >> >>> ymin, > >> >>> ymax) > >> >>> #coord. ref. : +proj=utm +zone=38 +ellps=WGS84 > >> >>> +towgs84=0,0,0,0,0,0,0 > >> >>> +units=m +no_defs > >> >>> #names : prj > >> >>> #values : -1, 359.8158 (min, max) > >> >>> > >> >>> crop(altitude, ex) > >> >>> #class : RasterLayer > >> >>> #dimensions : 5054, 2749, 13893446 (nrow, ncol, ncell) > >> >>> #resolution : 27.28532, 27.28532 (x, y) > >> >>> #extent : 247480.5, 322487.8, 4442823, 4580723 (xmin, > xmax, > >> >>> ymin, > >> >>> ymax) > >> >>> #coord. ref. : +proj=utm +zone=38 +datum=WGS84 +units=m +no_defs > >> >>> +ellps=WGS84 +towgs84=0,0,0 > >> >>> > >> >>> It also appears to me that by redefining res(altitude) I loose the > >> >>> actual > >> >>> values assigned to each pixel. Is there an argument to assign to the > >> >>> new > >> >>> pixels the value of the centre of the pixel? > >> >>> > >> >>> > >> >>> > >> >>> > >> >> -- > >> >> Dr Francisco Rodriguez-Sanchez > >> >> Forest Ecology and Conservation Group > >> >> Department of Plant Sciences > >> >> University of Cambridge > >> >> Downing Street > >> >> Cambridge CB2 3EA > >> >> United Kingdom > >> >> > >> >> http://sites.google.com/site/**rodriguezsanchezf< > http://sites.google.com/site/rodriguezsanchezf> > >> >> > >> >> > >> >> ______________________________**_________________ > >> >> R-sig-Geo mailing list > >> >> R-sig-Geo@r-project.org > >> >> > >> >> https://stat.ethz.ch/mailman/**listinfo/r-sig-geo< > https://stat.ethz.ch/mailman/listinfo/r-sig-geo> > >> >> > >> > > >> > > >> > > >> > -- > >> > Gabriele Cozzi > >> > Postdoctoral Research Associate > >> > Population Ecology Research Group > >> > http://www.popecol.org > >> > > >> > Zurich University > >> > Institute of Evolutionary Biology and Environmental Studies > >> > Winterthurerstr. 190 > >> > 8057 Zurich - Switzerland > >> > E-mail: gabriele.co...@uzh.ch > >> > Phone: +41(0)44 635 49 12 > >> > Fax: +41(0)16355711 > >> > http://www.ieu.uzh.ch > >> > > >> > [[alternative HTML version deleted]] > >> > > >> > > >> > _______________________________________________ > >> > R-sig-Geo mailing list > >> > R-sig-Geo@r-project.org > >> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo > >> > > > > > > > > > > > -- > > Gabriele Cozzi > > Postdoctoral Research Associate > > Population Ecology Research Group > > http://www.popecol.org > > > > Zurich University > > Institute of Evolutionary Biology and Environmental Studies > > Winterthurerstr. 190 > > 8057 Zurich - Switzerland > > E-mail: gabriele.co...@uzh.ch > > Phone: +41(0)44 635 49 12 > > Fax: +41(0)16355711 > > http://www.ieu.uzh.ch > > > -- Gabriele Cozzi Postdoctoral Research Associate Population Ecology Research Group http://www.popecol.org Zurich University Institute of Evolutionary Biology and Environmental Studies Winterthurerstr. 190 8057 Zurich - Switzerland E-mail: gabriele.co...@uzh.ch Phone: +41(0)44 635 49 12 Fax: +41(0)16355711 http://www.ieu.uzh.ch [[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo