[R-sig-Geo] vertical profile of raster DEM along road (package raster)
Matteo Mattiuzzi
matteo.mattiuzzi at boku.ac.at
Fri Apr 5 14:24:51 CEST 2013
Hi, my doubt is that extract does not sort the values according to the SpatialLine direction but sorts it somehow on its extraction order. I think it is a bug or at least a not ideal behavior in extract() on spatial lines.
I think Robert can clarify this?
library(raster)
# raster example in extract:
r <- raster(ncol=36, nrow=18)
r[] <- 1:ncell(r)
cds1 <- rbind(c(-50,0), c(0,60), c(40,5), c(15,-45), c(-10,-25))
cds2 <- rbind(c(80,20), c(140,60), c(160,0), c(140,-55))
lines <- SpatialLines(list(Lines(list(Line(cds1)), "1"), Lines(list(Line(cds2)), "2") ))[1] # only 1 line!
plot(r)
lines(lines)
x11()
plot(extract(r, lines)[[1]]) # following the line the values should be sorted differently.
#
rasGround <- raster("rasGroundCrop.tif", crs = "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=653.0,-212.0,449.0 +units=m +no_defs")
Road34 <- shapefile("Profil")
projection(Road34) <- projection(rasGround)
plot(rasGround)
plot(Road34, add = TRUE, col = "black", lwd = 3)
plot(extract(rasGround, Road34)[[1]], type = "l")
Matteo
>>> Omphalodes Verna 04/05/13 1:24 PM >>>
Dear Matteo!
Thanks
for suggestion. I tried your code, but it seems that it is not working. Please
see my code and in attached files are files.
library(sp)
library(raster)
library(rgdal)
rasGround <-
raster("rasGroundCrop.tif", crs = "+proj=tmerc +lat_0=0
+lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel
+towgs84=653.0,-212.0,449.0 +units=m +no_defs")
Road34 <- readOGR(".",
"Profil",
p4s = "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999
+x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=653.0,-212.0,449.0 +units=m
+no_defs")
plot(rasGround)
plot(Road34, add = TRUE, col = "black",
lwd = 3)
plot(extract(rasGround, Road34)[[1]], type =
"l") #Not works
Maybe this could be a solution but
I lose direction:
pointsXY <- rasterToPoints(rasGround)
rasX <- rasGround
rasY <- rasGround
rasX[] <- pointsXY[, 1]
rasY[] <- pointsXY[, 2]
rasXYZ <- stack(rasGround, rasX, rasY)
segment <- extract(rasXYZ, Road34)[[1]]
IDX <- order(segment[, 2], segment[, 3])
segment <- segment[IDX, ]
plot(segment[,1], type = "l")
Thanks, OV
----- Original Message -----
From: Matteo Mattiuzzi
To: r-sig-geo at r-project.org; omphalodes.verna at yahoo.com
Cc:
Sent: Thursday, March 21, 2013 7:52 PM
Subject: Re: [R-sig-Geo] vertical profile of raster DEM along road (package raster)
Dear Omphalodes,
library(raster)
library(sp)
set.seed(2)
data(volcano)
r <- raster(volcano)
plot(r)
l1 = cbind(c(seq(0,1 , by = 0.1)), runif(11, 0, 1))
S1 = Lines(list(Line(l1)), ID = "a")
lines(S1, asp = 1, col = "red")
S1<-SpatialLines(list(S1)) # I'm not practic in sp, but this at least works!
extract(r,S1)
Matteo
>>> Omphalodes Verna 03/21/13 6:06 PM >>>
Dear list.
I am asking for advice for getting verticale profile of DEM along line object. I konw, it is easy for one straight line (distance and extract functions) also with using a combination of GRASS and R ( http://casoilresource.lawr.ucdavis.edu/drupal/node/375 ). Is in R possible to do this.
Thanks to all. OV
Here is a sample code:
library(raster)
library(sp)
set.seed(2)
data(volcano)
r <- raster(volcano)
plot(r)
l1 = cbind(c(seq(0,1 , by = 0.1)), runif(11, 0, 1))
S1 = Lines(list(Line(l1)), ID = "a")
lines(S1, asp = 1, col = "red")
_______________________________________________
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