目的

人口集中地区データによる郊外化の可視化では1975年と2015年の人口集中地区(ポリゴン)の地図を重ねて,地方都市の郊外化を可視化.

ここでは,10年ごと(1975年,85年,95年,2005年,15年)の地図を並べて,人口集中地区の拡大の様子を可視化.その際に,アニメーション効果を取り入れてみる.

ライブラリ:sftidyversegganimate

library(sf)
library(tidyverse)

#ggplotのアニメ化
library(gganimate)

下記,アニメ化の際にエラー(The transformr package is required ).これに対応するため,transformrをインストールし,ライブラリ呼出.

#アニメーションエラー対策
library(transformr)
  • 好みでMetBrewerに納められているHokusai2のカラーパレット利用.
#好み,カラーパレット
library(MetBrewer)

富山市の人口集中地区

行政区域のダウンロード

  • 国土数値情報ダウンロードサービス > 行政区域(ポリゴン) > 富山県 > 令和3年 
    • ダウンロードしたZIPファイルは同じフォルダ(ディレクトリ)に納め,ZIPファイルを選択 > 右クリック > すべて展開 > 展開先の選択とファイルの選択 > 展開を実行する.展開後は最初にダウンロードしたZIPファイルを削除.
    • read_sf:データ読込.Toyama_mapと名付ける.
    • Toyama_mapから富山市(行政区域コードN03_00716201)を切り抜き,新しいデータをToyama_shi_mapとする.
Toyama_map <-
  read_sf("N03-20210101_16_GML/N03-20210101_16_GML/N03-21_16_210101.shp")

#富山市の選抜
Toyama_map %>%
  filter(N03_007=="16201") ->
  Toyama_shi_map

人口集中地区

  • 国土数値情報ダウンロードサービス > DID人口集中地区(ポリゴン) > 富山県 > 世界測地系 昭和50年から平成27年(10年毎)
    • ダウンロードしたZIPファイルは同じフォルダ(ディレクトリ)に納め,ZIPファイルを選択 > 右クリック > すべて展開 > 展開先の選択とファイルの選択 > 展開を実行する.展開後は最初にダウンロードしたZIPファイルを削除..
    • read_sf:データ読込.Toyama_DID##は西暦の下2桁)と名付ける.
    • crs="WGS84"crs(Coordinate ReferenceSystem,座標参照系)を1984年に定められた世界測地系(World Geodetic System)に投影を意味.
    • Toyama_DID#から富山市(行政区域コードA16_00216201)を切り抜き,新しいデータをToyama_shi_DID#とする.
      • 注意:1975年,1985年は富山県婦負郡八尾町(16361)も含めて富山市の人口集中地区データを作成.
      • 注意:2015年から調査年(国勢調査が実施された年度)が示されるA16_011列が時間型(TM_Instant)に表現.過去に揃えるため2015に変換.
#1975年(昭和50年)
Toyama_DID75 <-
  read_sf("A16-75_16_GML/A16-75_16_DID.shp",
          crs="WGS84") 
#富山市
Toyama_DID75 %>%
  filter(A16_002=="16201" | A16_002=="16361") ->
  Toyama_shi_DID75

#1985年(昭和60年)
Toyama_DID85 <-
  read_sf("A16-85_16_GML/A16-85_16_DID.shp", 
          crs="WGS84") 
#富山市
Toyama_DID85 %>%
  filter(A16_002=="16201" | A16_002=="16361") ->
  Toyama_shi_DID85

#1995年(平成7年)
Toyama_DID95 <-
  read_sf("A16-95_16_GML/A16-95_16_DID.shp", 
          crs="WGS84") 
#富山市
Toyama_DID95 %>%
  filter(A16_002=="16201") ->
  Toyama_shi_DID95

#2005年(平成17年)
Toyama_DID05 <-
  read_sf("A16-05_16_GML/A16-05_16_DID.shp", 
          crs="WGS84") 
#富山市
Toyama_DID05 %>%
  filter(A16_002=="16201") ->
  Toyama_shi_DID05

#2015年(平成27年) 
Toyama_DID15 <-
  read_sf("A16-15_16_GML/A16-15_16_GML/A16-15_16_DID.shp", 
          crs="WGS84")
#富山市
Toyama_DID15 %>%
  filter(A16_002=="16201") ->
  Toyama_shi_DID15

#調査年に修正
Toyama_shi_DID15 %>%
  mutate(A16_011=2015)->
  Toyama_shi_DID15

鉄道

  • 国土数値情報ダウンロードサービス > 鉄道(ライン) > 全国 > 世界測地系 > 令和2年 

    • 鉄道データは全国のみ.
    • ダウンロードしたZIPファイルは同じディレクトリに納め,ZIPファイルを選択 > 右クリック > 解凍 > ここで解凍 を実行する.解凍後は最初にダウンロードしたZIPファイルを削除.
    • railway20と名付ける.
railway20 <-
  read_sf("N02-20_GML/N02-20_GML/N02-20_RailroadSection.shp")

人口集中地区の変遷

  • ここでは,5年分の地図があるため,地図を重ねず,年ごとに地図を作成し,それらを並べる(facet_wrap()).
    • facet_wrap()を利用するため,データ(ここではシェープファイル)を縦方向に合併(rbind)すし,DIDと名付ける.各データの列数が揃っていることに注意.
    • A16_011列に調査年(国勢調査が実施された年度)が示されている.これをyearとし,整数型(as.integer())にする.
    • facet_wrap(year)を指示することでyearごとの地図を並列.
    • scale_fill_met_d()ggplot2MetBrewerのカラーパレットを利用する関数.fillは地物の内部の色付け.dは離散スケール.連続スケールにはcdに変更.
      • scale_color_met_d()colorは地物の枠の色付け. 
#データ結合
DID <-
  rbind(Toyama_shi_DID75, Toyama_shi_DID85,
        Toyama_shi_DID95, Toyama_shi_DID05,
        Toyama_shi_DID15)

#列名A16_011(調査年)をyearと名付ける
DID %>%
  mutate(year=A16_011) ->
  DID

#可視化
ggplot()+
  geom_sf(data=Toyama_map)+
  geom_sf(data=Toyama_shi_map, linewidth=0.8, 
          fill="white")+
   geom_sf(data=DID, aes(fill=year,
                        color=year))+
  scale_fill_met_d("Hokusai2")+
  scale_color_met_d("Hokusai2")+
  geom_sf(data=railway20, linewidth=0.2, linetype=2)+
  coord_sf(datum=NA,
           xlim= c(136.96, 137.4), ylim=c(36.5, 36.78))+
  labs(title="富山市人口集中地区の変遷", 
       caption="出典:国土交通省国土数値情報")+
  facet_wrap(~year)+
  theme_bw()+
  theme(legend.position="none")

アニメーション

年ごとに作成された地図(フレーム)を,アニメーション効果を用いて,可視化.

  • 上で作成した地図のfacet_wrap(~year)を削除.こうすることで,1975年の人口集中地区が一番下に配置され,順番に地図(フレーム=コマ)が重なる.
  • タイトルの下にサブタイトル(subtitle)を作成.{current_frame}は現在の地図(フレーム)の西暦が示される.
    • 地図名をgとする.
g <- 
  ggplot()+
  geom_sf(data=Toyama_map)+
  geom_sf(data=Toyama_shi_map, linewidth=0.8, fill="white")+
  geom_sf(data=DID, aes(fill=year,
                        color=year))+
  scale_fill_met_d("Hokusai2")+
  scale_color_met_d("Hokusai2")+
  geom_sf(data=railway20, linewidth=0.2, linetype=2)+
  coord_sf(datum=NA,
           xlim= c(136.96, 137.4), ylim=c(36.5, 36.78))+
  labs(title="富山市人口集中地区の変遷", 
       subtitle="年:{current_frame}",
       caption="出典:国土交通省国土数値情報")+
  theme_bw()+
  theme(legend.position="none")
  • transition_manual(year):年ごとに作成された地図(フレーム)を連続して変化させるように指示.animeと名付ける.
  • animate():作成したanimeをアニメ化.
anime <-
  g+transition_manual(year) 

anime %>% 
  animate()  

参考(人口集中地区の人口密度の時系列変化)

↑で利用した人口集中地区のシェープファイルには人口集中地区の人口(人)や面積(㎢)が示されている.この数値から人口密度(人/㎢)が計算できる.

  • ここでは,折れ線グラフを用いて人口密度の時系列変化を可視化.
    • ただし,各年重複する地域コードがあるため,事前に削除して(distinct()),新しいデータフレーム(DID2と名付ける)を作成.
#重複するDIDid(地域コード)削除
#1975年
Toyama_shi_DID75 %>% 
  distinct(A16_001,.keep_all=TRUE)->
  Toyama_shi_DID75
#1985年
Toyama_shi_DID85 %>% 
  distinct(A16_001,.keep_all=TRUE)->
  Toyama_shi_DID85
#1995年
Toyama_shi_DID95 %>% 
  distinct(A16_001,.keep_all=TRUE)->
  Toyama_shi_DID95
#2005年
Toyama_shi_DID05 %>% 
  distinct(A16_001,.keep_all=TRUE)->
  Toyama_shi_DID05
#2015年
Toyama_shi_DID15 %>% 
  distinct(A16_001,.keep_all=TRUE)->
  Toyama_shi_DID15

#データ結合
DID2 <-
  rbind(Toyama_shi_DID75, Toyama_shi_DID85,
        Toyama_shi_DID95, Toyama_shi_DID05,
        Toyama_shi_DID15)
  • A16_011(調査年)をyearと名付ける.
  • A16_005(人口,単位人)をpopと名付け,整数型に.
  • A16_006(面積,単位㎢)をareaと名付け,(小数で表現されるため)実数型に.
    • 人口集中地区の人口密度を求めるため,総人口と総面積を計算.
    • 人口密度をpop_denと名付ける.
    • pop_denが格納されたファイルをdensityとする.
#yearの作成,整数型
DID2 %>%
  mutate(year=A16_011,
         pop=as.integer(A16_005),
         area=as.numeric(A16_006)) ->
  DID2

DID2 %>%
    group_by(year) %>%
    summarise(pop=sum(pop), 
              area=sum(area)) %>%
  mutate(pop_den=pop/area) ->
  density

#densityの中身
density
year pop area geometry pop_den
1975 166572 32.00 MULTIPOLYGON (((137.2023 36… 5205.375
1985 197258 43.40 MULTIPOLYGON (((137.1852 36… 4545.115
1995 216764 51.30 MULTIPOLYGON (((137.303 36…. 4225.419
2005 218679 54.27 MULTIPOLYGON (((137.1645 36… 4029.464
2015 235868 57.89 MULTIPOLYGON (((137.3036 36… 4074.417

折れ線グラフの完成図

  • group=1:すべてのデータポイント(1975年,85年,95年,2005年,15年の値)を同じグループとして扱うことを意味.これにより,データポイントが同じ線で結ばれる.
#人口密度時系列図
ggplot()+
  geom_line(data=density, 
            aes(x=year, y=pop_den, group=1), 
            color="#1e4294", linewidth=1.5)+
  geom_point(data=density, aes(x=year, y=pop_den),
             color="#1e4294", fill="#1e4294", size=3)+
  labs(x="年", y="人口密度(人/㎢)",
      caption="出典:国土交通省国土数値情報")+
  ggtitle("富山市人口集中地区の人口密度の変化")+
  theme_bw()

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