2007年11月18日 星期日

由經緯度可以算出time zone及日出日落時刻

之前想過的點子, 如何製造出全球的"虛擬"真實景象, 現在又有進一步發展。不過在搜尋資料的同時, 我發現一個很有意思的網站, 先介紹一下, 它叫humanclock, 它是集合各式各樣照片, 上面有時、分標記的照片, 再把這些照片按現在時間撥放出來, 我覺得它很有意思, 有興趣的人還可上傳自己的humanclock照片給站長:




好了, 我們回歸正題, 由 Google Maps 的click 事件, 我們可以拿到click 點的經緯度latlng資料, 但是經緯度如何再換算成當地時間呢? 這個問題困擾我好多天, 查了很多時區的資料, 但是其實真實的時區資料其實是相當複雜, 不少國家或地區採用的時區跟它所在經度是差異很大, 就像中國/新加坡/智利...等等, 這些種種例外, 讓絕大部分的時區資料庫或時區查詢網站, 都以"城市/國家地名"來對應時區, 所以都是以城市查詢時區。例如:
http://www.timeanddate.com/worldclock/

有小部分網站有做到以經緯度查當地時間, 但是當你click到的地區是在無人的海洋就會有問題, 一般的作法會抓取最接近的城市來代替, 但是有可能方圓幾百公里內都沒有大城市, 那得到的資料就會失真了。例如:
http://www.gchart.com/

剛剛找到一個單靠(經緯度)資料即可算出(時區/日出日落時間)的javascript, 做得相當好, 它解決了我一大部分的問題:
http://www.csgnetwork.com/sunriseset.html

但是它的經緯度計算時區, 我相信應該不太準啦, 不過它計算出來的日出/正午/日落時間對我們的點子卻幫助相當大, 而且它只單靠Javascript就完成運算, 不須額外的web service 或database, 對我們來說更簡單易用。稍後我們會嘗試地改寫它的功能到google maps裡試試看。

接下來, 我想把氣象資料(現在、及預測)也連結進來, 這個可能會更複雜一點, 等我資料搜集好會在po上來。

1 則留言:

匿名 提到...

普及一些高中的地理知识:
某地时区数=该地经度÷15,对商取整数部分,尾数部分四舍五入;