PHP と JavaScript を使用して地球の衛星写真を表示する

ひまわり8号気象衛星は、宇宙航空研究開発機構が設計・製造するひまわりシリーズの衛星の1つで、重さは約3,500kg、設計寿命は15年以上です。2014年10月7日にH2Aロケットで打ち上げに成功し、主に雨雲や台風の動き、噴火が続く火山の監視など防災分野で活用されている。-- 百度百科事典

日本はこの衛星を打ち上げた後、防災に活用するだけでなく、撮影した地球の写真をインターネット上に公開し、愛好家がダウンロードできるようにした。写真公開の公式サイトは http://himawari8.nict.go.jp/で、10分ごと(9:30、9:40…など)に更新され、30分遅れとなります( 10:00にご覧いただけます)写真は実際に9:30に撮影したものです)。

次に、これらの衛星写真を取得する方法を検討します。ブラウザのアクセス監視機能を通じて、要求されたアドレスを確認できます: (クリックして拡大)

/usr/uploads/2016/06/1359531479.png

この例では、リクエスト アドレスは です 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を構築してみてください。

おすすめ

転載: blog.csdn.net/muzihuaner/article/details/132519895