subscriber 気象庁から防災情報XMLを受信
subscriber構築しXMLファイルを受信した結果
前回、subscriber構築しXMLファイルの受信を開始しました。
構築後、2か月ほどたちますが、大量のファイルが取得できています。
今回は、XMLファイルの解析を行います。
XMLの受信件数
subscriberを構築して、気象庁からXMLファイルを取得できるようになり、受信を始めたところ、1時間あたりに平均約60ファイル受信されます。
(受信する種類は、もらえる情報すべてを申請しています)
1日で 60*12=720
1ケ月で 720*30=21,600
結構な量です。
XMLファイルを展開
受け取っているだけでは意味がありませんのでXMLファイルを読んでみることにします。
7月16日に発生しました大阪府北部地震を例にとってみます。
XMLはこのような形で受信されました。
<?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-06-17T23:07:35Z</DateTime> <Status>通常</Status> <EditorialOffice>気象庁本庁</EditorialOffice> <PublishingOffice>気象庁</PublishingOffice> </Control> <Head xmlns="http://xml.kishou.go.jp/jmaxml1/informationBasis1/"> <Title>震源・震度情報</Title> <ReportDateTime>2018-06-18T08:07:00+09:00</ReportDateTime> <TargetDateTime>2018-06-18T08:07:00+09:00</TargetDateTime> <EventID>20180618075838</EventID> <InfoType>発表</InfoType> <Serial>2</Serial> <InfoKind>地震情報</InfoKind> <InfoKindVersion>1.0_1</InfoKindVersion> <Headline> <Text>18日07時58分ころ、地震がありました。</Text> <Information type="震源・震度に関する情報(細分区域)"> <Item> ~(この後も続く)
読み込みは次の処理で読み込みます。
$xmldata = simplexml_load_file(ファイルパス)
// 主要な部分だけ
print "<br><br>Control";
print "<br>---------------------------------------------------------<br>";
foreach ($xmldata->Control as $data) {
print "情報名称 :".$data->Title."<br>";
print "発表時刻 :".$data->DateTime."<br>";
print "運用種別 :".$data->Status."<br>";
print "編集官署名 :".$data->EditorialOffice."<br>";
print "発表官署名 :".$data->PublishingOffice."<br>";
}
print "<br>Head";
print "<br>---------------------------------------------------------<br>";
foreach ($xmldata->Head as $head) {
print "標題 :".$head->Title."<br>";
print "発表時刻 :".$head->ReportDateTime."<br>";
print "基点時刻 :".$head->TargetDateTime."<br>";
print "Event ID :".$head->EventID."<br>";
print "情報形態 :".$head->InfoType."<br>";
print "Serial :".$head->Serial."<br>";
print "InfoKind :".$head->InfoKind."<br>";
print "InfoKindVer :".$head->InfoKindVersion."<br>";
print "Headline :".$head->Headline->Text."<br>";
}
//
print "<br>Body";
print "<br>---------------------------------------------------------<br>";
foreach($xmldata->Body as $key => $value) {
print "マグニチュード:".$value->Earthquake->children('jmx_eb',true)->Magnitude."<br>";
foreach($value->Earthquake->children('jmx_eb',true)->attributes() as $a => $b) {
echo $a,' : ',$b,"<br>";
}
print "<br>Earthquake->Hypocenter->Area";
print "<br>---------------------------------------------------------<br>";
foreach($value->Earthquake->Hypocenter->Area as $item) {
print "Name :".$item->Name."<br>";
print "Code :".$item->Code."<br>";
}
}
読み込んだ結果は次の通りです。

無事読み込めました。
気象庁からリアルタイムで警報、速報などの情報が手に入ります。
アイデア次第では、いろいろと使えますね。
[前の記事](続)subscriber の構築をして気象庁の防災情報を取得
[次の記事]subscriber 気象庁から防災情報XMLを受信(PUSH型提供終了検討)








