9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonで地震情報を取得する

Last updated at Posted at 2022-12-15

これは防災アプリ Advent Calendar 2022の16日目の記事です。

はじめに

こんにちは、UD_Ri-chan(Rikuyade)30615🐺🎤です。
地震関連ではSeto City Camと名乗っています。

最近地震観測してn(ry
OBS使うとPCがフリーズするのなんとかしたい(切実)

最近は、Python / discord.pyを8月に始めてDiscord Botを作ってたり、11月くらいにC#を始めてちょいちょいソフトを作ってたりします。

概要

Pythonを使用して、最新の地震情報を取得するものを作ります。この記事では、P2P地震情報 JSON API v2から地震情報を取得することにします。

この記事を書くにあたっての環境

・Windows 10 Home 22H2(64bit)
・Python 3.10.5
・pip 22.3
・requests 2.28.1

1. 地震情報APIからデータ(JSON)を取得する

まず、地震情報APIからデータを取得します。前述したとおり、P2P地震情報 JSON API v2から地震情報を取得していきます。

必要なモジュールをインストールする

地震情報を取得すること、つまり、インターネット上からデータを取得する必要があります。

Pythonにおいて、インターネット上からデータ取得するには、追加でモジュールをインストールする必要があります。
この記事では、requestsというモジュールを使用していきます。

コマンドプロンプトなどを起動して、

pip install requests

と入力して実行してください。
これでモジュールがインストールされます。

上記のコマンドを実行したあとに、

pip list

と入力して実行すると、モジュールが正しくインストールされているか確認することができます。
requestsと書かれている行があれば正しくインストールされています。

地震情報のデータ(JSON)を取得する

以降登場するコード内の変数名は、適宜置き換えていただいて構いません。

P2P地震情報 JSON API v2は、JSONという形式で地震情報などが提供されています。
このJSONを取得していきます。

JSON取得
#インターネット上からデータを取得するためのモジュールをインポート
import requests
#リクエストするURLを指定(最新の地震情報のデータを取得することができるURL)
p2pquake_url = 'https://api.p2pquake.net/v2/history?codes=551&limit=1'
#リクエスト(データを取得する)
p2pquake_json = requests.get(p2pquake_url).json()

これで、最新の地震情報のデータが取得できます。

2. 取得したデータ(JSON)の中から、必要なものを取り出す

取得したデータ(JSON)の中から、必要なものを取り出します。
今回は、震央地名を取り出すことにします。

データ(JSON)の中身を見てみる

まず、P2P地震情報 JSON API v2のJSONを中身を見てみましょう。
先ほどのコード(プログラム)の変数p2pquake_urlの右に書いてあるURLをブラウザで開いてみましょう。

そうすると、震央地名は、1つ目の配列(配列番号0)の中のearthquakeの中のhypocenterの中のnameに入っていることが分かります。

image.png

Google ChromeやMicrosoft Edgeの場合、デフォルトではJSONが非常に見ずらい状態となってしまいます。
そこで、拡張機能を入れることによりJSONが見やすくなるので、導入をおすすめします。
自分は、下の拡張機能を導入することによって、上記の画像のように表示されるようにしています。

実際に書いてみる

先ほどのことを踏まえると、下記のように記述することになります。

#震央地名を取り出して、変数Eq_nameに代入する
Eq_name = p2pquake_json[0]["earthquake"]["hypocenter"]["name"]

これで、震央地名を取得できます。

上記のコードのあとに

print(Eq_name)

を書くと、

出力結果(例)
奄美大島近海

のような形で出力されます。

震央地名だけではなく他のものを取得したい場合は、P2P地震情報 JSON API v2のAPI仕様とJSONの中身を照らし合わせたりして、いろいろ試してみてください。

さいごに

最後まで読んでいただきありがとうございました。
今回紹介したものとdiscord.pyを組み合わることによって、地震情報を取得できるDiscord Botを作れたりします。
興味があれば、ぜひ挑戦してみてください。

さて、今回、人生で初めて記事を書きました。
書き方や日本語がおかしいところがあるかもしれませんが、大目に見ていただけると幸いです。

Advent Calendarがあるというのは去年から知っていましたが、去年は書くようなことが無かったので参加していませんでした。
今回のAdvent Calendarでこうして参加することができたことを嬉しく思っています。
今後また記事を書くことがある際には、ぜひよろしくお願いします。

出典

P2Pquake JSON API v2: Earthquake information by Japan Meteorological Agency / CC BY 4.0

9
12
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
9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?