Вот расширенный пример из виньетки sp, который демонстрирует, как создать SpatialLinesDataFrame из обычного объекта data.frame. Я использую некоторые примерные данные, созданные из длин единственной 'SpatialLines' gLength
из rgeos . Обратите внимание, что rownames
передаваемый набор созданного набора данных SpatialLinesDataFrame
должен быть идентичен ранее определенным идентификаторам строк (в данном конкретном случае «a» и «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
? Линии нуждаются в двух параметрахLines(slinelist, ID)