演習の概要

  • 空間データの基本構造を理解する
  • 空間レイヤーの操作(単一レイヤー)

注意事項

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

Rの利用方法

  • フリー統計ソフトRを利用するには、Rをダウンロードする、Webブラウザ上で利用する、などの方法があります。
  • RはCRANからダウンロードし、インストール可能です。
  • RStudioには、より操作が容易なGUIが用意されています。
  • RStudio Cloudを使うと、RをダウンロードすることなくWebブラウザ上でRを操作できます。
  • RStudioは日本語が使えない場合があります。起動時にLC_CTYPE failedなどのエラーメッセージが出る場合は、以下の一行を実行しRStudioを再起動すると、日本語が使えるようになることがあります。
system("defaults write org.R-project.R force.LANG en_US.UTF-8")

データ分析の準備

データのダウンロード

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

この演習では~/直下に作業用のgisdataフォルダを作成し、そこに演習用データがある想定としています。

この場合、setwd("~/gisdata")とすることで、ディレクトリを指定できます。

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

install.packages()でパッケージをインストールし、library()でパッケージを呼び出すことができます。

この演習全体を通じて、以下のようなパッケージを用います。データ分析を行うにあたっては、適宜パッケージのインストールと読み込みを行ってください。

install.packages("spdep")
install.packages("sp")
install.packages("maptools")
install.packages("rgdal")
install.packages("sf")
install.packages("classInt")
install.packages("RColorBrewer")
install.packages("readr")
install.packages("magrittr")
install.packages("dplyr")
install.packages("kokudosuuchi")
install.packages("estatapi")
install.packages("purrr")
install.packages("needs")
install.packages("DT")
install.packages("gpclib")
install.packages("geosphere")
install.packages("deldir")
# install.packages("devtools")
devtools::install_github("tidyverse/ggplot2")
library(spdep)
library(sp)
library(maptools)
library(rgdal)
library(sf)
library(classInt)
library(RColorBrewer)
library(readr)
library(magrittr)
library(dplyr)
library(kokudosuuchi)
library(estatapi)
library(purrr)
library(needs)
library(DT)
library(gpclib)
library(geosphere)
library(deldir)
# library(devtools)
library(ggplot2)

以下の方法でパイプ %>% の優先順位を高めることができます。パイプの使い方は授業内などで説明します。

needs::prioritize(magrittr)

空間データの基本構造

空間オブジェクトを作成する

ランダムなポイントデータを作成してみよう

px <- runif(30,0,10)
py <- runif(30,0,10)
pz <- as.data.frame(px+py)
colnames(pz) <- c("pz")
pnt_xy <- cbind(px, py)
pnt_sp <- SpatialPoints(data.frame(px, py))
pnt_spdf <- SpatialPointsDataFrame(pnt_sp, pz)
plot(pnt_spdf, cex=2, pch=19, lwd=3)

ラインデータを作成する

line1 <- cbind(runif(4,0,10), runif(4,0,10))
line2 <- cbind(runif(4,0,10), runif(4,0,10))
line3 <- cbind(runif(4,0,10), runif(4,0,10))
line1_ln <- Lines(list(Line(line1)), "line1")
line2_ln <- Lines(list(Line(line2)), "line2")
line3_ln <- Lines(list(Line(line3)), "line3")
line_sp <- SpatialLines(list(line1_ln, line2_ln, line3_ln))
line_spdf <- SpatialLinesDataFrame(line_sp, data.frame(c(1:3), 
row.names=c("line1", "line2", "line3")))
plot(line_spdf, lty=1, lwd=3)

ポリゴンデータを作成する

poly1 <- cbind(c(0, 5, 5, 0, 0), c(0, 0, 5, 5, 0))
poly2 <- cbind(c(5, 10, 10, 5, 5), c(0, 0, 5, 5, 0))
poly3 <- cbind(c(0, 5, 5, 0, 0), c(5, 5, 10, 10, 5))
poly4 <- cbind(c(5, 10, 10, 5, 5), c(5, 5, 10, 10, 5))
poly1_pl <- Polygons(list(Polygon(poly1)), "poly1")
poly2_pl <- Polygons(list(Polygon(poly2)), "poly2")
poly3_pl <- Polygons(list(Polygon(poly3)), "poly3")
poly4_pl <- Polygons(list(Polygon(poly4)), "poly4")
poly_sp <- SpatialPolygons(list(poly1_pl, poly2_pl, poly3_pl, poly4_pl))
poly_spdf <- SpatialPolygonsDataFrame(poly_sp, data.frame(c(1:4), 
row.names=c("poly1", "poly2", "poly3", "poly4")))
plot(poly_spdf, col="grey")