0

gadm データのいくつかの地域をマージして、マップをプロットしたいと考えています。これまでのところ、次のものがあります。

#install.packages("sp",dependencies=TRUE)
#install.packages("RColorBrewer",dependencies=TRUE)
#install.packages("maptools",dependencies=TRUE)
library(sp)
library(maptools)
#library(RColorBrewer)

# get spatial data
con <- url("http://gadm.org/data/rda/CZE_adm2.RData")
print(load(con))
close(con)

IDs <- gadm$ID_2
IDs[IDs %in% c(11500:11521)] <- "11500"
gadm_new <- unionSpatialPolygons(gadm, IDs)

# plot map
spplot(gadm_new, "NAME_2", col.regions=col, main="Test",colorkey = FALSE, lwd=.4, col="white")

ただし、これはエラーになります。

Error in function (classes, fdef, mtable)  : 
  unable to find an inherited method for function "spplot", for signature "SpatialPolygons"

今、何がこのエラーを修正できるのかわかりません。

4

1 に答える 1

2

ここで何をしようとしているのかよくわかりません。

spplotこのエラーは、 が属性を持つ、つまり関連データを持つ空間オブジェクトを描画するために使用されるという事実によるものです。オブジェクトgadmは クラスSpatialPolygonsDataFrameであるため、スロットを介してアクセスできるポリゴンと関連データを定義しますgadm@data。を使用すると、 ではプロットできますが、 ではプロットできないクラス オブジェクトUnionSpatialPolygonsのみが取得されます。SpatialPolygonsplotspplot

IDs <- gadm$ID_2
IDs[IDs %in% c(11500:11521)] <- "11500"
gadm_new <- unionSpatialPolygons(gadm, IDs)
plot(gadm_new)

を使用する場合spplotは、ポリゴンをマージしたのと同じ方法で関連データを手動でマージしてから、SpatialPolygonsDataFrame. それを行う1つの方法は次のとおりです。

gadm_new <- gadm
## Change IDs
gadm_new$ID_2[gadm_new$ID_2 %in% c(11500:11521)] <- "11500"
## Merge Polygons
gadm_new.sp <- unionSpatialPolygons(gadm_new, gadm_new$ID_2)
## Merge data
gadm_new.data <- unique(gadm_new@data[,c("ID_2", "ENGTYPE_2")])
## Rownames of the associated data frame must be the same as polygons IDs
rownames(gadm_new.data) <- gadm_new.data$ID_2
## Build the new SpatialPolygonsDataFrame
gadm_new <- SpatialPolygonsDataFrame(gadm_new.sp, gadm_new.data) 

次にspplot 、関連付けられた属性を使用してマップをプロットするために使用できます。

spplot(gadm_new, "ENGTYPE_2", main="Test", lwd=.4, col="white")

ここでは、ENGTYPE_2変数ではなくデータの変数のみを使用したことに注意してくださいNAME_2。各ポリゴンで各値が一意に見える変数を表すポイントがわからないためです。

于 2013-03-04T13:18:16.247 に答える