Як створити SpatialLinesDataFrame з фрейму даних?


9

Я створив data.frame в R. Я хочу отримати SpatialLinesDataFrame як результат, тому я розумію, що мені потрібно перетворити data.frame в рядки, рядки в SpatialLines, а SpatialLines у SpatialLinesDataFrame. Я зробив це

filedata.frame=data.frame(matrix(file),ncol=14, byrow=T))
file=Lines(filedata.frame)

Я отримую потрібний data.frame, але не рядки. Я впевнений, що це основне, але чому я не можу отримати лінії?


Як виглядає ваш кадр даних? Як зберігаються координати? Ви перевірили ?Lines? Рядкам потрібні два параметри як вхідні даніLines(slinelist, ID)
Iris

Отже, кожен рядок має початкову і кінцеву точку. Ви маєте рацію щодо рядків, я це зробив: для (я в seq_along (рядки)) {рядки [[i]] <- рядки (список (рядок (rbind (c (файл $ x_f [i], файл $ x_f [i]), файл $ y_f [ i]), c (filef $ x_tr [i], filef $ y_tr [i])))), as.character (i))}
gfl

Відповіді:


11

Ось розширений приклад 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)

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.