9.週間天気予報の作り方
9-1.週間天気予報のURL
週間天気予報は府県天気予報と同じファイルに入っていますので、URLは府県天気予報と同じです。
・三重県の週間天気予報を取得する
https://www.jma.go.jp/bosai/forecast/data/forecast/240000.json
9-2.週間天気予報の発表時刻
週間天気予報の発表時刻内容は、
①発表時刻 11時、17時の一日二回となります。
②発表内容 向こう一週間の、各府県における一日ごとの天気
最高・最低気温(1℃単位)
降水確率(10%単位)
予報の信頼度
期間における降水量(1㎜単位)と気温の平年値(0.1℃単位)
※気象庁ホームページでは、最新の「府県天気予報」から、その府県予報区の代表的な一次細分区域の明日・明後日の予報を随時取り込んで掲載しています。
三重県で例えると、北中部の今日明日の天気予報を週間天気予報に取り込んでいます。
9-3.週間天気予報のデータ仕様
三重県のデータを参考に見てみます。
今回は、天気コードと最高最低気温データのみの取得になります。
①11・17時発表のデータ仕様
17時発表のものを参考にしていますが、11時発表のものと内容は同じです。
天気コードweatherCodesは、[0]~[6]まで、7日分存在します。
最低気温データは、tempsMinのものを使います。
tempsMinUppeは、最大値の最低気温データです。
tempsMinLowerは、最小値の最低気温データです。
最高気温データは、tempsMaxのものを使います。
tempsMaxUpperは、最大値の最高気温データです。
tempsMaxLowerは、最小値の最高気温データです。
9-4.週間天気予報の処理プログラム
<!-- 第一地域天気アイコンの表示 -->
<div class="flexbox">
<div class="f-item1">今日の天気
<img src="data:image/png;base64,<?php echo $img;?>">
<?php echo $today;
if(isset($data2[0]['timeSeries'][2]['areas'][0]['temps'][2])){
echo "最高: $tomorrow_templow1 ℃";
}
?>
</div>
<div class="f-item1">明日の天気
<img src="data:image/png;base64,<?php echo $img1;?>">
<?php echo $tomorrow;
if(isset($data2[0]['timeSeries'][2]['areas'][0]['temps'][2])){
echo "最高: $tomorrow_temphigh ℃";
echo "最低: $tomorrow_templow ℃";
} else {
echo "最高: $tomorrow_temphigh1 ℃";
echo "最低: $tomorrow_templow1 ℃";
}
?>
</div>
<!-- 明後日のデータ確認 -->
<?php if(isset($data2[0]['timeSeries'][0]['areas'][0]['weatherCodes'][2])){ ?>
<div class="f-item1"><?php echo $datetime2 ?>
<img src="data:image/png;base64,<?php echo $img2; ?>">
<?php echo $data20;
echo "最高: $temphigh2 ℃";
echo "最低: $templow2 ℃";
?>
</div>
<?php } ?>
<div class="f-item1"><?php echo $datetime3 ?>
<img src="data:image/png;base64,<?php echo $img3; ?>">
<?php echo $data21;
echo "最高: $temphigh3 ℃";
echo "最低: $templow3 ℃";
?>
</div>
<div class="f-item1"><?php echo $datetime4; ?>
<img src="data:image/png;base64,<?php echo $img4; ?>">
<?php echo $data22;
echo "最高: $temphigh4 ℃";
echo "最低: $templow4 ℃";
?>
</div>
<div class="f-item1"><?php echo $datetime5; ?>
<img src="data:image/png;base64,<?php echo $img5; ?>">
<?php echo $data23;
echo "最高: $temphigh5 ℃";
echo "最低: $templow5 ℃";
?>
</div>
<div class="f-item1"><?php echo $datetime6; ?>
<img src="data:image/png;base64,<?php echo $img6; ?>">
<?php echo $data24;
echo "最高: $temphigh6 ℃";
echo "最低: $templow6 ℃";
?>
</div>
<div class="f-item1"><?php echo $datetime7; ?>
<img src="data:image/png;base64,<?php echo $img7; ?>">
<?php echo $data25; ?>
echo "最高: $temphigh7 ℃";
echo "最低: $templow7 ℃";
?>
</div>
</div>
17時発表時は、[0]番目の明日予報コードの前に、[-1]番目として今日の府県予報データを埋め込みます。
5時発表の府県天気コードは、今日明日のデータのみになります。
5時発表の時点で17時発表の週間天気コード[0]番目の明日のデータは、今日の予報になっています。
その為、5時発表時の今日の予報を[0]番目にいれます。
明日の予報を[1]番目に入れます。
23行目で明後日のデータを確認していますが、データが存在しない場合は[1]番目のデータは表示しません。
なぜなら、5時発表の明日のデータと重複しているからです。
その場合、予報は7日分になります。
また、11・17時発表の明後日のデータがある場合、[1]番目のデータを表示し、[-1]番目の予報から数えて8日分になります。
気象庁のHPは今日明日のみ予報を埋め込んでいますので、明後日のデータは使いませんが、条件分岐式に利用します。
今日明日の最高最低気温の確認につきましては、
8-3.府県天気予報の処理プログラム
と同じです。ご参照ください。
以上で、週間天気予報の作り方は終わりです。
お疲れ様でした‼️