2012-10-30 26 views
2

是否有一個函數會返回給定座標的時區(或者某個「支點」,如GMT或UTC的偏移量)?有沒有函數根據座標返回時區或偏移量?

IOW,我想(假設 「TimeZoneType」 是一類或枚舉左右):

TimeZoneType timeZone = getTimeZoneForCoordinates(<latitude>, <longitude>); 

-or:

int timeZoneDifferential = getTimeZoneOffsetFromUTCForCoordinates(<latitude>, <longitude>); 

我在這裏張貼了這個問題之間徘徊一個gis.stackexchange。如果建議,我會刪除這個問題,並張貼有...

+1

對於什麼語言? – LittleBobbyTables

+0

我沒有看到語言的重要性,但英語是我的GUI所在(至少現在;它可能是全球化/稍後本地化) –

+1

我的意思是*編程*語言,因爲您的問題沒有標記。 – LittleBobbyTables

回答

1

一個簡單的問題,一個大的答案:

有少數公司能夠做到這一點。 iPhone是我知道的第一個可以從地理位置確定時間區域的設備。即使我的TomTom Navi也無法這樣做,我不得不手動輸入TimeZone偏移量。

在這裏你會怎麼做。

  1. 購買一些xxx歐元navteq「WorldMaps」,或使用OpenStreetMap更便宜。 某些轉換稍後您將擁有世界各個國家/地區的多邊形。 這樣的國家通常會有50,000點或更多代表國家邊界。

  2. 一旦你有了這個多邊形,你必須編寫一個函數,給出countryPolygonId(或countryID)給定(緯度/經度)。
    (countryId = findCountry(緯度,經度); //使用多邊形法點

  3. 一旦你的國家,你必須找到下一個大的城市: 你需要有不同的城市名單您的系統(我覺得這是應該是一個常態,但我不知道。)

然後,你必須countryId,cityId轉化爲像「奧地利/維也納」的字符串的時區模塊支持。 這是你的TimeZone,你可以用TimeZone初始化zt = new TimeZone(「Austria/Vienna」);

我希望這很有趣,但這是非常苛刻的實施,並獲得該任務的必要數據。
我已經完成了不同用例的步驟1和2。

+0

TimeZone類具有諸如GetDateTimeUTC(),GetDateTimeLocal(),GetUTCOffset()等功能,所以我估計如果我爲每個用戶存儲UTC時間和UTCOffset,計算給定此UTC時間將會很容易,它是什麼時間用於遠程用戶,以及它是什麼時間用於本地用戶。順便說一句,我六年前在維也納 - 美麗的城市! –

+0

謝謝,我也喜歡我的城市。你的問題是關於時區的座標。您的評論現在與您的OP – AlexWien

+0

不一樣了,對不起。 –