(続)subscriber の構築をして気象庁の防災情報を取得

2018-05-11PHP

気象庁からの気象情報受信で失敗する場合

subscriberを構築し、気象庁からの接続テストで

「Web サイトへのアクセスが集中しているため Web ページを表示できません(ステータスコード HTTP 408/HTTP 409)」
というエラーが発生してしまい接続確認が行えませんでした。

気象庁から、他の申請者も同様のエラーが発生し接続確認ができないという事例は発生しており
その時の解決方法としては、以下のことが考えられるとアドバイスを受けました。

  • レスポンスの最後に改行があった
  • verify_tokenを読み飛ばす設定(もしくは設定しない)にする

そこで、今回、verify_tokenの設定をしていましたが設定を空白にして、再申請をしたところ無事接続ができました。

早速電文を受信

まずは、atomファイルからの受信となります。
以下が実際に受信されたatomファイルの中身です。

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
<title>JMAXML publishing feed</title>
<subtitle>this feed is published by JMA</subtitle>
<updated>2018-05-11T13:04:01+09:00</updated>
<id>urn:uuid:d38e0e80-12ba-3236-b10f-256b78a08995</id>
<link href="http://www.jma.go.jp/" rel="related"/>
<link href="http://xml.kishou.go.jp/feed/other.xml" rel="self"/>
<link href="http://alert-hub.appspot.com/" rel="hub"/>
<rights>Published by Japan Meteorological Agency</rights>

<entry>
<title>生物季節観測</title>
<id>urn:uuid:ddb70b3c-8418-350e-b6ef-f213df75ea15</id>
<updated>2018-05-11T04:03:42Z</updated>
<author><name>和歌山地方気象台</name></author>
<link href="http://xml.kishou.go.jp/data/ddb70b3c-8418-350e-b6ef-f213df75ea15.xml" type="application/xml"/>
<content type="text">【生物季節観測】</content>
</entry>
</feed>

atomファイルと言っていますが、xmlファイルのことです。
このファイルが受信できましたら、このファイルに記載されている link 情報から、実際に使用する気象情報のxmlファイルを取得します。
上記linkから取得した情報が以下のものになります。

<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://xml.kishou.go.jp/jmaxml1/" xmlns:jmx="http://xml.kishou.go.jp/jmaxml1/">
  <Control>
    <Title>生物季節観測</Title>
    <DateTime>2018-05-11T04:03:42Z</DateTime>
    <Status>通常</Status>
    <EditorialOffice>和歌山地方気象台</EditorialOffice>
    <PublishingOffice>和歌山地方気象台</PublishingOffice>
  </Control>
  <Head xmlns="http://xml.kishou.go.jp/jmaxml1/informationBasis1/">
    <Title>生物季節観測</Title>
    <ReportDateTime>2018-05-11T13:02:00+09:00</ReportDateTime>
    <TargetDateTime>2018-05-11T00:00:00+09:00</TargetDateTime>
    <EventID>20180511130200_23</EventID>
    <InfoType>発表</InfoType>
    <Serial />
    <InfoKind>生物季節観測報告気象報</InfoKind>
    <InfoKindVersion>1.0_0</InfoKindVersion>
    <Headline>
      <Text />
    </Headline>
  </Head>
  <Body xmlns="http://xml.kishou.go.jp/jmaxml1/body/meteorology1/">
    <MeteorologicalInfos type="生物季節観測">
      <MeteorologicalInfo>
        <DateTime significant="yyyy-mm-dd">2018-05-11T00:00:00+09:00</DateTime>
        <Item>
          <Kind>
            <Name>しおからとんぼの初見日</Name>
            <Code>23</Code>
            <ClassName>シオカラトンボ</ClassName>
            <Condition>通常</Condition>
          </Kind>
          <Station>
            <Name>和歌山地方気象台</Name>
            <Code type="国際地点番号">47777</Code>
            <Location>和歌山市男野芝丁</Location>
            <Status>付近</Status>
          </Station>
        </Item>
      </MeteorologicalInfo>
    </MeteorologicalInfos>
    <AdditionalInfo>
      <ObservationAddition>
        <DeviationFromNormal>-47</DeviationFromNormal>
        <DeviationFromLastYear>-7</DeviationFromLastYear>
        <Text>和歌山城公園(ワカヤマジョウコウエン)</Text>
      </ObservationAddition>
    </AdditionalInfo>
  </Body>
</Report>

このXMLの情報を利用するれば、利用したい地域の警報、注意報などの情報を取得できます。
これを利用してなにかができそうな気がしてきました。
ちなみに、5/10 では 約1400個のXMLファイルが受信されました。
今回の申請ではすべての情報を取得するという申請にしたので、こんなに膨大な情報量となってしまいました。
サーバ側の容量を圧迫させないために、定期的に削除させる仕組みづくりが必要ですね。

次は、XMLファイルを読み込んでデータベース化にチャレンジしたいと思います。
それをするには、気象庁が提供しているファイルフォーマットを理解しなくては・・・

[前の記事]subscriber の構築をして気象庁の防災情報を取得
[次の記事]subscriber 気象庁から防災情報XMLを受信