2009-06-29 58 views
11

有沒有一種方法可以估算經度/緯度與GMT(或時區)的偏移量?我已經看到了geonames,但是這需要長期工作,我們並不真的想依靠Web服務。它只是用於確定在向各種用戶提供信息時是否顯示「今天」或「今晚」,因此它不需要太準確(一兩個小時或兩小時不會太差)。從GMT經緯度的時間偏移的粗略估計

回答

23
offset = direction * longitude * 24/360 

哪裏方向1對東,-1西部,經度爲(-180,180)

+0

這很酷,不認爲它會那麼簡單,但到目前爲止它看起來相當準確。 謝謝。 – ravun 2009-06-29 13:52:13

1

立足的時區上單獨經度是國際水域以外的極不準確。此頁面上看到的地圖:

http://askgeo.com/database/TimeZone

深海垂直的彩色條紋是從經度單獨產生的所謂的自然時區,土地的顏色是按照實際的時區治理法律。你可以看到他們的排隊並不好。

我在處理不同的項目時遇到了這個問題,並對其進行了大量的研究和開發。首先我的研究:

  • 首先,時區通常不是由GMT(即aka UTC)的偏移量編碼。這沒有考慮到夏令時和多年來時區的變化。相反,時區ID用於指定在給定時間段內(例如自1970年以來)在整個區域內官方時鐘時間已經相同的地理區域。這些ID最重要的系統是「Olson時區ID」(這些ID及其偏移規則一起稱爲「tz數據庫」),Linux和其他Unix操作系統使用這些ID。大多數編程語言和操作系統都具有Olson時區ID的本機或第三方支持。

在現有的解決方案,以經緯度轉換時區方面:

  • GeoNames.org具有點位置的一個龐大的數據庫(城市,機場,公共建築等的中心) ,其中每個都用一堆有用的元數據註釋,包括Olson時區ID。他們有一個很好的API讓你通過網絡訪問這些API。麻煩的是,如果除非你查詢的點在數據庫中的記錄之上,否則你可能會得到一個位於時區邊界另一端的結果,或者如果你的查詢可能沒有響應離他們最近的點很遠。 Web服務的速度也很慢,並且它們可以將您在一天中可以查詢的查詢數量限制爲相對較小的數量。

  • 地球工具(http://www.earthtools.org/webservices.htm)也有這方面的服務,它比GeoNames快得多,但它只返回一個GMT偏移量,而不是時區ID,並且它不能正確處理世界大部分地區的夏令時。此外,它似乎不被維護,所以我不確定數據是否準確(時區隨時間變化)。

審查這些選項和搜索沒有成功的其他可能性之後,我決定建立自己的解決方案,併發布了它:

http://askgeo.com

AskGeo是基於一個時區地圖上因此它會爲每個有效的經度和緯度返回有效的時區。它返回在Linux和大多數其他操作系統和編程框架上使用的標準奧爾森時區ID(例如,「America/Los_Angeles」)。它還會返回當前偏移量,並充分考慮夏令時。

這是非常容易使用和使用記錄在網站的主頁上。該API支持批量查詢,因此如果您需要進行大量查詢,請使用批處理接口,而不是通過串行請求阻塞我們的服務器。批量查詢也快得多,所以每個人都會贏。

當我們首次推出這款產品時,我們將其構建在Google App Engine(GAE)上,並免費向所有用戶提供。這是可能的,因爲當時GAE的價格非常低。從那時起,我們的服務器負載大幅增加,GAE的價格上漲。這兩個因素的結合導致我們轉向亞馬遜網絡服務託管並開始收取商業用途費用,同時爲非營利性,非商業性開源項目和研究人員免費提供服務。對於商業用戶,我們提供1000個免費查詢,讓潛在客戶評估API以確保滿足其需求。查看網站的價格和條款。

底層庫是用Java編寫的,由於大衆的需求,我們還根據商業許可發佈了該庫。圖書館和定價細節的完整文檔在網站上。

我希望這是有用的。這對我正在進行的項目非常有用。