2017-10-23 14 views
0

SpatialPolygons 목록에서 SpatialPolygonsDataFrame을 만드는 방법을 찾고 있습니까?SpatialPolygons 목록에서 R - SpatialPolygonsDataFrame

다음은 목록의 모든 다각형을 포함하는 SpatialPolygonsDataFrame을 작성해야하는 다각형 목록의 예입니다.

편집 : SpatialPolygonsDataFrame은 SpatialPolygons 목록에서 만들어야합니다! 내 원래 데이터에는 SpatialPolygons가 별도의 값이 아니라 SpatialPolygons 목록으로 포함되어 있습니다. 이 목록을받는 방법은 예제의 것과 다릅니다. 목록의 데이터 구조를 보여주기 위해 예제를 게시했습니다. https://stat.ethz.ch/pipermail/r-sig-geo/2013-January/017225.html에서 가져온 SpatialPolygons의 목록

예 :

library(sp) 
grd <- GridTopology(c(0.5, 0.5), c(1, 1), c(6, 6)) 
Spol <- as(grd, "SpatialPolygons") 
list_of_SPolsu <- lapply(slot(Spol, "polygons"), function(x) 
    SpatialPolygons(list(x))) 
list_of_SPols <- lapply(slot(Spol, "polygons"), function(x) { 
    Pol <- x 
    slot(Pol, "ID") <- "1" 
    SpatialPolygons(list(Pol)) 
}) 

감사합니다!

+1

링크에는 이미 목록을 하나의 SpatialPolygon으로 결합하는 방법에 대한 정보가 들어 있습니다. 그런 다음,'as (mySpatialPolygon, "SpatialPolygonsDataFrame")'을 실행하면 SpatialPolygonsDataFrame을 얻게됩니다. – lukeA

+0

불행히도 내 데이터가 예제의 데이터와 약간 다릅니다. 별도의 SpatialPolygons가 아니라 Spatial Polygons 목록 만 있습니다. 나는 더 명확하게하기 위해 나의 질문을 편집 할 것이다. –

답변

1

이 시도 ... 아주 간단합니다

그냥 편집에 따라 완전한 답을 만들기 위해 :

#Creating a dataframe with Spol IDs 
Spol_df<- as.data.frame(sapply(slot(Spol, "polygons"), function(x) slot(x, "ID"))) 

#Making the IDs row names 
row.names(Spol_df) <- sapply(slot(Spol, "polygons"), function(x) slot(x, "ID")) 

# Making the spatial polygon data frame 
Spol_SPDF <- SpatialPolygonsDataFrame(Spol, data =Spol_df) 

그것이

편집 일을 알려줘 질문에서 ... 다각형 목록에서 SpatialPolygon을 만드는 방법에 대한 해결책은 제공된 링크에서 제공됩니다 :

#Getting polygon IDs 
IDs <- sapply(list_of_SPols, function(x) 
    slot(slot(x, "polygons")[[1]], "ID")) 

#Checking 
length(unique(IDs)) == length(list_of_SPols) 

#Making SpatialPolygons from list of polygons 
Spol <- SpatialPolygons(lapply(list_of_SPols, 
           function(x) slot(x, "polygons")[[1]])) 

+0

당신의 방식대로 작동하지만, 불행히도 SpatialPolygons 목록을받는 방식은 예제와 다릅니다. 내 데이터 구조를 보여주기 위해 예제를 게시했습니다. 내 데이터에는 SpatialPolygons가 별도의 값으로 포함되어 있지 않습니다. 따라서 SpatialPolygons가 포함 된 목록에서 SpatialPolygonsDataFrame을 만들어야합니다. –

+0

당신이 제공 한 링크가 이미 폴리곤 목록을 공식 클래스 공간 폴리곤 오브젝트로 변환하는 방법에 대한 정보를 가지고 있다는 것을 이해할 수 없습니다. 그리고 방금 Spatial Polygons Data Frame을 Spatial Polygons ... 다른 무엇을 찾고 계십니까? 목록에서 SpatialPolygons를 만들 때 준 이름으로 사용한 이름을 변경해야합니다. (Spol을 내가 작성한 코드 줄에서 꺼내서 대신 객체의 이름을 넣으십시오) .. 알았다? – Thai

+0

:) sry, 당신은 완전합니다! –