この記事は、Rでポリゴンを融合する為の準備に関する記事です。
記事の概要です。
- 今回と次回で、茨城県を5つの地域に分けた地図を作成します。
- 5つの地域は「県北・県央・鹿行(ろっこう)・県南・県西」です。
- この記事では、茨城県のシェープファイルに地域区分の属性情報を付与します。
シェープファイルに地域区分の属性情報を付与する部分です。
shp <- mutate(shp, N03_002 = case_when(N03_004 %in% kenhoku ~ "県北", N03_004 %in% kenou ~ "県央", N03_004 %in% rokkou ~ "鹿行", N03_004 %in% kennan ~ "県南", N03_004 %in% kensei ~ "県西", TRUE ~ NA_character_ ))
kenhokuやkenouなどは、県北や県央に属する市町村名のベクトルです。
こちらはソースコード全体です。
## データ読み込み: 茨城県のシェープファイル library(sf) shp <- st_read("./data/N03-20150101_08_GML", options = "ENCODING=SHIFT-JIS", stringsAsFactors = FALSE) shp # 確認:シェープファイルの中身 ## N03_002カラムに各市町村(N03_004)が属する地域を格納 kenhoku <- c("日立市", "高萩市", "北茨城市", "常陸太田市", "常陸大宮市", "大子町") # 県北 kenou <- c("水戸市", "笠間市", "小美玉市", "茨城町", "大洗町", "城里町", "ひたちなか市", "那珂市", "東海村") # 県央 rokkou <- c("鹿嶋市", " 神栖市", " 潮来市", " 行方市", " 鉾田市") # 鹿行 kennan <- c("土浦市", "石岡市", "龍ケ崎市", "取手市", "牛久市", "かすみがうら市", "阿見町", "つくば市", "守谷市", "つくばみらい市", "稲敷市", "美浦村", "河内町", "利根町") # 県南 kensei <- c("古河市", "常総市", "坂東市", "五霞町", "境町", "結城市", "下妻市", "筑西市", "桜川市", "八千代町") # 県西 library(dplyr) shp <- mutate(shp, N03_002 = case_when(N03_004 %in% kenhoku ~ "県北", N03_004 %in% kenou ~ "県央", N03_004 %in% rokkou ~ "鹿行", N03_004 %in% kennan ~ "県南", N03_004 %in% kensei ~ "県西", TRUE ~ NA_character_ )) shp # 確認:N03_002カラムの内容

市町村って、茨城県だけでも沢山ありますね!
茨城県の市町村数は44です!
また、この記事は、QGISのこちらの記事と対応しています。
この記事で使用したRとパッケージのバージョンを記載しておきます。
バージョンが異なると、動作や表示も若干異なる場合があるからです。
- R 3.6.1
- sf 0.7-6
- dplyr 0.8.3
茨城県の地域区分
茨城県は、県北・県央・鹿行・県南・県西の5つの地域に区分されます。
具体的には、こちらの記事をご確認ください。
シェープファイルに地域区分情報を付与
まず、茨城県のシェープファイルを読み込みます。
シェープファイルが無い場合は、こちらを参考にダウンロードして下さい。
library(sf) shp <- st_read("./data/N03-20150101_08_GML", options = "ENCODING=SHIFT-JIS")
読み込んだ内容を確認しましょう。
shp # 確認:シェープファイルの中身
Simple feature collection with 162 features and 5 fields geometry type: POLYGON dimension: XY bbox: xmin: 139.6877 ymin: 35.73914 xmax: 140.852 ymax: 36.9453 epsg (SRID): NA proj4string: +proj=longlat +ellps=GRS80 +no_defs First 10 features: N03_001 N03_002 N03_003 N03_004 N03_007 geometry 1 茨城県 2 水戸市 08201 POLYGON ((140.3894 36.46392... 2 茨城県 1 日立市 08202 POLYGON ((140.6364 36.47452... 3 茨城県 1 日立市 08202 POLYGON ((140.6301 36.48646... 4 茨城県 1 日立市 08202 POLYGON ((140.6305 36.49491... 5 茨城県 1 日立市 08202 POLYGON ((140.6388 36.49908... 6 茨城県 1 日立市 08202 POLYGON ((140.6353 36.50807... 7 茨城県 1 日立市 08202 POLYGON ((140.6463 36.5421,... 8 茨城県 1 日立市 08202 POLYGON ((140.6467 36.54221... 9 茨城県 1 日立市 08202 POLYGON ((140.6476 36.54248... 10 茨城県 1 日立市 08202 POLYGON ((140.6506 36.54408...
特に問題は無いようです。
では、QGISの記事に合わせ、N03_002カラムに各市町村が属する地域を格納しましょう。
プログラムを見やすくするため、市町村を地域毎にまとめたベクトルを作成します。
kenhoku <- c("日立市", "高萩市", "北茨城市", "常陸太田市", "常陸大宮市", "大子町") # 県北 kenou <- c("水戸市", "笠間市", "小美玉市", "茨城町", "大洗町", "城里町", "ひたちなか市", "那珂市", "東海村") # 県央 rokkou <- c("鹿嶋市", " 神栖市", " 潮来市", " 行方市", " 鉾田市") # 鹿行 kennan <- c("土浦市", "石岡市", "龍ケ崎市", "取手市", "牛久市", "かすみがうら市", "阿見町", "つくば市", "守谷市", "つくばみらい市", "稲敷市", "美浦村", "河内町", "利根町") # 県南 kensei <- c("古河市", "常総市", "坂東市", "五霞町", "境町", "結城市", "下妻市", "筑西市", "桜川市", "八千代町") # 県西
作成できたら、N03_002カラムに各市町村(N03_004)が属する地域名を格納します。
library(dplyr) shp <- mutate(shp, N03_002 = case_when(N03_004 %in% kenhoku ~ "県北", N03_004 %in% kenou ~ "県央", N03_004 %in% rokkou ~ "鹿行", N03_004 %in% kennan ~ "県南", N03_004 %in% kensei ~ "県西", TRUE ~ NA_character_ ))
case_whenのところでは、市町村(N03_004)一つ一つに対して、その市町村が属する地域名を返しています。
市町村がどの地域にも属していない場合、地域名は欠損値(NA_character_)となります。
簡単に確認しましょう。
shp # 確認:N03_002カラムの内容
Simple feature collection with 162 features and 5 fields geometry type: POLYGON dimension: XY bbox: xmin: 139.6877 ymin: 35.73914 xmax: 140.852 ymax: 36.9453 epsg (SRID): NA proj4string: +proj=longlat +ellps=GRS80 +no_defs First 10 features: N03_001 N03_002 N03_003 N03_004 N03_007 geometry 1 茨城県 県央 水戸市 08201 POLYGON ((140.3894 36.46392... 2 茨城県 県北 日立市 08202 POLYGON ((140.6364 36.47452... 3 茨城県 県北 日立市 08202 POLYGON ((140.6301 36.48646... 4 茨城県 県北 日立市 08202 POLYGON ((140.6305 36.49491... 5 茨城県 県北 日立市 08202 POLYGON ((140.6388 36.49908... 6 茨城県 県北 日立市 08202 POLYGON ((140.6353 36.50807... 7 茨城県 県北 日立市 08202 POLYGON ((140.6463 36.5421,... 8 茨城県 県北 日立市 08202 POLYGON ((140.6467 36.54221... 9 茨城県 県北 日立市 08202 POLYGON ((140.6476 36.54248... 10 茨城県 県北 日立市 08202 POLYGON ((140.6506 36.54408...
特に問題は無いようです。
本当はもっと細かく確認すべきだと思います。
ただ、もし問題があれば、次回行う描画時に発見できるはず。
なので、今回はこれくらいで。
おわりに
お疲れさまでした。
次回は実践編です!
では。
—
YouTube: ミサキさん
問い合わせ先
Mail: caprico.aries@gmail.com
Twitter: https://twitter.com/caprico_aries(無言フォローもお気軽に)
コメント
[…] こちらはソースコード全体(前回記載した分は略)です。 […]
[…] Rでポリゴンを融合する(準備編) | R, GISRでポリゴンを融合する(実践編) | R, GIS […]
[…] Rでポリゴンを融合する(準備編) | R, GIS […]