데이터 프레임에서 SpatialLinesDataFrame을 어떻게 만듭니 까?


9

R에 data.frame을 만들었습니다. 결과로 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

따라서 모든 줄에는 시작 지점과 최종 지점이 있습니다. 당신은 라인에 대해 옳았습니다, 나는 그것을했습니다 : i]), c (filedf $ x_tr [i], filedf $ y_tr [i])))), as.character (i))}
gfl

답변:


11

다음 은 일반적인 'data.frame'개체에서 'SpatialLinesDataFrame'을 만드는 방법을 보여주는 sp vignette 의 확장 예제입니다 . 나는 통해 하나의 'SpatialLines'의 길이에서 생성 된 일부 샘플 데이터 사용 gLength에서 rgeos을 . 참고 rownames로 전달 생성 된 데이터 세트가 SpatialLinesDataFrame( "A"와 "B"이 특정의 경우에) 이전에 정의 된 광고 ID가 동일해야한다.

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)

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.