Raster manipulation in R
Hi, Alternatively you could have a look at the function "terrain" in the raster package, it can calculate the slope for you using different algorithms, not sure if the one below is included though. For typical spatial requests like this, you could also use the mailing-list r-sig-geo. Cheers, Jon
On 01-Dec-11 14:27, Jean V Adams wrote:
jjcabrera20 wrote on 12/01/2011 04:02:47 AM:
Hello everyone in the forum For introducing myself I would say I have a basic knowledge of R. Now I am intended to implement a flood algorithm using R. I have some
MatLab
experience doing these, and as an example to explain more or less what I want, I have a m code to calculate the slope from a Digital elevation
model:
slope=zeros(row,col);
for i=2:row-1
for j=2:col-1
dzdx=(raster(i,j+1)-raster(i,j-1))/(2*res);
dzdy=(raster(i+1,j)-raster(i-1,j))/(2*res);
slope(i,j)=sqrt(dzdx^2+dzdy^2);
end
end;
The question is to know how to do the similar procedure on R. All
suggestions are welcome
Thanks
All best,
Jorge
PD:I am using R on windows system 64 bits
If I am interpreting your code correctly (I don't use MatLab myself), something like this should give you the same result in R: # example matrix of heights raster<- matrix(runif(20, 10, 30), nrow=4, ncol=5) # example resolution res<- 8.5 # dimensions of matrix drast<- dim(raster) # for every non-boundary point in the matrix, # calculate the distances between its adjacent columns (dzdx) and rows (dzdy) dzdx<- raster[2:(drast[1]-1), 3:drast[2]] - raster[2:(drast[1]-1), 1:(drast[2]-2)] dzdy<- raster[3:drast[1], 2:(drast[2]-1)] - raster[1:(drast[1]-2), 2:(drast[2]-1)] # calculate the slope from these distances and the resolution slope<- sqrt(dzdx^2 + dzdy^2) / (2*res) Jean [[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Jon Olav Sk?ien Joint Research Centre - European Commission Institute for Environment and Sustainability (IES) Global Environment Monitoring Unit Via Fermi 2749, TP 440, I-21027 Ispra (VA), ITALY jon.skoien at jrc.ec.europa.eu Tel: +39 0332 789206 Disclaimer: Views expressed in this email are those of the individual and do not necessarily represent official views of the European Commission.