この記事では、Rを使ったポイントマップの作成方法について説明します。
記事の概要です。
- 茨城県のシェープファイルからつくば市を取り出します。
- つくば市の指定緊急避難場所のCSVデータを読み込みます。
- つくば市の地図を描画し、その上に指定緊急避難場所をプロットします。
つくば市の地図に指定緊急避難場所をプロットする部分のソースです。
ggplot(shp) + geom_sf() + geom_point(data = csv, aes(x = fX, y = fY))
geom_sf()までの部分でつくば市の地図が描画され、geom_pointにより指定緊急避難場所がプロットされます。
こちらはソースコード全体です。
## データ読み込み: 茨城県のシェープファイル library(sf) shp <- st_read("./data/N03-20150101_08_GML", options = "ENCODING=SHIFT-JIS") ## つくば市のみにする shp <- shp %>% filter(N03_004 == "つくば市") library(ggplot2) ggplot(shp) + geom_sf() # 確認のため描画 ## データ読み込み: つくば市の指定緊急避難場所 csv <- read.csv("./data/指定緊急避難場所_つくば市(緯度経度付き).csv") head(csv) # 確認 ## 描画 ggplot(shp) + geom_sf() + geom_point(data = csv, aes(x = fX, y = fY)) ## 描画: ラベル付与 ggplot(shp) + geom_sf() + geom_point(data = csv, aes(x = fX, y = fY)) + geom_label(data = csv, aes(x = fX, y = fY, label = col0), vjust = 1, # ラベル上端のY座標をfYにする(0: 下端のY座標をfYにする) nudge_y = -0.003) # 下方向に少し(-0.003度)ずらす

「地物としてのCSV読み込み」は、単純にCSVを読み込んでいるだけです!
QGISの記事と合わせるため、このような表現をしました。
この記事は、QGISのこちらの記事と対応しています。
この記事で使用したRとパッケージのバージョンを記載しておきます。
バージョンが異なると、動作や表示も若干異なる場合があるからです。
- R 3.6.1
- sf 0.7-6
- dplyr 0.8.3
- ggplot 3.2.0
つくば市の地図を作成
この記事では、つくば市の地図に指定緊急避難場所をプロットします。
指定緊急避難場所については、こちらの記事で簡単に説明しています。
まずは、つくば市の地図を作成しましょう。
しかし、適当なつくば市のシェープファイルが見つかりませんでした。
そのため、これまで使ってきた茨城県のシェープファイルから、つくば市の部分を取り出すことにします。
もし、茨城県のシェープファイルが無い場合は、こちらを参考にしてダウンロードして下さい。
では、茨城県のシェープファイルを読み込みます。
## データ読み込み: 茨城県のシェープファイル library(sf) shp <- st_read("./data/N03-20150101_08_GML", options = "ENCODING=SHIFT-JIS")
つくば市の部分を取り出します。
## つくば市のみにする shp <- shp %>% filter(N03_004 == "つくば市")
これは、表形式のデータから特定行を抽出する方法と同じ考え方です。
市町村のポリゴンデータが、shpの中に行単位で入っている状態をイメージして下さい。
市町村名が格納されているカラム(N03_004)を使って、そこでの値が”つくば市”となる行(ボリゴンデータ)を抽出しています。
確認のため、描画してみましょう。
library(ggplot2) ggplot(shp) + geom_sf() # 確認のため描画

指定緊急避難場所の読み込み
指定緊急避難場所を読み込みます。
こちらからCSVファイル(指定緊急避難場所つくば市(緯度経度付き).csv)をダウンロードして下さい。
ダウンロードしたCSVファイルを読み込みます。
## データ読み込み: つくば市の指定緊急避難場所 csv <- read.csv("./data/指定緊急避難場所_つくば市(緯度経度付き).csv")
確認します。
head(csv) # 確認
col0 col1 LocName fX 1 さくら運動公園 つくば市流星台63 茨城県/つくば市 140.1279 2 茎崎運動公園 つくば市下岩崎2160-10 茨城県/つくば市/下岩崎 140.1057 3 大池公園 つくば市北条1477-1 茨城県/つくば市/北条 140.0955 4 川口公園 つくば市上郷3190 茨城県/つくば市/上郷 140.0155 5 研究学園駅前公園 つくば市学園南2-1 茨城県/つくば市/学園南/二丁目 140.0822 6 筑波北部公園 つくば市北原1 茨城県/つくば市/北原 140.0495 fY iConf iLvl 1 36.09237 3 3 2 35.97381 5 5 3 36.17425 5 5 4 36.09675 5 5 5 36.07891 5 6 6 36.15321 5 5
col0が指定緊急避難場所の名称で、fXが経度、fYが緯度を表しています。
ちなみに、このデータは、こちらとこちらの記事で作成したものです。
ご参考まで。
つくば市の地図に指定緊急避難場所をプロット
では、つくば市の地図に指定緊急避難場所をプロットしましょう。
## 描画 ggplot(shp) + geom_sf() + geom_point(data = csv, aes(x = fX, y = fY))

シンプルですよね。
ggplot(shp) + geom_sf()
で、つくば市の地図を描画し、その上に、指定緊急避難場所のプロット
geom_point(data = csv, aes(x = fX, y = fY))
を重ねる、そんなイメージです。
ggplot2はこのようにレイヤーを重ねることで、グラフを描画していきます。
あと、点だけでは、どこがどの指定緊急避難場所か分からないので、ラベルを表示させましょう。
## 描画: ラベル付与 ggplot(shp) + geom_sf() + geom_point(data = csv, aes(x = fX, y = fY)) + geom_label(data = csv, aes(x = fX, y = fY, label = col0), vjust = 1, # ラベル上端のY座標をfYにする(0: 下端のY座標をfYにする) nudge_y = -0.003) # 下方向に少し(-0.003度)ずらす
geom_labelによって、ラベルのレイヤーが追加されました。
以下の地図が表示されれば、完了です。

おわりに
お疲れさまでした。
QGISとの共通点は、レイヤーを重ねて描画していく点ですね。
ただ、QGISは緯度経度を意味するカラムの指定が必要な分、Rの方がちょっと簡単かも知れませんね。
では。
—
YouTube: ミサキさん
問い合わせ先
Mail: caprico.aries@gmail.com
Twitter: https://twitter.com/caprico_aries(無言フォローもお気軽に)
コメント
[…] その結果、download属性がないとファイル内容が表示されることが分かりました。しかし、例えばこちらでCSVファイルのリンクを作った際は、download属性が無くてもCSVファイルがダウンロードされました。 […]
[…] 地物としてのCSV読み込み&描画 | R, GIS […]
[…] 地物としてのCSV読み込み&描画 | R, GIS […]