はじめに
今まではGISはQGISを使っていました。ただ単純に地図を表示することや、分析であれば十分に使えるものでしたが、表現の広がりやデータの前処理、分析、出力を手順化するためにRを使いこなせるようにすることが目的です。
今回は国土数値情報からJPGIS2.1をダウンロードし、地図に表示するところを整理します。
コード全体像
JPGIS2map.R
library(sf)
# ShiftJISのため、ENCODING=CP932をつける
kanagawa <- sf::read_sf("<file path>/kanagawa_N03-20220101_14_GML/N03-22_14_220101.shp",
options= c("ENCODING=CP932"),
quiet = FALSE)
# データフレームを出力
kanagawa
# 地図の表示
kanagawa %>%
dplyr::filter(N03_003 == "横浜市") %>%
ggplot2::ggplot() +
ggplot2::geom_sf()
完成版
STEP1 必要なパッケージ
事前にRに以下のパッケージをインストールする。
sfパッケージは空間データを読み込みや書き込み、座標参照系の変換および変換を行うためのパッケージです。
install.packages("sf")
STEP2 JPGIS2.1のダウンロード
ファイルのダウンロード元
国土数値情報ダウンロードサービス
「行政区域」のリンク先から任意の都道府県と年度を選択し、データをダウンロードする。
各コードの内容
まず、sfパッケージをロードする。
library(sf)
次に、ファイルやデータベースのベクトルデータセットを sf オブジェクトとして読み込む。
ファイルはshpファイルのみ読み込むが、ファイル単体ではなく、フォルダごと読み込む点に注意する。
kanagawa <- sf::read_sf("<file path>/kanagawa_N03-20220101_14_GML/N03-22_14_220101.shp",
options= c("ENCODING=CP932"),
quiet = FALSE)
読み込んだデータフレーム
kanagwa
で出力する。
【出力内容】
Simple feature collection with 1286 features and 5 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 138.9158 ymin: 35.12849 xmax: 139.8358 ymax: 35.6729
Geodetic CRS: JGD2011
# A tibble: 1,286 × 6
N03_001 N03_002 N03_003 N03_004 N03_007 geometry
<chr> <chr> <chr> <chr> <chr> <MULTIPOLYGON [°]>
1 神奈川県 NA NA NA NA (((139.6316 35.1285, 139.6316 35.12849, 139.6316 …
2 神奈川県 NA 横浜市 鶴見区 14101 (((139.676 35.45629, 139.6759 35.45598, 139.6758 …
3 神奈川県 NA 横浜市 鶴見区 14101 (((139.677 35.45814, 139.6768 35.45763, 139.6767 …
4 神奈川県 NA 横浜市 鶴見区 14101 (((139.6947 35.46528, 139.6948 35.46432, 139.6949…
5 神奈川県 NA 横浜市 鶴見区 14101 (((139.7071 35.47232, 139.7071 35.47226, 139.7071…
6 神奈川県 NA 横浜市 鶴見区 14101 (((139.7111 35.4856, 139.7111 35.48551, 139.711 3…
7 神奈川県 NA 横浜市 鶴見区 14101 (((139.7146 35.48601, 139.7148 35.48568, 139.715 …
8 神奈川県 NA 横浜市 鶴見区 14101 (((139.6775 35.53974, 139.6776 35.5397, 139.6779 …
9 神奈川県 NA 横浜市 神奈川区 14102 (((139.6583 35.46009, 139.6582 35.46009, 139.6582…
10 神奈川県 NA 横浜市 神奈川区 14102 (((139.656 35.46359, 139.656 35.46356, 139.6559 3…
# … with 1,276 more rows
最後に地図を表示する。
# 地図の表示
kanagawa %>%
dplyr::filter(N03_003 == "横浜市") %>%
ggplot2::ggplot() +
ggplot2::geom_sf()
dplyr::filter
の部分でフィルターをかけることができます。
ここをN03_001 == "神奈川県"
に変更すると以下のマップができます。