看天氣的好助手,即時衛星雲圖 (動畫 + 可自由輸入時間版)

change log
2007.08.24:初使版本。
2007.10.02:修正在blogger無法顯示的問題。
2008.10.15:因中央氣象局修改雲圖網址,故修正部份程式碼
2009.07.14:修改程式碼,以截取中央氣象局的新版雲圖資訊

之前海芋曾經說過,在硬是要學中看到好手大大實做衛星雲圖,而海芋今天沿著此構想,將程式碼重寫,並且加入了中國大陸及香港的衛星雲圖。

而此次,並不再動畫版和非動畫版,但海芋仍然有替大家分開準備,但分開準備的版本不能並存,這點請千萬要注意!

至於此次的程式,使用者可以自由輸入要觀測的時間,如3小時等等,再按〔更改〕鈕即可更改,但因台灣連中國大陸的頻寬較慢,所以如果點選中國大陸的衛星雲圖,可能要有心理準備喔!

而預設的長度和寬度一樣是250*250,一樣是從width和height改數字,至於顯示時間,也是預設以12小時的雲圖,若您要更改數值,請自行更改。

說了這麼多,趕緊給大家程式碼吧,首先先給大家的,是可自由輸入顯示時間及選擇地區的程式碼!

<script src="http://kaiuisme0120.googlepages.com/weather_global.js"></script>
<a href="http://inote.tw/"><img onload="getSatelliteURL(12,0)" src="http://bp3.blogger.com/_FK45VGwW6no/RsrmkpmdFqI/AAAAAAAADec/oKBD-l1YOy0/s400/%E6%9C%AA%E5%91%BD%E5%90%8D.GIF" style="display:none"/></a><a target="_blank" id="satellite" href="http://www.cwb.gov.tw/V5/observe/satellite/sat.htm#top"><img width="250px" height="250px" name="picSatellite" /></a>
<form>
<input type="radio" name="satelliteChoice" value="0" checked onclick="StopSatellite(this.form.changeTime.value,this.value)">台灣
<input type="radio" name="satelliteChoice" value="1" onclick="StopSatellite(this.form.changeTime.value,this.value)">中國
<input type="radio" name="satelliteChoice" value="2" onclick="StopSatellite(this.form.changeTime.value,this.value)" >香港
<input type="radio" name="satelliteChoice" value="3" onclick="StopSatellite(this.form.changeTime.value,this.value)" >東亞
<input type="radio" name="satelliteChoice" value="4" onclick="StopSatellite(this.form.changeTime.value,this.value)" >全球
<div>
連續顯示<input type="text" size="2" name ="changeTime" value="12">小時的雲圖
<input type="button" value="更改 " onclick="StopSatellite(this.form.changeTime.value,'satelliteChoice')"></div>
</form>
<div align="right">Power by <a target="_blank" href="http://www.inote.tw/2007/08/blog-post_24.html">海芋小站</a></div>

因為這是放在海芋的GooglePages,因為有流量限制,所以可以的話,請幫忙分流喔,不然可能常常會看到叉燒包,冏!
若要更改圖片的寬度,請更改width值,若要更改圖片的長度,則請更改height值。預設為250*250。
JS檔下載網址:http://kaiuisme0120.googlepages.com/weather_global.js

或者將以下的內容,存為JavaScript檔案,記得存成UTF-8編碼,再放到自己的網路空間。

//Author Site:http://www.inote.tw/
//Author:海芋
var satelliteArrayCount = 0;
var showSatelliteImglength;
var satellite = new Array();
var satelliteCache = new Array(200);
var satelliteCacheNumber = 0;
var satelliteId;

function getSatelliteURL(picNumber, map)
{
if(date) delete date;
var date = new Date();
var dYear = date.getFullYear();
var dMonth = date.getMonth();
var dDay = date.getDate();
var dHour = date.getHours();
var dMin = date.getMinutes();
var picURL;
var PostfixURL = ".jpg";
var delayTime = 30;

if (satelliteCacheNumber > 200)
satelliteCacheNumber = 0;

if(map == 1)
{
picURL = "http://www.cma.gov.cn/tqyb/images/forecast/products/yuntu/l/sevp_nsmc_wxcl_asc_fff_achn_ffff_py_";
PostfixURL = "fffff.jpg";
document.getElementById("satellite").href="http://www.cma.gov.cn/tqyb/nephogram.html";
}
else if(map == 2)
{
picURL = "http://www.hko.gov.hk/wxinfo/intersat/mtsat_400/";
PostfixURL = "30mtsat_7_36Ne.png";
document.getElementById("satellite").href="http://www.hko.gov.hk/wxinfo/intersat/satpicc_s.shtml";
}
else
document.getElementById("satellite").href="http://www.cwb.gov.tw/V6/observe/satellite/sat.htm#top";

if (map != 1)
{
date.setMinutes(date.getMinutes()- delayTime);
delayTime = 60;
}
else
{
date.setMinutes(date.getMinutes()- 480);
delayTime = 30;
date.setMinutes(date.getMinutes()- delayTime);
}

for(var i=0;i<picNumber;i++)
{
if (map == 1)
{
for (var j=0;j<2;j++)
{
picURL = "http://www.cma.gov.cn/tqyb/images/forecast/products/yuntu/l/sevp_nsmc_wxcl_asc_fff_achn_ffff_py_";
dYear = date.getFullYear();
dMonth = date.getMonth();
dHour = date.getHours();
dMin= date.getMinutes();
dDay = date.getDate();

if(dMin >= 30) dMin = "30";
else dMin = "00";

if (++dMonth < 10) dMonth = '0' + dMonth;
if (dHour < 10) dHour = '0' + dHour;
if (dDay < 10) dDay = '0' + dDay;
picURL = picURL + dYear+ dMonth+ dDay+ dHour+ dMin + PostfixURL;

satelliteCache[satelliteCacheNumber]= new Image();
satelliteCache[satelliteCacheNumber++].src = picURL;
satellite.push(picURL);
date.setMinutes(date.getMinutes()- delayTime);
}
}
else
{
dYear = date.getFullYear();
dMonth = date.getMonth();
dHour = date.getHours();
dDay = date.getDate();

if (++dMonth < 10) dMonth = '0' + dMonth;
if (dHour < 10) dHour = '0' + dHour;
if (dDay < 10) dDay = '0' + dDay;

if (map == 2){
picURL = "http://www.hko.gov.hk/wxinfo/intersat/mtsat_400/";
dMin="01";
picURL += "" + dYear + dMonth + dDay + dHour + dMin + "+";
date.setMinutes(date.getMinutes()- 540);

dHour = date.getHours();
dDay = date.getDate();

if (dHour < 10) dHour = '0' + dHour;
if (dDay < 10) dDay = '0' + dDay;

picURL += "" + dDay + dHour + PostfixURL;

date.setMinutes(date.getMinutes()+ 540);
}
else
{
picURL = "http://www.cwb.gov.tw/V6/observe/satellite/Data/";

if(map == 0) picURL += "s3p/s3p-";
else if(map == 3) picURL += "s1p/s1p-";
else picURL += "s0p/s0p-";

picURL += "" + dYear + "-" + dMonth + "-" + dDay + "-" + dHour + "-00"+PostfixURL;
}
satelliteCache[satelliteCacheNumber] = new Image();
satelliteCache[satelliteCacheNumber++].src = picURL;
satellite.push(picURL);

date.setMinutes(date.getMinutes()- delayTime);
}
}

if (picNumber == 1)
document.images.picSatellite.src = satellite.pop();
else
{
satelliteArrayCount = 0;
satelliteId = setTimeout("showSatelliteImg()",1000);
}
}
function showSatelliteImg()
{
showSatelliteImglength = satellite.length-1;
satelliteArrayCount--;
if (!(satelliteArrayCount+1))
satelliteArrayCount = showSatelliteImglength;
document.images.picSatellite.src=satellite[satelliteArrayCount];
satelliteId = setTimeout("showSatelliteImg()",1000);
}

function StopSatellite(picNumber,map)
{
var satelliteChoice;
for (var i = 0; i <satelliteCacheNumber; i++)
{
if(satelliteCache[satelliteCacheNumber])
delete satelliteCache[satelliteCacheNumber];
}
while (satellite.pop());

if (isNaN(map))
{
satelliteChoice = document.getElementsByName(map);
for(var i=0;i<satelliteChoice.length;i++)
{
if(satelliteChoice[i].checked)
map = satelliteChoice[i].value;
}
}

if(satelliteId)
clearTimeout(satelliteId);

if(isNaN(picNumber))
picNumber = 12;
else
{
if (picNumber > 48) picNumber = 48;
else if(picNumber <=0) picNumber = 12;
}
getSatelliteURL(picNumber,map);
}

然後,再將<script src="http://kaiuisme0120.googlepages.com/weather_global.js"></script>,改為<script src="您的網路空間檔案路徑"></script>即可。

相關實驗連結:

10 Comments:

紅荳媽 October 03, 2007 11:45 AM  

謝謝海芋的大方分享^^
通通打包帶回家去^^
這樣子,我也有一個衛星雲圖囉^^
謝謝你!!

PS:我已經將您的程式檔放在我的空間做分流了^^

紅荳媽 October 04, 2007 11:38 AM  

請問:
我可以引用您的文章嗎?
謝謝^^

需仁 October 04, 2007 10:23 PM  

感謝海芋的分享,同時也把JS檔案放到我的網路硬碟分流,再次感謝^^

潛水夫 January 28, 2008 3:56 PM  

海芋大的東西真酷,
我也把JS檔案放在我的空間做分流了
真的很謝謝你!!

alina May 19, 2009 9:13 PM  

謝謝你的分享^__^
我打包回家了

Anonymous,  July 14, 2009 10:58 PM  

無名能用嗎??

海芋 July 14, 2009 11:18 PM  

無名,當然不行,丟掉無名吧

Post a Comment

1.本留言處歡迎多加留言交流,但不歡迎垃圾留言及廣告留言
2.留言時可以使用部份HTML標記,例如<b>, <i>, <a>
3.對於教學文章介紹或軟體使用有問題歡迎提出,若站長沒回應表示不清楚該問題的解決方案
4.站長保留不當刪除留言的權力,若造成不便尚請見諒

Blog Archive

  © Free Blogger Templates Blogger Theme II by Ourblogtemplates.com 2008

Back to TOP