Skip to content

Latest commit

 

History

History
47 lines (37 loc) · 2.4 KB

api_update_investigation.md

File metadata and controls

47 lines (37 loc) · 2.4 KB

調査

週間天気予報を確認する場合に通常アクセスするURL
https://www.jma.go.jp/bosai/forecast/#area_type=offices&area_code=250000

読み込まれるJSON
https://www.jma.go.jp/bosai/forecast/data/forecast/250000.json?__time__=202103021201

URLにアクセス日時timeがない場合でも取得可能。キャッシュなどの問題を考えてtimeは付けた方が良いと思う。
https://www.jma.go.jp/bosai/forecast/data/forecast/250000.json

エリアには5種類の詳細度がある。 http://www.jma.go.jp/bosai/common/const/area.json

  • centers 気象台
  • offices 都道府県レベル
  • class10s 県北部南部等(週間天気予報が発表される範囲)
  • class15s
  • class20s 市区町村

officesにはclass10sのchildrensが一つ以上存在する。滋賀なら、南部を表す250010と北部を表す250020だ。

週間天気予報の最高・最低気温の取得には、class10sと対応するアメダスの番号が必要。以下で取得可能。
https://www.jma.go.jp/bosai/forecast/const/week_area.json

weatherCodesと天気の対応関係はjsonではなく、HTML本体にConst.TELOPSとして記述されている。

取得の流れ

週間天気予報の取得方法 事前準備

  1. 都道府県レベルoffices+県北部南部等レベルclass10sのエリアを決定 e.g. 250000, 250010 http://www.jma.go.jp/bosai/common/const/area.json
  2. class10sに対応するamedasの番号を取得 e.g. 60216 https://www.jma.go.jp/bosai/forecast/const/week_area.json
  3. TELOPSの保存 毎回
  4. JSONの取得 https://www.jma.go.jp/bosai/forecast/data/forecast/250000.json
  5. 最初の配列は週間天気予報がある len(timeSeries>timeDefines) == 7 の方を選択。len == 3 は明後日までの予報
  6. 日付列を取得
  7. timeSeriesの要素の中で、areasの要素の中で、2重列挙を行い、area>codeがclass10sに当てはまれば天気、amedasに当てはまれば最高・最低気温を取得
  8. 天気をtelopsを用いて文字列に変換、時刻を日付に変換
  9. 3.4.で取得した日付、天気、最高・最低をzipしてical化

この方法だと明日の気温もわからない問題がある。実際には明後日までの天気も読み取ることが必要。

日付変換

import dateutil.parser
dateutil.parser.parse("2021-03-03T00:00:00+09:00").date()
# 返り値は現在使用しているdate型。