12

緯度/経度から GMT (またはタイムゾーン) からのオフセットを推定する方法はありますか? geonames を見たことがありますが、これは長期的に機能する必要があり、実際には Web サービスに依存したくありません。さまざまなユーザーに情報を提供するときに「今日」または「今夜」のどちらを表示するかを決定するために使用されるため、あまり正確である必要はありません (1 時間または 2 時間のオフは悪くありません)。

4

3 に答える 3

26
offset = direction * longitude * 24 / 360

ここで、方向は東が 1、西が -1、経度が (-180,180) です。

于 2009-06-29T13:40:08.953 に答える
1

経度だけに基づいてタイムゾーンを設定することは、公海の外では非常に不正確です。このページの地図を参照してください。

http://askgeo.com/database/TimeZone

深海の縦の色の縞模様は、経度だけから派生したいわゆる自然の時間帯であり、土地の色は、準拠法による実際の時間帯です。まったくうまく並んでいないことがわかります。

私は実際に別のプロジェクトに取り組んでいるときにこの問題に遭遇し、それについてかなりの研究開発を行いました。最初の私の研究:

  • まず、タイムゾーンは通常、GMT(別名UTC)からのオフセットだけでエンコードされません。これは、夏時間と、長年にわたるタイムゾーンの変化を考慮に入れていません。代わりに、タイムゾーンIDを使用して、公式の時刻が特定の期間(たとえば、1970年以降)にわたってエリア全体で同じである地理的エリアを指定します。このようなIDの最も重要なシステムは、Linuxおよびその他のUnixオペレーティングシステムで使用される「OlsonタイムゾーンID」(これらのIDとそのオフセットルールを合わせて「tzデータベース」と呼ばれます)です。ほとんどのプログラミング言語とオペレーティングシステムは、OlsonタイムゾーンIDをネイティブまたはサードパーティでサポートしています。

緯度と経度をタイムゾーンに変換する既存のソリューションに関して:

  • GeoNames.orgには、ポイントの場所(都市、空港、公共の建物などの中心)の膨大なデータベースがあり、各データベースには、OlsonタイムゾーンIDを含む一連の有用なメタデータが注釈として付けられています。また、Web経由でこれらにアクセスできる優れたAPIがあります。問題は、クエリしているポイントがデータベース内のレコードの真上にない場合、タイムゾーンの境界の反対側にある結果が得られるか、クエリがまったく応答しない可能性があることです。最も近いポイントから遠く離れています。Webサービスも非常に低速であり、1日に実行できるクエリの数が比較的少ない数に制限されます。

  • Earth Tools(http://www.earthtools.org/webservices.htm)にもこのサービスがあり、GeoNamesよりもはるかに高速ですが、タイムゾーンIDではなくGMTからのオフセットのみを返します。世界のほとんどの地域で夏時間を正しく処理していません。また、維持されていないようですので、データが正確かどうかはわかりません(タイムゾーンは時間とともに変化します)。

これらのオプションを確認し、成功せずに他の可能性を探した後、私は独自のソリューションを構築することを決定し、次の場所でリリースしました。

http://askgeo.com

AskGeoは世界のタイムゾーンマップに基づいているため、有効な緯度と経度ごとに有効なタイムゾーンを返します。Linuxおよびその他のほとんどのオペレーティングシステムとプログラミングフレームワークで使用される標準のOlsonタイムゾーンID( "America / Los_Angeles"など)を返します。また、夏時間を完全に考慮して、現在のオフセットを返します。

使い方は非常に簡単で、使用法はサイトのメインページに記載されています。APIはバッチクエリをサポートしているため、多くの検索を行う必要がある場合は、シリアルリクエストでサーバーを停止するのではなく、バッチインターフェースを使用してください。一括クエリもはるかに高速なので、誰もが勝ちます。

これを最初にリリースしたとき、Google App Engine(GAE)で構築し、すべてのユーザーが無料で利用できるようにしました。当時GAEの価格が非常に低かったため、これが可能でした。それ以来、サーバーの負荷が大幅に増加し、GAEの価格が大幅に上昇しました。両方の要因が組み合わさって、ホスティングのためにアマゾンウェブサービスに切り替え、非営利、非営利のオープンソースプロジェクト、および研究者のためにサービスを無料に保ちながら、商用利用の課金を開始しました。商用ユーザー向けに、1000の無料クエリを提供して、潜在的な顧客がAPIを評価してニーズを満たしていることを確認できるようにします。価格と条件については、Webサイトを参照してください。

基盤となるライブラリはJavaで記述されており、一般的な需要に応じて、商用ライセンスでライブラリをリリースしました。ライブラリの完全なドキュメントと価格の詳細は、Webサイトにあります。

これがお役に立てば幸いです。それは私が取り組んでいたプロジェクトにとって確かに役に立ちました。

于 2012-05-07T20:51:08.757 に答える
0

ユーザーの経度を知っていれば、ユーザーの時間のあらゆる側面を完全に知ることができます (特殊相対性理論などの小さなエラーを無視します)。平均太陽時は、単純に GMT と経度の差です (度を分に変換すると、1 度 = 60 分になります)。東または西に基づいて加算または減算します。平均太陽時は、基本的にタイムゾーンよりも正確な時間です。昼と夜の時間は変動し、緯度に依存するため、緯度と日付と年を考慮した日の出と日の入りの時間の概算を使用します。これだけで、昼と夜のかなり正確な概念が得られます。

于 2018-06-21T15:35:07.127 に答える