Shapefileでエリアを統合

都道府県などで地域を塗分けることも可能だが,もう少し大きいレベルで塗分けが必要なこともある. 今回は,都道府県のpolygonデータを統合し,地方で塗分けることを考える.Shapefileの詳細については,本ブログの「Shapefileで沖縄を移動」を参照.

shapefileでは地域はアルファベット順番になっているため,下のように地図を並び替えるデータを用意しておくと楽. ここでは,アルファベット順と北から南の順番に並べた地域データを,Order_JISでさらに地域のカテゴリーを追加する. Areaの名前で地域の番号をいれておき,unionSpatialPolygons関数にこのデータを渡す. できあがったjpn1_Areaは,都道府県ではなく地域で分割されたデータとなっており,これをplotする. エリア数は10なので,rainbow関数で色を10色用意しておく.

# load required packages
library(maptools)
library(shapefiles)

# set working directory and import datasets
setwd(WD_shapefile)
jpn1 <- readShapePoly("JPN_adm1.shp")

# prepare area
PrefName <- c("Aichi", "Akita", "Aomori", "Chiba", "Ehime", "Fukui", "Fukuoka", "Fukushima", "Gifu", "Gumma",
              "Hiroshima", "Hokkaido", "Hyogo", "Ibaraki", "Ishikawa", "Iwate", "Kagawa", "Kagoshima", 
              "Kanagawa", "Kochi", "Kumamoto", "Kyoto", "Mie", "Miyagi", "Miyazaki", "Nagano", "Nagasaki", 
              "Nara", "Niigata", "Oita", "Okayama", "Okinawa", "Osaka", "Saga", "Saitama", "Shiga", "Shimane", 
              "Shizuoka", "Tochigi", "Tokushima", "Tokyo", "Tottori", "Toyama", "Wakayama", "Yamagata", 
              "Yamaguchi", "Yamanashi")
Order_EN  <- 1:47
Order_JIS <- c(22, 4, 2, 12, 37, 20, 40, 7, 23, 10, 34, 1, 28, 8, 19, 3, 36, 46, 14, 39, 43, 26, 24, 5, 45, 16,
               42, 29, 17, 44, 33, 47, 27, 41, 11, 25, 32, 21, 9, 38, 13, 31, 18, 30, 6, 35, 15)
Area <- c(5, 2, 2, 3, 8, 4, 9, 2, 5, 3, 7, 1, 6, 3, 4, 2, 8, 9, 3, 8, 9, 6, 5, 2, 9, 3, 9, 6, 4, 9, 7, 10, 6, 
          9, 3, 6, 7, 5, 3, 8, 3, 7, 4, 6, 2, 7, 3)
PrefOrder <- data.frame(PrefName = PrefName, Order_EN = Order_EN, Order_JIS = Order_JIS, Area = Area)

jpn1_Area <- unionSpatialPolygons(jpn1, PrefOrder$Area)
par(mar=c(0,0,0,0))
plot(jpn1_Area, border="gray30", lwd=1, col=rainbow(10))

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です