Aquí hay un ejemplo extendido de la viñeta sp que muestra cómo crear un 'SpatialLinesDataFrame' a partir de un objeto ordinario 'data.frame'. Utilizo algunos datos de muestra creados a partir de las longitudes de las 'SpatialLines' a través gLength
de rgeos . Tenga en cuenta que el rownames
conjunto de datos creado que se transfiere SpatialLinesDataFrame
debe ser idéntico a los ID de línea definidos previamente (en este caso particular "a" y "b").
library(sp)
## from the sp vignette:
l1 <- cbind(c(1, 2, 3), c(3, 2, 2))
l2 <- cbind(c(1, 2, 3), c(1, 1.5, 1))
Sl1 <- Line(l1)
Sl2 <- Line(l2)
S1 <- Lines(list(Sl1), ID = "a")
S2 <- Lines(list(Sl2), ID = "b")
Sl <- SpatialLines(list(S1, S2))
## sample data: line lengths
library(rgeos)
df <- data.frame(len = sapply(1:length(Sl), function(i) gLength(Sl[i, ])))
rownames(df) <- sapply(1:length(Sl), function(i) Sl@lines[[i]]@ID)
## SpatialLines to SpatialLinesDataFrame
Sldf <- SpatialLinesDataFrame(Sl, data = df)
plot(Sldf, col = c("red", "blue"))
text(labels = paste0("length = ", round(Sldf@data$len, 2)),
x = gCentroid(Sldf, byid = TRUE)$x,
y = gCentroid(Sldf, byid = TRUE)$y)
?Lines
? Las líneas necesitan dos parámetros como entradaLines(slinelist, ID)