LoginSignup
8
13

More than 5 years have passed since last update.

気象庁防災情報XMLフォーマット形式電文をダウンロードするだけのプログラムとDockerイメージを作った

Posted at

名前が長いので、以降は「気象庁防災情報XMLフォーマット形式電文」を「気象庁XML」と呼称します。
また、私は気象庁関係者ではないので何かしら間違いや不適切な点があるかもしれません。
気がついた方は教えてください。

概要

気象庁は収集した気象データの一部を一般に公開しています。
気象庁XMLをダウンロードするだけのプログラムとDockerイメージを作ったので説明します。
説明は要らないからとりあえず気象庁XML欲しい、という方はdocker-compose.yml書いてください。
残念なプログラムを見たい人は最下部にGitHubのリンク貼ったのでそっちをお願いします。

ベースイメージ : alpine:3.6
プログラム : php7

プログラム類はMITライセンスにしたので使いたい奇特な人は好きに使ってください。

気象庁XMLについて

気象庁では気象庁が収集した気象データを、XML形式のファイルにして公開しています。
天気予報、気象警報・注意報、地震、異常天候の予測など、様々なデータがあり、定時または随時更新されています。

以前はPubsubhubbubを使った登録制のPush型配信だけでした。
今はPull型のデータ公開も行っており、自由にダウンロードすることが可能です。
Atomフィードを取得、解析し、XMLデータを取得するだけなので、とても簡単です。

詳細は気象庁ホームページを参照してください。
気象データ高度利用ポータルサイト
http://www.data.jma.go.jp/developer/index.html

※ダウンロードした気象データは気象庁の公開するルールに従って使いましょう。
※気象データの利用は自己責任です。

docker-compose.yml

気象庁では気象データを以下の4つに分類分けし公開しています。
今回作ったプログラム中では、公開されているAtomフィードのURLに従って以下の通り環境変数を用意しています。

  • 定時 : DATA_TYPE_REGULAR
  • 随時 : DATA_TYPE_EXTRA
  • 地震火山 : DATA_TYPE_EQVOL
  • その他 : DATA_TYPE_OTHER

各環境変数をtrueに設定することで、対象の気象庁XMLをダウンロードします。
下記の通り設定した場合、「定時」の気象庁XMLだけを対象にします。

version: '2'

services:
  jma-xml-downloader:
    image:  ancolin/jma-xml-downloader
    volumes:
    - /tmp:/app
    environment:
    - FEED_DIR=/app/feed
    - DATA_DIR=/app/data

    - DATA_TYPE_REGULAR=true
    - DATA_TYPE_EXTRA=false
    - DATA_TYPE_EQVOL=false
    - DATA_TYPE_OTHER=false

コンテナの起動 (プログラムの実行)

docker-compose runで実行する使い捨て型で、常駐はしません。
下記のようなコマンドで実行してください。
docker-compose run --rm jma-xml-downloader

気象庁では先述の4情報種別それぞれに「高頻度フィード」と「長期フィード」を用意しています。
標準では高頻度フィードを取得するようになっています。
もし長期フィードのデータを取得したいときは、下記のように引数にlongerを指定して実行してください。
docker-compose run --rm jma-xml-downloader longer

cronに書いて定期的に実行する、とかすれば良いと思います。
「毎秒実行する」とか相手サーバに負荷がかかるようなことは避けてあげましょう。
あとバックアップ、圧縮、削除などは全くしないので、そのあたりは自分でshellスクリプト書くとかしてください。

プログラムとDockerfile

プログラムとDockerfileはこちらで公開しています。
https://github.com/ancolin/docker-jma-xml-downloader

8
13
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
8
13