2017-05-23 20 views
1

SpatialPolygonsDataFrame은 ggplot2에서 get_map의 출력을 사용하고 싶습니다. 시행 착오를 거친 후에 그것을 할 수있는 방법을 찾았지만 그것은 나에게 복잡하게 보입니다. 더 깨끗한 방법이 있습니까?map_data에서 SpatialPolygonsDataFrame으로 이동

library(ggplot2) 
library(sp) 
library(plyr) 
pnw.df <- map_data("state",region=c("washington","oregon","idaho")) 
# delete islands from subregions 
pnw.df$subregion[is.na(pnw.df$subregion)] <- "main" 
pnw.df <- subset(pnw.df,subregion == "main") 

getPolygons <- function(x) { 
    Polygons(list(Polygon(x[,c("long","lat")])),ID=unique(x$region)) 
} 

pnw.sp <- SpatialPolygons(dlply(pnw.df, .(region), getPolygons)) 
pnw.sp <- as(pnw.sp,"SpatialPolygonsDataFrame") 
proj4string(pnw.sp) <- "+proj=longlat +ellps=WGS84" 
plot(pnw.sp) 

답변

0

maptools::map2SpatialPolygons을 살펴보고 예제를 시도해보십시오. map_datamaps에서 데이터를 읽고 data.frame에 넣습니다. 그리 유용하지는 않습니다. maptools 함수는 maps에서 동일한 데이터를 가져와 SpatialPolygons 개체로 변환합니다.