演習の概要

注意事項

  • 慶應義塾大学SFCで開講している「環境ガバナンスのデータサイエンス」「空間モデリング特論」の授業履修者向けの演習用ページです。
  • 必ずしも全てのバージョンのRやOSで動作確認を行っていません。この演習用ページを作成している段階では、R3.5.3を使っています。
  • Rの更新などにより、Rコードなどを予告無しに変更する場合があります。

データ分析の準備

データのダウンロード

演習で用いるデータはここからダウンロードしてください。

ここでは./直下にgisdataフォルダを作成し、setwd("gisdata")とディレクトリを指定している

パッケージのインストール

install.packages()でパッケージをインストールし、library()でパッケージを呼び出します。ここでは以下のパッケージを用います

install.packages(c("maptools","classInt","RColorBrewer", "readr",
                   "magrittr","dplyr","kokudosuuchi", "estatapi",
                   "sf","purrr", "needs", "DT"))
devtools::install_github("tidyverse/ggplot2")
library(maptools)
library(classInt)
library(RColorBrewer)
library(readr)
library(magrittr)
library(dplyr)
library(kokudosuuchi)
library(estatapi)
library(sf)
library(purrr)
library(needs)
library(ggplot2)
library(DT)

needsパッケージのmagrittr() はパイプ %>% の優先順位を高めるために用いられます

needs::prioritize(magrittr) 

GISメッシュデータのダウンロードと可視化

国土数値情報の活用

まず最初に、国土交通省の国土数値情報のウェブサイトから1kmメッシュ人口データをダウンロードします。さらに、神奈川県の2020年の将来人口推計データを可視化します。

国土数値情報ダウンロードサービスは以下のURLからアクセスできます。 http://nlftp.mlit.go.jp/ksj/index.html

kokudosuuchiパッケージのgetKSJSummary()を用いると、APIを使って国土数値情報の要約情報を得ることができます。

kokudosuuchi::getKSJSummary() %>% 
  filter(title=="1kmメッシュ別将来推計人口(H29国政局推計)(shape形式版)")
## # A tibble: 1 x 5
##   identifier title                                 field1  field2 areaType
##   <chr>      <chr>                                 <chr>   <chr>  <chr>   
## 1 m1000      1kmメッシュ別将来推計人口(H29国政局推計)(shape形式版)… 各種統計… " "    3

getKSJURL()関数で国土数値情報のURLを取得したあと、curlパッケージのcurl_download()関数で国土数値情報をダウンロードできます。

url <- kokudosuuchi::getKSJURL("m1000", prefCode = 14) %>%
  dplyr::select(zipFileUrl) %>% 
  dplyr::pull(1)
tf <- tempfile(fileext = ".zip")
curl::curl_download(url, tf)
unzip(tf, exdir = getwd(), junkpaths = TRUE)
unlink(tf)
rm(tf)

sfパッケージのst_read()関数でArcGISのシェープファイルを読み込みます。

d <- sf::st_read('Mesh3_POP_14.shp')

ggplot2を使って、神奈川県の2020年将来人口推計データを以下のようにして可視化します。

ggplot2::ggplot(data = d, aes(fill=POP2020)) + 
  geom_sf() + 
  scale_fill_distiller(palette="RdYlGn") + 
  theme_bw() +
  labs(title = "Population of Kanagawa in 2020 (est.)")