スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

東京アメッシュAPI

東京アメッシュは便利なサイトなんですけど、willcomでPCページとして見るとサイトが大きすぎてなかなか表示されません。以前はSoftbank用の東京アメッシュが見られたんですが、IP制限かユーザエージェンの制限がかかって見られなくなってしまいました。しょうがないのでPHPで自作することにします。

東京アメッシュでは、
地形画像
地名画像
雨画像の3種類を合成して表示しています。雨画像のURLは
http://tokyo-ame.jwa.or.jp/mesh/100/200812241410.jpg
のようになります。ファイル名はYYYYMMDDHHMMです。最後のMは0固定です。

後はGDでごにょごにょすれば、おk。ただし、このままだと3080x1920という巨大なイメージなので、引数としてw,h,x,yを追加します。幅、高さ、左上からのx座標、左上からのy座標になります。
http://localhost/ame.php?w=500&h=400&x=1665&y=705
でこんな感じです。
結果画像

ソースは以下の通りです。
<?php
define("MAX_WIDTH", 3080);
define("MAX_HEIGHT", 1920);
define("MAP_URL", "http://tokyo-ame.jwa.or.jp/map/map100.jpg");
define("MSK_URL", "http://tokyo-ame.jwa.or.jp/map/msk100.png");

// 現在の雨URLを取得する
function getAmeUrl() {
$prefix = "http://tokyo-ame.jwa.or.jp/mesh/100/";
$postfix = "0.gif";

// 現在の時間を取得
$date = new DateTime();

// 分の1桁部分を削る
$result = substr($date->format("YmdHi"), 0, 11);

return $prefix.$result.$postfix;
}

// 値を取得する
function getValue($key, $default) {
if (isset($_GET[$key])) {
return (int)$_GET[$key];
} else {
return $default;
}
}

// 地形と雨を合成
$mapImage = imageCreateFromJPEG(MAP_URL);
$ameImage = imageCreateFromGIF(getAmeUrl());
imageCopy($mapImage, $ameImage, 0, 0, 0, 0, MAX_WIDTH, MAX_HEIGHT);
imageDestroy($ameImage);

// 地名を合成
$mskImage = imageCreateFromPNG(MSK_URL);
imageCopy($mapImage, $mskImage, 0, 0, 0, 0, MAX_WIDTH, MAX_HEIGHT);
imageDestroy($mskImage);

// 切り取り
$w = getValue("w", MAX_WIDTH);
$h = getValue("h", MAX_HEIGHT);
$x = getValue("x", 0);
$y = getValue("y", 0);
$resultImage = imageCreate($w, $h);
imageCopy($resultImage, $mapImage, 0, 0, $x, $y, $w, $h);
imageDestroy($mapImage);

// 出力
header('Content-Type: image/png');
imagePNG($resultImage);
imageDestroy($resultImage);
?>
スポンサーサイト

Tag : php gd api 東京アメッシュ

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。