ひまわり8号気象衛星は、宇宙航空研究開発機構が設計・製造するひまわりシリーズの衛星の1つで、重さは約3,500kg、設計寿命は15年以上です。2014年10月7日にH2Aロケットで打ち上げに成功し、主に雨雲や台風の動き、噴火が続く火山の監視など防災分野で活用されている。-- 百度百科事典
日本はこの衛星を打ち上げた後、防災に活用するだけでなく、撮影した地球の写真をインターネット上に公開し、愛好家がダウンロードできるようにした。写真公開の公式サイトは http://himawari8.nict.go.jp/で、10分ごと(9:30、9:40…など)に更新され、30分遅れとなります( 10:00にご覧いただけます)写真は実際に9:30に撮影したものです)。
次に、これらの衛星写真を取得する方法を検討します。ブラウザのアクセス監視機能を通じて、要求されたアドレスを確認できます: (クリックして拡大)
この例では、リクエスト アドレスは です http://himawari8-dl.nict.go.jp/himawari8/img/D531106/2d/550/2016/06/14/140000_0_1.png
。アドレスにはいくつかの重要なパラメータがあります。
- 2次元
- 画像の鮮明さを表します。2d は画像を 2x2 の 550px x 550px の写真に分割し、合計解像度は 1100px x 1100px になります。ちなみに、このウェブサイトの最大解像度は20d、つまり11000px x 11000pxの解像度です。もちろん、ネットワークが優れている場合以外は試さないでください。
- 2016/06/14
- 分かりやすいのは日付ですね。
- 140000
- 画像に対応する UTC 時間です。UTC であることに注意してください。この例のアドレスは、ダウンロードした画像が北京時間の午後 22:00 に撮影され、22:30 に公開されたことを示しています。
- 0_1
- は画像に対応する座標で、2 つのパラメータは 0 から数えた列数と行数です。この例では、要求された画像は最初の列と 2 行目です。
これらのパラメーターの機能が理解できたので、コードの作成を開始できます。次の PHP コードは、合計 4 枚の 2D 画像を表形式で出力します。
<?php
function getHimawariUrl($d = 1,$x = 0, $y = 0){
date_default_timezone_set('UTC');
$pictime = time() - time() % 600 - 1800;
$date = date('Y/m/d/Hi',$pictime);
return "http://himawari8-dl.nict.go.jp/himawari8/img/D531106/".$d."d/550/".$date."00_".$x."_".$y.".png";
}
function writeHimawariTable($d=1){
echo '<table style="margin:0;padding:0;cell-spacing:0">';
for($i=0;$i<$d;$i++){
echo '<tr>';
for ($j=0;$j<$d;$j++){
echo '<td><img src="'.getHimawariUrl($d,$j,$i).'" /></td>';
}
echo '</tr>';
}
echo '</table>';
}
writeHimawariTable(2);
?>
次の JavaScript (jQuery サポートが必要) は 1d の画像を出力し、プレビューはこのページで見ることができます。
<script>
$(document).ready(function(){
var today = new Date();
// get date for himawari picture
t = today.getTime();
t = t - t % 600000 - 1800000;
today.setTime(t);
year = today.getUTCFullYear();
month = today.getUTCMonth() + 1;
day = today.getUTCDate();
hour = today.getUTCHours();
minute = today.getUTCMinutes();
if(month<10) month = '0' + month;
if(day<10) day = '0' + day;
if(hour<10) hour = '0' + hour;
if(minute<10) minute = '0' + minute;
$('#himawari-time').text(today.toLocaleString());
$('#himawari-pic').attr('src','//himawari.xuyh0120.win/1d/550/'+year+'/'+month+'/'+day+'/'+hour+minute+'00_0_0.webp');
})
</script>
<p id="himawari-time">加载速度稍慢,请稍候……</p>
<img id="himawari-pic" src="" />
このプロジェクトの写真を使用する場合も注意してください。この写真公開プロジェクトは非営利であるため、いかなる保証も提供しません。いつか API が変更されるか、あまりにも多くの人がこれらの衛星写真を使用するため、ウェブサイトがダウンする可能性があります。トラフィックが基準を超えて Web サイトにアクセスできなくなるなど、すべての可能性があります。この衛星写真に基づいた他のいくつかのソフトウェア プロジェクト、 EarthLiveSharpおよびMantou Earth では、作成者が独自に CDN をセットアップして、発信元サイトへの負担を軽減しました。
そこで、画像をキャッシュして WebP 形式に変換するための独自の CDN を構築しました。IE と Firefox で WebP をサポートするには、記事「IE と Firefox で WebP 画像形式をサポートする」を参照してください。
Web サイトのデータ ソース URL を himawari8-dl.nict.go.jp
独自のドメイン名に直接 CNAME 化し、CDN を追加することができます。ですので、皆さんも利用する際はリクエスト頻度に注意して、独自のCDNを構築してみてください。