2017-05-23 8 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オブジェクトに変換します。

関連する問題