日本地図 都道府県境界の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()

求めていたのはこれです!!

Categories:

category