मैं डेटाफ़्रेम से SpatialLinesDataFrame कैसे बनाऊँ?


9

मैंने R में एक डेटा.फ्रेम बनाया है। मैं SpatialLinesDataFrame को एक परिणाम के रूप में प्राप्त करना चाहता हूं, इसलिए मैं समझता हूं कि मुझे data.frame को लाइनों में, SpatialLines में लाइनों और SpatialLines को SpatialLinesDataFrame में बदलना होगा। इसे मैने किया है

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

मुझे डेटा मिलता है। मैं चाहता हूं लेकिन लाइनें नहीं। मुझे यकीन है कि बुनियादी है लेकिन मुझे लाइनें क्यों नहीं मिल सकती हैं?


आपका डेटाफ़्रेम कैसा दिखता है? निर्देशांक कैसे संग्रहीत किए जाते हैं? आपने जांच की ?Lines? इनपुट के रूप में लाइनों को दो मापदंडों की आवश्यकता होती हैLines(slinelist, ID)
Iris

इसलिए हर लाइन में शुरुआती बिंदु और अंतिम बिंदु है। आप लाइन्स के बारे में सही हैं, मैंने यह किया: (i in seq_along (लाइन्स)) {लाइन्स [[i] <- लाइन्स (लाइन (rbind (c ($ $ x_f [i)]), $ $ $ _f] i]), c (फ़ाइलफ़ $ x_tr [i], फ़ाइलफ़ $ y_tr [i]))), as.character (i))}
gfl

जवाबों:


11

यहाँ sp vignette से एक विस्तारित उदाहरण दिया गया है, जो दर्शाता है कि एक साधारण 'data.frame' ऑब्जेक्ट से 'SpatialLinesDataFrame' कैसे बनाया जाता है। मैं 'नमूना' की लंबाई से बनाए गए कुछ सैंपल डेटा का उपयोग rgeos के माध्यम gLengthसे करता हूं । ध्यान दें कि rownamesबनाया गया डेटासेट SpatialLinesDataFrameपहले से परिभाषित लाइन आईडी (इस विशेष मामले में "ए" और "ए") के समान होना चाहिए।

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.