这是indexloc提供的服务,不要输入任何密码
Skip to content
This repository was archived by the owner on Jan 28, 2025. It is now read-only.

従業員の自宅と避難情報が発表されている地域の関係を、Python/Jupyter Notebook を使って可視化するための手作り分析ツール。社内の危機管理のお供に。

License

Notifications You must be signed in to change notification settings

ttsukagoshi/employee-evac-map

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

employee-evac-map: 従業員の自宅と避難情報をマップで可視化

従業員の自宅と避難情報が発表されている地域の関係を、Python/Jupyter Notebook を使って可視化するための分析ツール。従業員の住所とは関係なく、避難情報が発表された地区の地理的・時系列的な広がりを可視化するためにも使用可能。

警戒レベルに応じて色分けされた従業員ごとのマーカーがプロットされた地図のスクリーンショット画像

以下、2023 年 7 月 15 日から 16 日朝にかけて秋田市で発表された避難情報を例にしています。

0. 下準備【事前】

0-1. 実行環境の準備

  1. Python 3.x の最新版をインストール(Download Python | Python.org

  2. このレポジトリのコピーをローカルに作成する(「Git って...?」という方にはレポジトリのトップからCode > Download ZIPが一番シンプルかと思いますが、forkgit cloneなど他の方法をご存知の方はお好きにどうぞ)
    「Code」から「Download ZIP」のメニューを表示した画面のスクリーンショット

  3. ローカルに作成したフォルダを、以下「作業フォルダ」と呼びます。作業フォルダに移動して、以下のコマンドから Python の仮想環境を作成する:

python -m venv env
  1. 仮想環境を有効化する:
# Windows
env\Scripts\activate

# macOS/Linux
source env/bin/activate
  1. 必要なパッケージをインストールする:
pip install -r requirements.txt

0-2. 必要なデータを準備しておく

平時のうちに、マッピングのために必要なデータをあらかじめダウンロード・整形して、dataフォルダに保存しておく。

0-2-1. 大字・町丁目ごとの位置参照情報(代表地点の緯度・経度)

国土交通省が提供する国土数値情報ダウンロードサイトから、必要な市町村について、最新の位置参照情報を CSV として取得・保存しておく(ナビゲーションメニューから位置参照情報 > データダウンロード)。

位置情報の粒度はいくつか選択できるが、避難情報の発表単位と揃えるため、ここでは大字・町丁目単位のデータをダウンロードする(data/akita-2022-ichijoho-utf8.csv)。

データの形式は次のとおり(国土数値情報ダウンロードサイトからダウンロードしたファイルの形式をそのまま使用している):

都道府県コード 都道府県名 市区町村コード 市区町村名 大字町丁目コード 大字町丁目名 緯度 経度 原典資料コード 大字・字・丁目区分コード
5 秋田県 5201 秋田市 52010001000 旭川清澄町 39.743039 140.128123 0 1
5 秋田県 5201 秋田市 52010002000 旭川新藤田西町 39.740677 140.12612 0 1
文字エンコードの調整

ダウンロードしたファイルは、文字エンコードが Shift JIS になっている。Windows 端末だけで作業や情報共有が完結するのであればあまり不便はないが、macOS など、他の OS 端末でも操作・閲覧することを考えてここでは UTF-8 に変換しておく。

macOS の場合は、iconvコマンドを使って変換する:

iconv -f SHIFT_JIS -t UTF-8 input.csv > output.csv

0-2-2. 従業員の自宅住所一覧

従業員の住所一覧を CSV 形式で保存しておく。

住所を直接地図にマッピングすることもできるが、それだと直接的な個人情報ということで、社内であっても簡単には共有できない。ここではマッピング結果を災害対策会議など、社内資料等で広く共有することを想定して、事前に住所をもとに大字・町丁目を抽出して、その代表地点を地図上にマッピングすることとする。大字・町丁目の表記は、先にダウンロードした位置参照情報のものと揃える。

ここでは例として、ダミーデータdata/mock_employee_list.csvを使用する。ダミーデータは、Fakerを使ってscripts/employees.pyで生成した。

1. 時系列での避難情報【事中】

自治体が提供する防災メールサービスなどから得た避難情報をスプレッドシートなどに記録して、CSV 形式で保存しておく(例ではdata/akita_evac_all.csv)。

マップは、災害がまさに発生している事中にリアルタイムで更新していくことも想定しているので、この CSV 出力の段階では特に時点などを区切る必要はない。

自治体や第三者が提供するウェブ API を使って、避難情報そのものを自動で取得することができる場合もある。秋田市には 2023 年 7 月現在でそのような API サービスはなく、公式の防災メールから手動でスプレッドシートに内容を落とし込んだ(防災ネットあきた|秋田市公式サイト)。

CSV の例(data/akita_evac_all.csv):

MAIL_TIMESTAMP LEVEL LEVEL_NAME REASON BLOCK_ORIGINAL BLOCK
2023/7/15 7:25:00 3 高齢者等避難 洪水 牛島東六丁目 牛島東六丁目
2023/7/15 7:25:00 3 高齢者等避難 洪水 仁井田小中島 仁井田小中島
2023/7/15 7:25:00 3 高齢者等避難 洪水 仁井田字新中島 仁井田
2023/7/15 7:25:00 3 高齢者等避難 洪水 仁井田字西潟敷 仁井田
  • 時点情報は、発表時点や配信時点などいくつか考え方があるが、ここでは情報を入手した時点を意思決定の時点と捉えて、防災メールの受信日時を時点として扱う(MAIL_TIMESTAMP列)。
  • LEVEL及びLEVEL_NAME列は全国共通の警戒レベル(参考:「警戒レベル 4」で危険な場所から全員避難!5 段階の「警戒レベル」を確認しましょう | 暮らしに役立つ情報 | 政府広報オンラインなど)。
  • REASON列は、避難の理由(洪水、土砂災害、高潮、地震、津波、火山 etc.)。
  • 秋田市の防災メールではBLOCK_ORIGINAL列にあるとおり、字単位での避難情報が発表されるが、国土数値情報ダウンロードサイトには位置情報(緯度・経度)がないため、大字・町丁目単位にまとめておく(BLOCK列)。

列名を変更した場合は、employee-evac-map.ipynb内の列名で情報を参照している箇所も変更すること。

2. マッピング【事中・事後】

employee-evac-map.ipynbを Jupyter Notebook で開き、

juptyer notebook employee-evac-map.ipynb

適宜ファイル名などの変数を調整してから、セルを上から順に実行する。ファイル名(ファイルパス)と、いつ時点のマッピングをするか、が利用する際の主な調整ポイントとなる。

About

従業員の自宅と避難情報が発表されている地域の関係を、Python/Jupyter Notebook を使って可視化するための手作り分析ツール。社内の危機管理のお供に。

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Contributors 2

  •  
  •