さて,
ここでなぜかしら「霞ヶ浦」とその東にある「北浦」
だけを描きたいとする --- どうしたらよいだろうか?
readShapeSpatial()
で生成された Lakes
は sp
クラスのオブジェクトであり,
そのスロットをながめてみると
……
> slotNames(Lakes)
[1] "data" "polygons" "plotOrder" "bbox" "proj4string"
となっている.
Lakes@data
はデータフレイムであり,
たぶんメタデータのようなもの
(後記: メタデータではなく属性デイブルです,
と教えてもらいました)
で,
> class(Lakes@data)
[1] "data.frame"
> dim(Lakes@data)
[1] 685 7
685 個の湖沼その他のデータがあることがわかる.
列はこんなかんぢなので,
> head(Lakes@data)
f_code f_code_des hyc hyc_descri nam nam_descri soc
0 BH000 Inland Water 8 Perennial/Permanent UNK No entry present JPN
1 BH000 Inland Water 8 Perennial/Permanent UNK No entry present JPN
2 BH000 Inland Water 8 Perennial/Permanent O NUMA <NA> JPN
3 BH000 Inland Water 8 Perennial/Permanent UNK No entry present JPN
4 BH000 Inland Water 8 Perennial/Permanent UNK No entry present JPN
5 BH000 Inland Water 8 Perennial/Permanent UNK No entry present JPN
「霞ヶ浦」「北浦」をさがしてみよう.
> charmatch(c("KASUMI", "KITA"), Lakes@data$nam)
[1] 449 450
449 番目と 450 番目のデータがそれだとわかるので,
Lakes@plotOrder
スロット (integer
な vector)
を強引に書き換えて plot()
すると,
> Lakes@plotOrder <- as.integer(c(449, 450))
> plot(Lakes, xlim = c(140.15, 140.6), ylim = c(36, 36.1), col = c("green", "blue"))
このように作図できます,
と
(後記: さらに教えてもらって,
sp
クラスの Lakes
オブジェクトは data.frame のようにあつかえる,
つまり plot(Lakes[c(449, 450),])
などとしたほうが better なようです).