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.