境界ボックスのジオハッシュを取得するにはどうすればよいですか?


8

5m x 5mのジオハッシュ値の大規模なコレクションを保存しています。このコレクションをクエリして、特定のgeorect内にあるすべてのgeohash値を検出できるようにしたいと思います。これは、2つの緯度ポイント(NWポイントとSWポイント)によって定義されます。

私が理解していないのはこれです:データストアにすべての場所があるとしましょう(各場所の緯度、経度、ジオハッシュ(高精度))。

geohashのプレフィックスを使用する必要があることはわかっていますが(内の場所を一致させるため)、境界ボックスのgeohashを計算するにはどうすればよいですか?境界ボックスが北東と南西の2つのポイントで構成されていることを考えると、これを行う方法がわかりません。

現在表示されているバウンディングボックスに対して返される場所を照会するには、表示/表示可能なバウンディングボックスのgeohashが必要です-表示可能なマップ上の中心位置をgeohashできることはわかっていますが、方法がわかりません実際の境界ボックスへの「適合」を達成するために(精度を下げるために)切り捨てる多くの文字。(または、それはおそらく方法ではありません...?)

バウンディングボックスコンテナーがジオハッシュするときに何をしますか?(表示可能領域の中央にあるように、「dqcjr0」と「dqcjqb」の間で分割されます)

また、5文字のgeohashがあるとしましょう。これを表示可能な境界ボックスに戻すにはどうすればよいですか?または言い換えれば、ハッシュに「含まれている」もの、および隣接するハッシュに含まれているものを知るにはどうすればよいですか?

回答:


2

以下は私が見つけた解決策の1つです。

geohashには12のレベルがあります。サイズから変化
5,009.4km X 4,992.6kmレベル1まで
3.7センチメートルX 1.9センチメートルレベル12

まず、レベルを修正する必要があります。

境界ボックスの中心点を取得します。中心からの最大距離とジオハッシュサイズがわかったら、ボックス内のグリッドポイントを距離(ジオハッシュサイズ)で見つけます。

グリッドポイントをgeohashに変換します。

同様のことを行う私のオープンソースプロジェクトのリンクを共有します。(コードをプッシュする前に、いくつかの改善が必要です:-))

2番目の質問では、geohashをペアに戻すと、geohash領域の中心*(長方形の領域)*が得られます。

そのレベルのgeohashのサイズを考えると、境界ボックスを取得できます。

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.