2

座標を指定してタイム ゾーン (または GMT や UTC などの「支点」からのオフセット) を返す関数はありますか?

IOW、私はしたいです(「TimeZoneType」がクラスまたは列挙型であると仮定して):

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

-また:

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

この質問をここに投稿するか、gis.stackexchange に投稿するかで迷っていました。アドバイスがあれば、この質問を削除してそこに投稿します...

4

1 に答える 1

1

簡単な質問、大きな答え:

それができる会社は少ないです。iphone は、地理的位置から timeZone を決定できる最初のデバイスでした。私の TomTom Navi でもそれができず、手動で TimeZone オフセットを入力する必要があります。

これを行う方法を次に示します。

  1. navteq "WorldMaps" を xxx ユーロで購入するか、OpenStreetMap を使って安く購入しましょう。後で変換すると、世界の各国のポリゴンが得られます。そのような国は通常、国境を表す 50.000 ポイント以上を持ちます。

  2. そのポリゴンを取得したら、指定された (lat/lon) の countryPolygonId (または countryID) を提供する関数を作成する必要があります。
    (countryId = findCountry(lat, lon); // ポイント イン ポリゴン メソッドを使用

  3. 国を取得したら、次の大都市を見つける必要があります。システムの TimeZone モジュールでサポートされている都市のリストが必要です (これには標準があると思いますが、よくわかりません)。

次に、countryId、cityId を「Austria/Vienna」のような文字列に変換する必要があります。これはあなたの TimeZone であり、TimeZone zt = new TimeZone("Austria/Vienna"); で初期化できます。

これが興味深いものであったことを願っていますが、これを実装し、そのタスクに必要なデータを取得するのは非常に困難です。
別のユース ケースに対して、手順 1 と 2 を実行しました。

于 2012-11-28T20:47:45.197 に答える