10

ジオハッシュ文字列の長さが長いほど、より正確になります。しかし、長さが 7 の場合、100 メートルの精度を提供するなどの直接的な関係はありますか?

つまり、2 つの geohash (およびそれらのバウンディング ボックスのいずれか) が最初の 7 文字が一致している場合、両方とも 100 メートル近くあるはずですか?

特定のジオハッシュのすべての近くの場所を距離とともに見つけるためにジオハッシュを使用しています

また、2つのジオハッシュ間の距離を計算する直接的な方法はありますか? (1 つの方法は、それらを緯度/経度にデコードしてから、距離を計算することです)

ありがとう

4

5 に答える 5

16

ジオハッシュに関して多くの混乱を見たので、これまでの理解を投稿しています。geohash の背後にある原則は非常に単純で、独自のバージョンを作成できます。たとえば、次のジオポイントを検討してください。

156.34234534、-23.343423345

上記の例では、156 は度を表し、10 進数の後の 2 桁 (34) は 10 進数の分と休符を表し、(34.5334) は秒を表します。

赤道での地球の円周は約 40,000 km であり、地球の周りの度数 (緯度または経度) は 360 です。したがって、最も広い点では、緯度と経度のスパンの各度は約 110 km (40,000/360) に等しくなります。 )。

したがって、上記の座標を "156-23" (マイナス記号を含む) としてエンコードすると、(110kmx110km) ボックスが得られます。

続けて精度を上げることができます。1 分の 1 桁目 (156.3-23.3) で (10kmx10km) ボックスが得られます (各分のスパンは 1km に相当します)。

これを増やして、取得する秒の最初の桁 (100mx100m) ボックスを含めます。余分な桁ごとに精度がさらに向上します。ジオハッシュは、上記の図をエンコードされた形式で表現する方法にすぎません。上記の形式も問題なく使用できます。

于 2012-12-27T15:44:09.973 に答える
15

これについては私自身興味がありました。誰にとっても良い場合は、ここにスプレッドシートをまとめました 。100% 正しいとは限りません。問題が見つかった場合は、お気軽にコメントしてください。

下のグラフから判断すると、6 桁から 10 桁を使用すると、緯度 60 度で ~1km ~ ~1m の精度が得られます。 ここに画像の説明を入力

于 2014-05-10T00:46:52.163 に答える
4

長さ n 文字の geohash の高さと幅 (度単位) の式は次のとおりです。

最初にこの関数を定義します。

    n が偶数の場合、parity(n) = 0、それ以外の場合は 1

それで

    高さ = 180 / 2 (5n-パリティ(n))/2

    幅 = 180 / 2 (5n+パリティ(n)-2)/2

これは高さと幅の度数のみであることに注意してください。これをメートルに変換するには、ハッシュが地球上のどこにあるかを知っている必要があります。

Java でのこのコードはhttp://github.com/davidmoten/geoにあります。

于 2013-06-28T04:05:01.957 に答える
2

また、2つのジオハッシュ間の距離を計算する直接的な方法はありますか? (1 つの方法は、それらを緯度/経度にデコードしてから、距離を計算することです)

それがあなたがすべきことです。印刷された 10 進数のペアも同様であるため、ジオハッシュは緯度と経度の単なる別の表現と考えてください。緯度と経度の文字列のペアを渡した場合は、それらを (選択したプログラミング言語で) 数値に解析してから、計算を行います。ジオハッシュの場合も同じです。緯度と経度にデコードしてから計算します。

ポイントのペア間の共通のプレフィックスの長さに基づいて近さを推測しようとしている理由には十分注意してください。長い一般的な接頭辞がある場合、それらは近いですが、その逆は当てはまりません! -- つまり、共通のプレフィックスを持たない 2 つのポイントは、1 ミリ離れている可能性があります。

于 2012-11-19T17:04:28.557 に答える
2

これは、特定の精度を持つ緯度/経度のペアの最適なジオハッシュの長さを概算できる式 (疑似コード) です。

geohash_length = FLOOR ( LOG_2(5000000/precision_in_meters) / 2,5 + 1 )
if geohash_length > 12 then geohash_length = 12
if geohash_length < 1 then geohash_length = 1

これを使用して、デーモンが受信したデータから最適な Geohash を作成しました。これは、との値gpsdを介して精度情報も提供します。epxepy

于 2016-03-31T22:14:01.717 に答える