5

map2SpatialPolygons米国の州のサブセットを示すマップでカーネル密度プロットを作成するために使用しようとしています。「マップと ID の長さが異なります」というエラーが表示され続けます。

このコードが機能することはわかっています (map2SpatialPolygons のヘルプから):

nor_coast_poly <- map("world", "norway", fill=TRUE, col="transparent", plot=FALSE, ylim=c(58,72))
IDs <- sapply(strsplit(nor_coast_poly$names, ":"), function(x) x[1])
nor_coast_poly_sp <- map2SpatialPolygons(nor_coast_poly, IDs=IDs, proj4string=CRS("+proj=longlat +datum=wgs84"))

このコードも機能します (米国全体をマッピングする場合):

usmap <- map('usa', fill=TRUE, col="transparent", resolution=0, plot=FALSE)
uspoly <- map2SpatialPolygons(usmap, IDs=usmap$names, proj4string=CRS("+proj=longlat +datum=WGS84"))

しかし、このコードはしません:

states.to.plot=c("illinois", "indiana", "ohio")
dmap<-map("state", regions=states.to.plot, col="transparent", plot=FALSE)
dpoly <- map2SpatialPolygons(dmap, IDs=dmap$names, proj4string=CRS("+proj=longlat +datum=WGS84"))

エラーがスローされます:

Error in map2SpatialPolygons(dmap, IDs = dmap$names, proj4string = CRS("+proj=longlat +datum=WGS84")) :
    map and IDs differ in length

map("state"...) を使用するときに ID を正しく取得するにはどうすればよいですか?

4

1 に答える 1

7

から?map:

戻り値は、x、y、範囲、および名前のコンポーネントを含むリストです。... fill が FALSE の場合、x および y ベクトルは、NA で区切られた連続するポリラインの座標です。fill が TRUE の場合、x および y ベクトルは連続するポリゴンの座標を持ち、再び NA で区切られます。

したがって、デフォルトのfill = FALSEでは、一連のポリラインが得られます。「束」は、プロットしたい 3 つの州より多いため、上記のエラーが発生します。mapただし、正しい数の ID を使用しても、ポリゴンではなくポリラインが返されるため、エラーが発生します。

を使用fill = TRUEすると、目的のポリゴンを取得できます。

dmap<-map("state", regions=states.to.plot, col="transparent", plot=FALSE, fill = TRUE)

dpoly <- map2SpatialPolygons(dmap, IDs = dmap$names,
  proj4string=CRS("+proj=longlat +datum=WGS84"))
于 2012-06-21T08:12:10.330 に答える