> data_dir <- "data"
> data_file <- "ishikawa-central-evacuation-space.csv"
> evac_data <- readr::read_csv(file.path(data_dir, data_file))2025-11-15
氏名: 伊東宏樹
個人事業主(伊東生態統計研究室)
1991〜2024年、森林総合研究所勤務(森林生態学)
出版物: 『BUGSで学ぶ階層モデリング入門』『生態学のための階層モデリング』(以上共訳)など
Rをつかって
「指定緊急避難場所」の
位置を
地図上に表示する
指定緊急避難場所: 災害の危険から命を守るために緊急的に避難する場所
(内閣府: 「指定緊急避難場所」と「指定避難所」の違いについて)
金沢市とその周辺の指定緊急避難場所のデータ
石川中央都市圏 指定緊急避難場所一覧のCSVファイル
ishikawa-central-evacuation-space.csv
金沢市オープンデータポータルからダウンロード可能
readrパッケージのread_csv関数を使ってCSVファイルを読み込む
> evac_data
# A tibble: 643 × 40
`_id` 全国地方公共団体コード ID 名称 名称_カナ 名称_英字
<dbl> <dbl> <chr> <chr> <chr> <chr>
1 1 172014 AA0000001280 三谷公民館(指定避難場所)…… ミタニコウミンカ… <NA>
2 2 172014 AA0000001281 三谷小学校(指定避難場所)…… ミタニショウガッ… <NA>
3 3 172014 AA0000001282 薬師谷公民館(指定避難場所)… ヤクシダニコウミ… <NA>
4 4 172014 AA0000001283 不動寺小学校(指定避難場所)… フドウジショウガ… <NA>
5 5 172014 AA0000001284 柳瀬川つつみ公園(指定避難場… ヤナセガワツツミ… <NA>
6 6 172014 AA0000001285 湖陽児童公園(指定避難場所)… コヨウジドウコウ… <NA>
7 7 172014 AA0000001286 湖陽緑道公園(指定避難場所)… コヨウリョクドウ… <NA>
8 8 172014 AA0000001287 北部公園(指定避難場所)…… ホクブコウエン(… <NA>
9 9 172014 AA0000001288 金沢競馬場(指定避難場所)…… カナザワケイバジ… <NA>
10 10 172014 AA0000001289 金沢向陽高等学校(指定避難場… カナザワコウヨウ… <NA>
# ℹ 633 more rows
# ℹ 34 more variables: 所在地_全国地方公共団体コード <dbl>, 町字ID <chr>,
# 所在地_連結表記 <chr>, 所在地_都道府県 <chr>, 所在地_市区町村 <chr>,
# 所在地_町字 <chr>, 所在地_番地以下 <chr>, `建物名等(方書)` <chr>,
# 緯度 <dbl>, 経度 <dbl>, 標高 <chr>, 電話番号 <chr>, 内線番号 <lgl>,
# 連絡先メールアドレス <chr>, 連絡先FormURL <lgl>,
# `連絡先備考(その他、SNSなど)` <lgl>, 郵便番号 <chr>, …> colnames(evac_data)
[1] "_id" "全国地方公共団体コード"
[3] "ID" "名称"
[5] "名称_カナ" "名称_英字"
[7] "所在地_全国地方公共団体コード" "町字ID"
[9] "所在地_連結表記" "所在地_都道府県"
[11] "所在地_市区町村" "所在地_町字"
[13] "所在地_番地以下" "建物名等(方書)"
[15] "緯度" "経度"
[17] "標高" "電話番号"
[19] "内線番号" "連絡先メールアドレス"
[21] "連絡先FormURL" "連絡先備考(その他、SNSなど)"
[23] "郵便番号" "市区町村コード"
[25] "地方公共団体名" "災害種別_洪水"
[27] "災害種別_崖崩れ、土石流及び地滑り" "災害種別_高潮"
[29] "災害種別_地震" "災害種別_津波"
[31] "災害種別_大規模な火事" "災害種別_内水氾濫"
[33] "災害種別_火山現象" "指定避難所との重複"
[35] "想定収容人数" "対象となる町会・自治会"
[37] "URL" "画像"
[39] "画像_ライセンス" "備考" > evac_data |>
+ dplyr::select(`名称`, `経度`, `緯度`)
# A tibble: 643 × 3
名称 経度 緯度
<chr> <dbl> <dbl>
1 三谷公民館(指定避難場所) 137. 36.6
2 三谷小学校(指定避難場所) 137. 36.6
3 薬師谷公民館(指定避難場所) 137. 36.6
4 不動寺小学校(指定避難場所) 137. 36.6
5 柳瀬川つつみ公園(指定避難場所) 137. 36.6
6 湖陽児童公園(指定避難場所) 137. 36.6
7 湖陽緑道公園(指定避難場所) 137. 36.6
8 北部公園(指定避難場所) 137. 36.6
9 金沢競馬場(指定避難場所) 137. 36.6
10 金沢向陽高等学校(指定避難場所) 137. 36.6
# ℹ 633 more rows方法はいろいろありますが
今回はLeafletを使用して地図表示
インタラクティブな地図を作成できる Javascriptのライブラリ
Rからはleafletパッケージを使用
addTiles関数で、地図タイルを追加(デフォルトではOpenStreetMap)|>または%>%)で、レイヤーを重ねていくイメージsetView関数で、経度、緯度、ズームレベルを指定
addMarkers関数でマーカーを追加
data引数に、指定緊急避難場所のデータevac_dataを指定lng引数にevac_dataの経度列を指定(チルダ(~)に注意)lat引数に緯度列を指定(チルダ(~)に注意)popup引数に、~`名称`を指定します
念のためhtmltools::htmlEscape 関数を通しています
label引数に、~`名称`を指定(htmltools::htmlEscape 関数は不要)
> tunami_file <- "A40-17_17.geojson"
> tunami_data <- sf::st_read(file.path(data_dir, tunami_file)) |>
+ sf::st_transform(crs = 4326)
Reading layer `A40-17_17' from data source
`/Users/hiroki/Documents/GIS/A40-17_17_GML/A40-17_17.geojson'
using driver `GeoJSON'
Simple feature collection with 46630 features and 3 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 136.244 ymin: 36.29098 xmax: 137.3607 ymax: 37.85636
Geodetic CRS: JGD2011データ確認
> tunami_data
Simple feature collection with 46630 features and 3 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 136.244 ymin: 36.29098 xmax: 137.3607 ymax: 37.85636
Geodetic CRS: WGS 84
First 10 features:
A40_001 A40_002 A40_003 geometry
1 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2468 36.2947,...
2 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2467 36.29722...
3 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2473 36.29362...
4 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2473 36.29471...
5 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2474 36.29462...
6 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2474 36.29372...
7 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2476 36.29354...
8 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2476 36.29336...
9 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2487 36.29841...
10 石川県 17 0.3m以上 〜 0.5m未満 POLYGON ((136.2488 36.29868...A40_003列が津波浸水深の区分
金沢市金石地区付近を表示
> pal <- colorFactor("viridis", tunami_data$Level, ordered = TRUE,
+ reverse = TRUE)
> leaflet(tunami_data) |>
+ addTiles() |>
+ setView(lng = 136.593827, lat = 36.601285, zoom = 15) |>
+ addPolygons(stroke = FALSE,
+ fillColor = ~pal(Level),
+ fillOpacity = 0.9) |>
+ addLegend(pal = pal, values = ~Level, title = "津波浸水深")