[R-sig-Geo] calculate "regional" slope
chris english
englishchristophera at gmail.com
Fri Feb 19 22:50:35 CET 2016
Dominik,
Sorry, I'm still trying to understand your 0.05 to 1.5 degree part of your
problem.
Otherwise, I think you are limited to 8 neighbors as this reflects the
documentation as I read it.
Even Roualt perhaps would be up in arms; but, there's nothing saying you
can't do a 16 vs 8 neighbor. You'd have to examine the impacts thereafter,
but basically you'd be amending some gdal (probably a line or two of code)
for your purposes.
There are a bunch of things to consider, theoretical and practical; but,
why 16 better than 8. And more importantly as you relax, as a matter of
rings (in this case), would your analytical result be better? Or
potentially have any remainder meaning at all, I.e. I don't know my
neighbor's neighbor's neighbor (does that get us out to 16?).
And so generalizing beyond some given point might yield not much on a knn
influence/likeness basis.
I think we're first better off dialing back in on what you mean by regional
or the 0.5 to 1.5 resolution and then neighborhood size (4, 8,16?).
Of course another approach to this "what side of the mountain am I on" is
to transect along the z. I.e. roll your dem on it's side.
Anyway, clarify the 0.5/1.5 so I don't go too far astray.
Chris
Thanks for the suggestion Chris. I'm familiar with gdaldem, which
raster::terrain is based on, to compute slope from a dem. I now realize
that my example isnt a good one because neighbors=8 would achieve what I
described. However I actually want some flexibility such that I can
specifiy neighbors=16 so that it uses the next "ring" of cells.
I played around with focal() with weight argument =
matrix(rep(c(1,0,0,0,1),5),byrow=T) but couldn't figure out how to solve
for a directional slope.
On Fri, Feb 19, 2016 at 4:09 AM, chris english <
englishchristophera at gmail.com> wrote:
> Dominik,
>
> r <- raster(nrows=22, ncols=20, xmn=-58, xmx=-48, ymn=-33, ymx=-22)
> vals <- sample.int(1e3,440)
> r[ ] <- vals
> #raster::terrain
> terr_r <- terrain(r, opt='slope', unit='degrees', neighbors=8)
> Ah, but it appears you want up sampling to 1.5 degrees rather than 0.5 deg.
> so maybe spatial.tools::projectRaster_rigorous then raster:terrain.
>
> I'm inclined to end that last so maybe with a question mark. Sorry for an
> essentially inconclusive response but I was happy to find terrain in any
> case.
> Chris
>
> On Fri, Feb 19, 2016 at 2:59 AM, Dominik Schneider <
> Dominik.Schneider at colorado.edu> wrote:
>
>> I need to calculate slope at different scales. In the case below, r is a
>> 0.5deg resolution raster and I want the slope for 1.5 deg centered on each
>> of those 0.5 deg pixels. I'm trying to estimate which side of mountain
>> range each pixel is on. So the resulting raster would have the same number
>> of pixels as r. The edges can be NA.
>> any suggestions would be appreciated. Thanks
>>
>>
>> r <- raster(nrows=22, ncols=20, xmn=-58, xmx=-48, ymn=-33, ymx=-22)
>> setValues(r,rnorm(440))
>>
>> [[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
>>
>
>
[[alternative HTML version deleted]]
More information about the R-sig-Geo
mailing list