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.28*532*

res(altitude)
# 27.28532 27.28*677*

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.hijmans@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.cozzi@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.sanc@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.cozzi@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.cozzi@uzh.ch
Phone: +41(0)44 635 49 12
Fax: +41(0)16355711
http://www.ieu.uzh.ch

	[[alternative HTML version deleted]]

