2
0

More than 1 year has passed since last update.

2011年3月11日に起きた地震情報を可視化してみた

Posted at

はじめに

2022年1月22日に九州で大きな地震が発生しました。地震といえば、僕は2011年の東日本大震災を思い出します。今回は東日本大震災が発生した2011年3月11日の地震情報をfoliumを使って可視化してみたいと思います。

2011年3月11日に起きた地震情報を可視化してみた

実現したいこと

LeafletをPythonで使えるようにしたPythonライブラリのfoliumを使って、震央の位置とマグニチュードを円の大きさで表現したいと思います。

使用するデータ

今回使用するデータは、気象庁が提供している震度データベース検索からダウンロードしたものを使わせていただきました。

ここから、2011年3月11日に発生した最大震度1以上をどこかしらで観測した地震を集計しています。

実際のコード

# 必要なライブラリ
import folium
import pandas as pd
import geopandas as gpd
import numpy as np
import datetime as dt
import re

# ダウンロードしたCSVを読み込む
# データの整形が必要なので、もろもろ修正していく
df_tmp = pd.read_csv('./earthquake.csv')

# マグニチュードが不明なところは除く
df_tmp = df_tmp[df_tmp['Magnitude'] != '不明']

# 使用するために空のデータフレームを作成しておく
df = pd.DataFrame(index=[], columns=['datetime','lat','lon','magnitude'])

# 緯度経度が六十進法で保存されるので、それを十進法に変更する関数を用意する
# 緯度
def Sixty2TenOfLat(row):
  lat_splited = re.split('\D+', row['lat'])
  lat = float(lat_splited[0]) + float(lat_splited[1]) / 60 + float(lat_splited[2]) / 60 / 60
  return lat

# 経度
def Sixty2TenOfLon(row):
  lon_splited = re.split('\D+', row['lon'])
  lon = float(lon_splited[0]) + float(lon_splited[1]) / 60 + float(lon_splited[2]) / 60 / 60
  return lon

# 緯度経度を六十進法から十進法に変更して、使用するデータフレームに格納
df['lat'] = df_tmp.apply(Sixty2TenOfLat, axis=1)
df['lon'] = df_tmp.apply(Sixty2TenOfLon, axis=1)

# マグニチュードは文字列で保存されていたので、`float`に変更して使用するデータフレームに格納
df['magnitude'] = df_tmp['Magnitude'].map(lambda x: float(x))

# 使用する元の地図を作成
# 地図の中心は、震央の緯度経度の平均にしている
map = folium.Map(location=[df['lat'].mean(), df['lon'].mean()], zoom_start=5, tiles='cartodbdark_matter')

# 震央の位置に、マグニチュードの大きさを円の大きさとして描画
# 円の半径は、描画の関係で大きくしている
for i, row in df.iterrows():
    folium.CircleMarker(
        location=[row['lat'], row['lon']],
        radius=row['magnitude']*5,
        color='#0000ff',
        fill_color='#000055'
    ).add_to(map)

# 地図を描画
map

実際の結果

スクリーンショット 2022-01-31 21.26.19.png

上記のコードを実行すると、このような結果が得られました。東北ではたくさんの地震が発生していることがわかります。僕もたくさんの地震が発生したのを直で経験していたので、すごく覚えています。

さいごに

今回は気象庁のデータとLeafletをPythonで使えるようにしたPythonライブラリのfoliumを使って、2011年3月11日に起きた地震情報を可視化してみました。foliumを使うと簡単に、インタラクティブな地図を描画することができます。

2
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
2
0