日本地図 都道府県境界のshape fileの作り方
都道府県のさらに市等に分かれたshpファイル自体は、国土地理院データ等で入手できます。ただ、欲しいのはそこまで細かいのではなく、都道府県境界だけのものが欲しいです。私の知る限りでは、都道府県境界だけのshpファイルは公開されていないようです。
以下のサイトで、都道府県のさらに細かい市等が含まれた全国のシェープファイルが公開されています。このサイトで全国のシェープファイルをダウンロードし、dissolveを行います。QGISで行うと遅すぎて1日かけても完成しないので、Rで実行します。Rであれば3分程度で完成します。
出典:国土交通省国土数値情報ダウンロードサイト「国土数値情報 行政区域データ」(国土交通省)(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v2_4.html)を加工して作成
上のサイトで、全国の最新版をダウンロードします。そして解凍します。shpファイルは、同じフォルダ内にあるshpファイル以外のファイルも参照しています。移動する際は、フォルダごと移動させます。
必要なlibraryは、sfとtidyverseです。
shpファイルの読み込み
library(sf)
library(tidyverse)
jpn <- st_read("N03-190101_GML/N03-19_190101.shp", options = "ENCODING=CP932")
ggplotで描写
ggplot(jpn)+
geom_sf()+
theme_void()
細かすぎてよくわかりません。
jpnファイルは、N03_001、N03_002、N03_003、N03_004、N03_007、geometryというコラムを持っています。N03_001は都道府県の名前です。
dissolve
dissolveを実行します。dplyrのgroup_by %>% summarise()を使って行うことができます。group_byで指定するのは、dissolveを行うレベルの列です。都道府県ごとにdissolveしたいので、都道府県の名前であるN03_001を指定します。
jpn_pref <- jpn %>% group_by(N03_001) %>% summarise()
3分ほどかかります。QGISとは違って早いです。さっそく、ggplotで描写してみます。
ggplot(jpn_pref)+
geom_sf()+
theme_void()
求めていたのはこれです。でも、もう少しこまかいところ(小さな島や細かい湾岸の形)を、シンプルにしたいです。
shapeファイルを保存
st_write(jpn_pref,"jpn_pref.shp", layer_options = "ENCODING=UTF-8")
これで保存できました。以下がフォルダにできたファイルです。
地形をシンプルにする方法
st_simplifyという関数を使います。これは、小さい島や地形などを消す効果があります。dToleranceでその力を調整します。
jpn <- st_read("jpn_pref.shp", options = "ENCODING=UTF-8")
jpn_simple <- st_simplify(jpn, dTolerance = 0.1)
グラフにしてみます。
ggplot(jpn_simple)+
geom_sf()+
theme_void()
求めていたのはこれです!!