Bir veri çerçevesinden nasıl SpatialLinesDataFrame oluşturabilirim?


9

R'de bir data.frame oluşturdum. Sonuç olarak SpatialLinesDataFrame almak istiyorum, böylece satırlar, SpatialLines ve SpatialLinesDataFrame içine SpatialLines içine satırları veri dönüştürmek zorunda anlamak. bunu ben yaptım

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

İstediğim data.frame'i alıyorum ama satırları değil. Eminim basit ama neden hatları alamıyorum?


Veri çerçeveniz nasıl görünüyor? Koordinatlar nasıl saklanır? Kontrol ettin ?Linesmi Satırların giriş olarak iki parametreye ihtiyacı vardırLines(slinelist, ID)
— İris

Yani her satırın başlangıç ​​noktası ve son noktası vardır. Çizgiler hakkında haklısın, yaptım: için (seq_along (satırlarda)) {lines [[i]] <- Lines (list (Line (rbind (c (dosya $ x_f [i], dosya $ y_f [ i]), c (dosyalanmış $ x_tr [i], dosyalanmışf $ y_tr [i])))), as.character (i))}
— gfl

Yanıtlar:


11

Aşağıda , sıradan bir 'data.frame' nesnesinden 'SpatialLinesDataFrame' oluşturmayı gösteren sp vignette'den genişletilmiş bir örnek verilmiştir . I ile tek bir 'SpatialLines' uzunlukları oluşturulan bir örnek verileri kullanmak gLengthgelen rgeos . Bu Not rownamesgeçirilir oluşturulan veri kümesinin SpatialLinesDataFrame( "a" ve "b", bu özel durumda), daha önce tanımlandığı hattı kimliklerine aynı olmalıdır.

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)

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.