LoginSignup
1
0

More than 1 year has passed since last update.

避難所探し~君は攻撃から逃れられるか?~

Last updated at Posted at 2022-04-25

物語の始まり

20××年×月×日、東京である事件が起きていた…

品川駅。それは各路線をつなぐターミナル駅である。オフィスも多いことからサラリーマンの利用も多い。

昼過ぎ、駅にサイレンの音が鳴り響いた。

「ピー!ピー!緊急事態です。品川駅付近にゴジラが上陸しているとの情報があります。」

なぜかゴジラが品川にいるらしい。どうやら北の方角から歩いてきているとのこと。

「皆さん落ち着いてください。警備部隊の活躍により、品川駅でゴジラを足止めできることになりました。その後特殊部隊を派遣して、ゴジラを海に戻す手配をする予定です。」

警備部隊や特殊部隊の活躍により、被害は最小限で済みそうだ。
と思っていたら、続けて放送があった。

「しかしながら特殊部隊の派遣は時間がかかっており、品川駅の損傷は免れません。このままま駅にいるのは危険です。いち早く頑丈そうな建物に逃げてください。」

遠くまで行くのは体力が持たなさそうだ。品川駅付近の頑丈そうな建物に逃げるのがよさそうだな。
頑丈そうな建物...例えば避難所はどうだろうか?
よし、決まったら早速一番近い避難所を探さなくては!

皆さんは品川駅から近い避難所を探すことができるだろうか?

詳細

茶番の裏側

自分で書いていてよくわからない物語ができました。
元々はdelikaに避難所情報があるのを見つけて、これで何か実施したいと思ったのがきっかけです。

データを見たら品川駅付近の情報だったので、駅から避難所に向かうことを想定して活用しようと考えました。駅から避難所に向かう理由って何だろう、と思った時にゴジラが攻撃してくるのはどうだろうかと思いついて、上記のストーリーに。
昔見た「シン・ゴジラ」の影響ですね。多分。

また避難する場所には、避難所と広域避難場所というのがあるそうです。避難所は収容施設(学校など)であるのに対し、広域避難場所は公園などオープンスペースであることが特徴です。

ゴジラからの攻撃を考えると収容施設の方が望ましいと考え、品川駅から一番近い避難所をデータから探索しました1

コード

データ取得の方法は割愛。

#モジュールインポート
import folium 
import pandas as pd

df1 = pd.read_csv('212.csv')
df1.head(2)

ここには入っていないが、実際には場所の緯度・経度も含まれています。
image.png

#避難所と広域避難場所に分けてマーカーをつける
shinagawa_map = folium.Map(location=[35.6291,139.7389], zoom_start=14)

for i, row in df1.iterrows():

    place = row['category']
    if place == '避難所':
            folium.Marker(
                location=[row['latitude'], row['longitude']],
                popup=row['facility_name'],
                icon=folium.Icon(color='red')
            ).add_to(shinagawa_map)
    else:
        folium.Marker(
            location=[row['latitude'], row['longitude']],
            popup=row['facility_name'],
            icon=folium.Icon(color='blue')
        ).add_to(shinagawa_map)

shinagawa_map

品川駅を中心にしてマッピングしました。赤が避難所、青が広域避難場所を表しています。
image.png

#★各場所と品川駅の距離を測定し、避難所かつ最短距離の場所を見つける
import geopy
from geopy.distance import geodesic

location = (35.6291,139.7389)
df1["distance"] = df1.apply(lambda x:geodesic((x["latitude"], x["longitude"]), location), axis=1)

#距離の項目をfloat型にしてidxmaxで使えるようにする
henkan = []

for i in range(len(df1)):
  
  distance = df1["distance"][i]
  moji = str(distance)
  moji2 = moji[:-3]
  num = float(moji2)
  henkan.append(num)

df1['distance']=henkan

df2 = df1.query('category == "避難所"')
best = df2['distance'].idxmin()
df2['facility_name'][best]

image.png

御殿山小学校が品川駅に一番近い避難所だそうです。

まとめ

可視化を利用して、該当の場所から一番近い避難所を見つけることができました。
これで実際にゴジラが襲ってきても安心ですね。

参考

https://qiita.com/Kumanuron-1910/items/12ce7aa02922927de2f4
https://norari-kurari-way.com/python-folium/
https://qiita.com/Taiyo_4U/items/40b34c2d13b1d22a2beb

  1. あくまでもデータ内での探索なので、もっと近い避難所があるかもしれません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0