質問「 Webを使用せずに緯度/経度からタイムゾーンを決定する」で提案されているように、タイムゾーンの代わりにジオネームWebサービスを使用するには、Javaでの商用に適した(Apache Licence、LGPL、Mozilla Public Licenseなど)Rツリーの実装が必要です。Geonames.orgのようなサービス"。私は周りにいくつかを見つけましたが、誰かが実際にそれらを評価または使用したかどうか疑問に思いました。
3 に答える
https://github.com/rweeks/util/blob/master/src/com/newbrightidea/util/RTree.java - Russ Weeks による R-Tree の LGPL 実装。非常にシンプルで明確に見え、外部ライブラリに依存していません。
http://www.mischiefblog.com/?p=171 http://www.mischiefbox.com/blog/uploads/rtree.jar Chris Jones による R-Tree の LGPL 実装。別のシンプルで明確なソリューション。
http://www.khelekore.org/prtree/ Robert Olofsson によるPriority R-Tree の CPL 1.0 実装
http://jsi.sourceforge.net/ LGPL - プロジェクトは、RTree 空間インデックス作成アルゴリズムの高性能 Java バージョンを維持することを目的としています。
まず、指定された座標から最も近い都市を検索すると、同じタイムゾーンにない可能性があることを指摘しておきます。私の意見では、あなたが本当に必要としているのは、それに関する行政上の所属に関する情報です。最低限は国ですが、場合によってはそれ以上、つまり州である必要があります。その情報は、Google Maps APIを使用して取得し、より詳細なTZ情報に関連付けることができます。
GeoNamesの無料の代替手段であるEarthToolsがあります。サービス自体にはいくつかの制限(リクエストの数など)がありますが、それでもそれは良好で、テストされ、私にとっては問題なく機能しています。
第二に、GeoNamesの無料の代替手段であるEarthToolsがあります。サービス自体にはいくつかの制限(リクエストの数など)がありますが、それでもそれは良好で、テストされ、私にとっては問題なく機能しています。
第三に、データをDBにインポートすることに関心がある場合、現在のDB実装のほとんどは、使用できる地理空間インデックスを提供します。アプリケーションにその情報を埋め込む必要がある場合は、H2Spatialを追加してH2Database(Java DBを埋め込んだもの)を使用できます。試してみましたが、完全にはお勧めできません。Neo4jには優れた空間インデックスの実装があります
さらに、 GeoSpatial検索にSolrを使用できます。それは素晴らしいです、それは速くて、そしてそれは実行するのが簡単です。私は実際、DB検索をSolrに移行するプロセスの途中です...
最後になりましたが、以下に、私がしばらく前にテストしたもののいくつかを示します。
おそらくもう少しありますが、私がこれまでにテストしたものは...
私が作成した RTree シンプルな Java クラス: https://github.com/hadmir/rtree/blob/master/RTree.java
すべてのオブジェクトは 2 つの int[] 配列内に格納されるため、(ファイルに) 永続化するのは非常に簡単です。また、新しい四角形を追加してもオブジェクトが作成されないという事実は、何百万もの四角形を RTree に挿入でき、JVM が燃え尽きることがないことを意味します。これは、オブジェクト数が通常膨大な地理プロジェクトに役立ちます。
2D の四角形のみが格納されます (したがって、複雑なオブジェクトの場合、外接する四角形を見つける必要があります)。クエリは、「クエリ四角形」と交差または重複するすべての四角形 (四角形の ID) を返します。