1 目的

国土数値情報ダウンロードサービスの行政区域(ポリゴン)に人口密度(地域メッシュ統計)を重ねる.

ライブラリ:sftidyverse

library(sf)
library(tidyverse)

2 人口密度の可視化

人口密度を示す方法はいくつかある.ここでは,その方法の一つとして,静岡県の行政区域(ポリゴン)に1kmメッシュ別人口を重ねる方法を紹介する.

データとしては500mメッシュも用意されているが,都道府県など範囲が広い場合は,メッシュが相対的に小さく,見えにくくなる.

シェープファイルのダウンロード

  • 国土数値情報ダウンロードサービス > 行政区域(ポリゴン) > 静岡県 > 令和3年 

  • 国土数値情報ダウンロードサービス > 1kmメッシュ別将来推計人口(H30国政局推計)(shape形式版) > 静岡県 > 世界測地系

    • ダウンロードしたZIPファイルは同じフォルダ(ディレクトリ)に納め,ZIPファイルを選択 > 右クリック > すべて展開 > 展開先の選択とファイルの選択 > 展開を実行する.展開後は最初にダウンロードしたZIPファイルを削除
    • シェープファイルの読み込み(read_sf),Shizuoka_mapと名付ける.
    • 必要に応じて各種ファイルを読み込む際にオプション(encoding="cp932"fileEncoding="CP932"など)で日本語の文字化けを防ぐ.
    • 文字化けが解消できない場合はRのエンコーディング問題を参照.

行政区域の可視化

Shizuoka_map<-
  read_sf("N03-20210101_22_GML/N03-21_22_210101.shp") 

#行政区域の可視化
ggplot()+
  geom_sf(data=Shizuoka_map, fill="white") 

参考

静岡県の地理に詳しくない人のために次の図に行政区域の地名を示す.なお,静岡県では政令指定都市(静岡市,浜松市)と5つの群(賀茂群,周智郡,駿東郡,田方郡,榛原郡)が存在.ここでは参考に静岡市(青)と浜松市(緑)を示しておく.

1kmメッシュ別人口の可視化

1kmメッシュ別将来推計人口(H30国政局推計)のファイルには2015年の人口とそれ以降の将来推計人口がメッシュ毎に計算されている.ここでは2015年の人口(PTN_2015)を利用.

  • aes(fill=PTN_2015)でメッシュを2015年の人口で埋めるように指示.
  • scale_fill_distiller()でメッシュに埋める(aesfillに揃える)数値の色を黄緑青(YlGnBu)に指示.
    • scale_fill_distiller()関数では,色の順番の初期設定がdirection=-1のため,direction=1を用いて色の順番を逆にしている.このオプションは必要に応じて対処すればよい.
Shizuoka_mesh<-
  read_sf("1km_mesh_suikei_2018_shape_22/1km_mesh_2018_22.shp") 

#1kmメッシュ別人口の可視化
ggplot()+
  geom_sf(data=Shizuoka_mesh, 
          aes(fill=PTN_2015))+
  scale_fill_distiller(palette="YlGnBu", direction=1)

3 完成図

2枚の地図を重ねる.図のタイトル,凡例をつけて,完成図を示す.

  • labs()の凡例(aesfillに揃える)を人口にするように指示.
    • labs()い出典表記(caption).
  • ggplot()はデフォルトのままの場合,背面は灰色,線は白で描写(theme_grey()).theme_bw()(black & white)を利用すること背面を白,線を黒に変更可能.
ggplot()+
  geom_sf(data=Shizuoka_map, fill="white")+ 
  geom_sf(data=Shizuoka_mesh, 
          aes(fill=PTN_2015))+
  scale_fill_distiller(palette="YlGnBu", direction=1)+
  geom_sf(data=Shizuoka_map, fill="NA")+ 
  labs(fill="人口", 
       caption="出典:国土交通省国土数値情報")+
  ggtitle("静岡県1kmメッシュ別人口(2015)")+
  theme_bw()

注意

  • 上記の図では,最背面の静岡県の行政区域の地図(背景白色,線黒)の上に9段階に色分けされたメッシュ統計地図を重ね,さらに静岡県の行政区域の地図(ただし背景無色,線黒)を再度上に重ねている(3枚の地図を使用).
  • 行政区域の地図(背景無色,線黒)を最前面にしない場合,メッシュ統計地図が最前面になり,背面にある行政区域(背景白色,線黒)のポリゴンを消してしまう.これを避ける方法の一つとして,メッシュの色を透過する方法がある.
  • しかし,この透過を利用すると,メッシュの色自体が薄くなり,グラディエーション効果を弱めてしまう.
  • これを避けるために,メッシュを透過せず,もう一度,行政区域の地図を上に重ねている.ただし,2枚目のメッシュ統計が見えるように背景を無色(fill="NA")にしている.

4 応用例

4.1 予想人口変化率の可視化

1kmメッシュ別将来推計人口(H30国政局推計)には将来の人口予想の推計も記されている.そこで,予想人口変化率を計算し,可視化.

  • 2015年ー2035年(20年後)の予想人口変化率を計算する.
    • 2035年の予想人口はPTN_2035
    • 変化率(ここではPop_rateと表現する)は(PTN_2035-PTN_2015)/PTN_2015)*100
    • mutate():データの列の変更や追加を可能にする.データ名を記入し(ここではShizuoka_mesh),次に列の変更や追加を指示する.
    • Pop_rateを追加したデータをShizuoka_mesh2と名付ける.
Shizuoka_mesh %>% 
  mutate(Pop_rate=((PTN_2035-PTN_2015)/PTN_2015)*100) ->
  Shizuoka_mesh2 
  • scale_fill_gradient2()は中間値(初期値は0)より大きな値と小さな値で色を塗り分けることを可能にする関数.
    • ここでは,変化率0を白,負を青,正を赤に設定.
ggplot()+
  geom_sf(data=Shizuoka_map, fill="white")+ 
  geom_sf(data=Shizuoka_mesh2, 
          aes(fill=Pop_rate))+ 
  scale_fill_gradient2(low="blue", 
                       mid="white", 
                       high="red")+
  geom_sf(data=Shizuoka_map, fill="NA")+ 
  labs(fill="%",
       caption="出典:国土交通省国土数値情報")+
  ggtitle("2015年ー2035年の予想人口変化率")+
  theme_bw()

Rによる地理空間データの可視化