東京アメッシュを解析し雨を検知する[GDライブラリ]

2016年4月5日

PHP

東京アメッシュのサイトを解析して、ある地域(今回は東東京のあたり)において雨が観測されているかどうかを検知してみます。

 

 

スポンサーリンク

 

 

デモ画面

 

デモ画面では、東京アメッシュの地図上(画像サイズ 770×480 ピクセル)において、地点A-Bを対角線とする四角形の範囲(東東京)を指定し、その範囲において雨が観測されているかどうかを検知しています。

 

東京アメッシュ地図

 

 

東京アメッシュの仕組み

 

東京アメッシュは5分ごとに観測データが更新されています。大まかな仕組みとしては、地図画像(770×480 ピクセル)の上に、雨観測データとしての透過GIF画像(770×480 ピクセル)が重なっています。その透過GIF画像が5分ごとに更新され、雨雲が移動しているように見えます。

 

東京アメッシュ合成図

 

更新日時は以下のURLで取得できます。また透過GIF画像のファイル名は「更新日時+gif拡張子」となっています。

 

透過GIF画像のファイル名の一例

201604051240.gif

 

 

デモ画面の仕組み

 

まず更新されている雨観測データの最新透過GIF画像を取得します。その画像をグラフィックライブラリであるGDを利用して、指定した範囲のピクセル状態を取得し調べます。もし調べたピクセルのalpha値が0であるならば、その部分は透明ではなく雨が観測されているということになります。

 

amesh.php(デモ画面)

 

24行目

もしGIF画像ではなくJPEG画像の場合は、ImageCreateFromJPEG関数を利用します。画像形式によりそれぞれの関数を利用します。

 

34〜44行目

指定した地域のピクセルのアルファ値(alpha)を取得しています。

 

37行目のimagecolorat関数は、ピクセルの色のインデックスを返します。

 

39行目のimagecolorsforindex関数は、指定したインデックスに対する色(RGB)とアルファ値を返します。

 

39行目の$color_tranの値にはピクセルが無色透明の場合、以下のような配列が入ります。

 

47〜51行目

 

alphaの値は0から127まであり、透過GIF画像の場合は0か127のどちらかになります。雨が降っていない場合は透明であり、alphaの値は127となります。 alphaが0(ゼロ)の場合は透明でない場合で、雨が観測されていることになります。

 

つまり$area配列の値に0が一つでもあれば、雨が観測されていることになります。

 

 

参照ページ


 

PHPマニュアル

画像処理 (GD)

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー