0

バウンディングボックスを実行して、ポイントがスペースの中心の周りにあるジオハッシュされた文字列のトライをクエリします。ポイントが中心点にまたがっているときにトライを照会する良い方法を見つけることができないようです。

各ボックスが1x1である16x16スペースに、座標ごとに4ビット(合計8)の情報があるとします。基本的に、16x16グリッド。

赤い線は、ジオハッシュで使用される四分木の最も粗い分割を示しています。

画像の例

上の図を表すトライ。

bits=4, min=0, max=16, numBuckets=16.0, scaling=1.0, tree={
└── null
    ├── 0
    │   ├── (0110100) 00110100 = {(6, 6), hash=00110100}
    │   └── (1100000) 01100000 = {(6, 8), hash=01100000}
    └── 1
        ├── (0010101) 10010101 = {(8, 7), hash=10010101}
        └── (1000010) 11000010 = {(9, 8), hash=11000010}

バウンディングボックスクエリは、左上のポイントと長さ、幅として定義されます。例:(6,6 4x4)6,66,88,7および9,8を返す必要があります。

私が考えたアプローチの1つは、左上の座標を含む最も正確なボックスから始めて、4x4の正方形をカバーできるようになるまで精度を下げ続けます。しかし、そうすると、この例ではツリー全体にクエリを実行することになります。私はそれを行うための「より良い」方法を見ていません。

4

1 に答える 1

1

トライ構造のノードに追加情報を追加できる場合は、GeoHash エンコーディングを無視して、任意のツリー構造として扱います。葉から作業すると、そのノードの下にあるすべてのポイントを囲む境界ボックスを各ノードの周りに計算できます。次に、ポイント (または領域) を上から下に検索するときに、境界ボックスがクエリ ポイント (または領域) を囲んでいない (または交差していない) ノードで検索を停止できます。

これを更新し続ける余裕がある場合は、検索ポイントまたはエリアが、実際にはノードの下にあるすべてのポイントを囲む境界ボックスの内側にない (または交差しない) 場合に得られます。いくつかの点が重なる可能性があります 理論的にはその領域へのジオハッシュが可能です

于 2013-01-30T20:12:17.310 に答える