天気予報XMLを読み解こう～気象庁XML利活用セミナー～
２０１３／７／１１
気象庁予報部業務課
杉山 善昭

【目標】
 天気予報XMLを読む前に知っておくべきこと。
 資料はこれが基本 天気予報XMLには何がある？
 XMLを眺めるとこんな情報が入っている。

 解説資料を眺めるとこんな流れになっている。
 併せてみるとこういう使い方になる。

 応用開発をするために使えるもの。

2

【資料は何が基本？】 気象庁XMLを読むための基礎資料は「辞書」。

でも・・・ 辞書は全ての情報を共通に使うものなので、各情報単位での運用が見えない。
府県天気予報
地方季節予報震源・震度に関する情報
津波警報・注意報・予報
噴火警報・予報
特殊気象報
生物季節観測報告気象報
紫外線観測データ3これが基本資料
 個々の情報を読み解く基本は
 辞書
 解説資料（プロファイル） サンプルデータ

 天気予報XMLを実際に読み解くことにより、各資料の見方と電文構造を理解しよう。

4

【天気予報XMLを眺めてみよう】
上から順に俯瞰してみよう。
 ヘッダ部あたり<Head xmlns="http://xml.kishou.go.jp/jmaxml1/informationBasis1/"><Title>愛知県府県天気予報</Title><ReportDateTime>2013-03-06T17:00:00+09:00</ReportDateTime><TargetDateTime>2013-03-06T17:00:00+09:00</TargetDateTime><TargetDuration>P2DT7H</TargetDuration><EventID/><InfoType>発表</InfoType><Serial/><InfoKind>府県天気予報</InfoKind><InfoKindVersion>1.0_0</InfoKindVersion><Headline><Text/></Headline></Head>5

上から順に俯瞰してみよう。
 内容部のおっきなつくり<Body xmlns="http://xml.kishou.go.jp/jmaxml1/body/meteorology1/"
xmlns:jmx_eb="http://xml.kishou.go.jp/jmaxml1/elementBasis1/"><MeteorologicalInfos type="区域予報">...</MeteorologicalInfos><MeteorologicalInfos type="地点予報">...</MeteorologicalInfos><MeteorologicalInfos type="区域予報">...</MeteorologicalInfos><MeteorologicalInfos type="地点予報">...</MeteorologicalInfos></Body>6

内容部を掘り下げて見てみよう。
 ①：区域予報のカテゴリー予報・・・1つめのTimeSeriesInfo<Body xmlns="http://xml.kishou.go.jp/jmaxml1/body/meteorology1/"
xmlns:jmx_eb="http://xml.kishou.go.jp/jmaxml1/elementBasis1/"><MeteorologicalInfos type="区域予報"><TimeSeriesInfo><TimeDefines>...</TimeDefines><Item><Kind><Property><Type>天気</Type>...</Property></Kind><Kind><Property><Type>風</Type>...</Property></Kind><Kind><Property><Type>波</Type>...</Property></Kind><Area><Name>西部</Name><Code>230010</Code></Area></Item><Item>... </Item></TimeSeriesInfo>
7

内容部を掘り下げて見てみよう。
 ①：区域予報のカテゴリー予報・・・2つめのTimeSeriesInfo<TimeSeriesInfo><TimeDefines>...</TimeDefines><Item><Kind><Property><Type>降水確率</Type>...</Property></Kind><Area><Name>西部</Name><Code>230010</Code></Area></Item><Item>... </Item></TimeSeriesInfo>

8

内容部を掘り下げて見てみよう。
②：地点予報の量的予報<MeteorologicalInfos type="地点予報"><TimeSeriesInfo><TimeDefines>...</TimeDefines><Item><Kind><Property><Type>朝の最低気温</Type><TemperaturePart><jmx_eb:Temperature description="３度" refID="1" type="朝の最低気温" unit="度">3</jmx_eb:Temperature></TemperaturePart></Property><Property><Type>日中の最高気温</Type><TemperaturePart><jmx_eb:Temperature description="１８度" refID="2" type="日中の最高気温" unit="度“>18</jmx_eb:Temperature></TemperaturePart></Property></Kind><Station><Name>名古屋</Name><Code>51106</Code></Station></Item>9

内容部を掘り下げて見てみよう。
 ③：区域予報の時系列予報<MeteorologicalInfos type="区域予報"><TimeSeriesInfo><TimeDefines>...</TimeDefines><Item><Kind><Property><Type>３時間内卓越天気</Type><WeatherPart>...</WeatherPart></Property></Kind><Kind><Property><Type>３時間内代表風</Type><WindDirectionPart>...</WindDirectionPart><WindSpeedPart>...</WindSpeedPart></Property></Kind><Area><Name>西部</Name><Code>230010</Code></Area></Item>10

内容部を掘り下げて見てみよう。
 ④：地点予報の時系列予報<MeteorologicalInfos type="地点予報"><TimeSeriesInfo><TimeDefines>...</TimeDefines><Item><Kind><Property><Type>３時間毎気温</Type><TemperaturePart>...</TemperaturePart></Property></Kind><Station><Name>名古屋</Name><Code>51106</Code></Station></Item>11

内容部の作りと気象庁HPを照らし合わせてみると。
 いわゆる天気予報①区域予報のカテゴリー予報
天気・風・波

①区域予報の②地点予報のカテゴリー予報 量的予報
降水確率 最高・最低気温

12内容部の作りと気象庁HPを照らし合わせてみると。
 時系列予報③区域予報の時系列予報
天気・風④地点予報の時系列予報
気温13

【解説資料を眺めてみよう】
ここにある。

14

今度は解説資料を上から俯瞰してみよう。
 ヘッダ部の記載をみると．．．

 解説資料と電文は同じ運用であることを確認。
15

今度は解説資料を上から俯瞰してみよう。
 内容部の記載を見てみると．．．

 『属性type は“区域予報”、“地点予報”、“独自予報”の値をとる。』

独自予報って見ていないなぁ16今度は解説資料を上から俯瞰してみよう。
と思ったら、たまに有った。

<Body xmlns="http://xml.kishou.go.jp/jmaxml1/body/meteorology1/"
xmlns:jmx_eb="http://xml.kishou.go.jp/jmaxml1/elementBasis1/"><MeteorologicalInfos type="区域予報">...</MeteorologicalInfos><MeteorologicalInfos type="地点予報">...</MeteorologicalInfos><MeteorologicalInfos type="独自予報"><MeteorologicalInfo><DateTime>2013-03-08T05:00:00+09:00</DateTime><Duration>P1DT19H</Duration><Item><Kind><Property><Type>独自予報</Type><Text>海上の最大風速 今日 １５ｍ／ｓ のち １３ｍ／ｓ 明日 １２ｍ／ｓ のち １０ｍ／ｓ</Text></Property></Kind><Area><Name>神奈川県</Name><Code>140000</Code></Area></Item></MeteorologicalInfo></MeteorologicalInfos><MeteorologicalInfos type="区域予報">...</MeteorologicalInfos><MeteorologicalInfos type="地点予報">...</MeteorologicalInfos></Body>構造自体はこれまでと変わらない。

17

今度は解説資料を上から俯瞰してみよう。
 jmx_meteの辞書を見直してみると．．．

確かに辞書にも書いてある。

18

解説資料で、気温の時系列予報を掘り下げてみよう。

TimeDefinesってあったなぁ

19気温の時系列予報部分のXMLをみてみよう。
ポインター的なID<TimeSeriesInfo><TimeDefines><TimeDefine timeId="1"><DateTime>2013-03-06T18:00:00+09:00</DateTime></TimeDefine><TimeDefine timeId="2"><DateTime>2013-03-06T21:00:00+09:00</DateTime></TimeDefine>：
このエントリーの時刻</TimeDefines>
はIDが一致するもの<Item><Kind><Property><Type>３時間毎気温</Type><TemperaturePart><jmx_eb:Temperature description="１３度" refID="1" type="気温" unit="度">13</jmx_eb:Temperature><jmx_eb:Temperature description="１０度" refID="2" type="気温" unit="度">10</jmx_eb:Temperature>：</TemperaturePart></Property>
表示するならこっち
数値処理するならこっち</Kind><Station><Name>名古屋</Name><Code>51106</Code></Station></Item><Item>...</Item> Codeの“51106”って何だ？
</TimeSeriesInfo>

対象となる予報時刻20

「名古屋」「51106」って何だ？
 解説資料の『「予想気温」の詳細』

これだ。

21

はこんなんだった。

あった。

22

コードはこんなものにも書いてあった。

 「20120309_PointAmedas.xls」がコード表

23

コード管理表ってどんなもの？
 同一の意味をもつ複数の情報種別・構造に跨って利用されるいわゆる「コード」を管理する表 とりうる値を直接書いてある記述方法と、別ファイルにコードテーブルとして書き出し、そのリンクを記載している記述方法の２通りがある。

24

はこんなんだった。

あった。

緯度経度が分かる

住所が分かる

高さも分かる 気象庁XMLのマッピングに必要な情報は可能な限り公開しています。
25

【資料の見かたの流れ】
 相互にぐるぐるみましょう。

コード管理表・コード表

関連性

各情報解説資料業務や処理のイメージ

XMLの読み方
サンプルor生電文
26【いっぱい使える他の資料】
 サンプルデータ
 XML形式と日本語化した形式とをペアでサンプル化
 サンプルにはシナリオがあるので、整理表で関連性を確認。
 スタイルシート
 動作確認などのためにもスタイルシート（XSLT）を用意
 動作確認のみならず、処理のためのサンプルコードとしても利用可。（直接組み込みは禁止。）
 気象庁防災情報XMLフォーマット運用指針
 仕様書の行間を補てん。
 特に「管理部・ヘッダ部の運用整理表」は情報別にとりうる値の運用を整理。
27

サンプルデータ
 サンプルデータ整理表より

実は想定されるシナリオに沿ってサンプルが提示されています。
28

気象庁防災情報XMLフォーマット運用指針
 別紙２：管理部・ヘッダ部の運用整理表

 例えば．．．
 TargetDateTimeは何が入っているの？
 EditorialOfficeって具体的にどこの官署が入るの？
 PublishingOfficeってどう使うの？

29