N.Y.Cityのまちかど
OpenWeatherMap
「OpenWeatherMap」に触ってみた
天気予報APIを触る必要があり,「OpenWeatherMap」を使ってみたので, 情報をメモしておきます.
以下のWebサイトを参考にしました. 世界の天気API「OpenWeatherMap」の無料APIキー発行・取得、リクエスト方法
APIコードの取得
上記Webサイトと重なる部分は省略.
APIキーを申請すると,登録したメールアドレスに確認メールが届くので, リンクをクリックすることで,登録情報の確認ができる.
少しハマったのはこの後で,確認後すぐにAPIを試そうとしたらエラーが返ってきた.エラーメッセージに記載のFAQを見ると,「アクティベーションから実際に使えるようになるまで10分~時間がかかるから,それまでヘルプでも呼んでおけ(意訳)」というありがたいお言葉があった.10分ほど経ってからリロードすると,ちゃんと応答が返ってきた.
情報の取得
パラメータ
【都市名】
都市コード(CityID)を入力する.(例:Tokyo,JP)
都市コードの一覧はhttp://bulk.openweathermap.org/sample/ からダウンロードできる. (JSONファイルをgz形式で圧縮)
city.list.json.gz は,JSONファイルに改行を加えて人間にも読みやすくしたもの. その代わり膨大な行数があり,並みのエディタでは表示できない.
city.list.min.json.gz は,同じJSONデータから改行を除いて最小化したもの.(それでもかなりの量がある)
せっかくなので,このリストから日本("country": "JP")のデータだけを抽出し, Googleマイマップで描画したものを作成した. https://www.google.com/maps/d/u/0/edit?mid=1797aq0XrRpoFj5Ln5rZmpKnz-hPHWCZ1&usp=sharing
得られる情報
予報で取得できる天気の種類は以下のページで説明されています. https://openweathermap.org/weather-conditions#How-to-get-icon-URL
Pythonで取得してみる
最新の天気予報を全て列挙するサンプルプログラムを作ってみた.
ライブラリインストールの注意
requestsライブラリ(指定したURLにHTTPリクエストを投げて応答を取得するライブラリ)を使用してるので,インストールしていない場合は事前にインストールが必要.
pip install requests
サンプルソース
import requests #HTTPリクエストライブラリ import json #json解析ライブラリ #APIのURL url = "http://api.openweathermap.org/data/2.5/forecast" #APIに渡すオプションを設定 payload = {"q":"【都市名】", "appid":"【APIキー】", "lang":"ja", "units":"metric"} #URLとオプションを指定して,requestを送る r = requests.get(url, params=payload) #リクエストした結果得られた応答をjsonライブラリに渡してパース jsondt = json.loads(r.text) #["list"]の中に3時間おきの天気予報が入っているので, #時刻文字列と天気文字列を抽出して画面表示 for forcast in jsondt["list"]: print(forcast["dt_txt"]+" "+forcast["weather"][0]["main"])
結果
2021-02-05 12:00:00 Clouds 2021-02-05 15:00:00 Clouds 2021-02-05 18:00:00 Clouds 2021-02-05 21:00:00 Clouds 2021-02-06 00:00:00 Clouds 2021-02-06 03:00:00 Clear 2021-02-06 06:00:00 Clear 2021-02-06 09:00:00 Clear 2021-02-06 12:00:00 Clear 2021-02-06 15:00:00 Clear 2021-02-06 18:00:00 Clear 2021-02-06 21:00:00 Clear 2021-02-07 00:00:00 Clear 2021-02-07 03:00:00 Clear 2021-02-07 06:00:00 Clear 2021-02-07 09:00:00 Clear 2021-02-07 12:00:00 Clear 2021-02-07 15:00:00 Clouds 2021-02-07 18:00:00 Clouds 2021-02-07 21:00:00 Clouds 2021-02-08 00:00:00 Clouds 2021-02-08 03:00:00 Clouds 2021-02-08 06:00:00 Clouds 2021-02-08 09:00:00 Clouds 2021-02-08 12:00:00 Clouds 2021-02-08 15:00:00 Clouds 2021-02-08 18:00:00 Clouds 2021-02-08 21:00:00 Clouds 2021-02-09 00:00:00 Clouds 2021-02-09 03:00:00 Clear 2021-02-09 06:00:00 Clear 2021-02-09 09:00:00 Clear 2021-02-09 12:00:00 Clear 2021-02-09 15:00:00 Clear 2021-02-09 18:00:00 Clear 2021-02-09 21:00:00 Clear 2021-02-10 00:00:00 Clear 2021-02-10 03:00:00 Clear 2021-02-10 06:00:00 Clear 2021-02-10 09:00:00 Clear
おまけ
ダウンロードした「city.list.min.json」から,日本(country=JP)の行だけを取り出し,
地名[ID]\t緯度\t経度
の形式で書きだすpythonプログラム.
「city.list.min.json」のパスを書き込んで実行すると,コンソール上にリストアップされる.ファイルにリダイレクトすればTSV形式のファイルになる.
import json basefile = open(r'【ファイルのパス】\city.list.min.json','r',encoding="UTF-8") jsondt = json.load(basefile) for item in jsondt: if item["country"]=='JP': print(item["name"]+'['+str(item["id"])+']\t'+str(item["coord"]["lon"])+'\t'+str(item["coord"]["lat"]))
現在ご覧のページの最終更新日時は2021/02/05 20:08:37です。
Copyright (C) N.Y.City ALL Rights Reserved.
Email: info[at]nycity.main.jp