1

おそらくヒルベルト曲線を使用して、ジオハッシュのようなインデックスを使用して地理空間情報を保存することを検討しています。私の質問は、そのようなインデックスでエリア クエリを分割する最善の方法に関するものです。

たとえば、この記事では、エリア クエリを複数のクエリに分割して、地域性の低い範囲をクエリすることを回避する方法を示しています (この画像を参照)。通常のジオハッシュのように Z 曲線を使用して 1 回のクエリで円形領域を検索する場合は、関心のある領域のほんの一部しかない左下象限全体をクエリする必要があります。

この場合、検索をいくつかのクエリに分割することをお勧めしますが、これを行う最善の方法に関する情報を見つけることができませんでした. このような範囲クエリを、元​​の領域をカバーする小さな範囲に分割するアルゴリズムはありますか?

4

1 に答える 1

0

クエリの境界をカバーするハッシュ プレフィックスを特定したら、そのプレフィックスを構成プレフィックスに分割し、それぞれがクエリの境界と交差するかどうかをテストしてから保持します。たとえば、プレフィックス 0100 がクエリ領域をカバーしていると識別したとします。プレフィックス 0100 はプレフィックス 01000 と 01001 で構成され、プレフィックス 01000 はプレフィックス 010000 と 010001 で構成され、プレフィックス 01001 はプレフィックス 010010 と 010011 で構成されます。小さい領域)、クエリの境界と交差しない接頭辞を除外できます。ある時点で分割プロセスを停止する必要があります。分割を繰り返すたびに、プレフィックス コレクションのサイズが 2 倍になる可能性があります。たとえば、フィルタリングに満足していると宣言する時点でのプレフィックス コレクションの最大サイズ。もちろん、停止点を見つけるために使用できる他のメトリックがあります。最後のステップとして、「隣接する」プレフィックスを再結合して、実行する検索の数を減らすことができます。たとえば、接頭辞 01000 と 01001 が残っている場合は、これらを 0100 に結合して、01000 の検索とそれに続く 01001 の検索を回避できます (検索プロセスに順次読み取りを超えるオーバーヘッドがあるという仮定の下での利点)。 . クエリ境界との交差をテストするには、ハッシュ プレフィックスの境界ボックスを計算するためのルーチンが必要です。これは、使用するハッシュ スキームによって異なります。停止点を見つけるために使用できる他のメトリックがあります。最後のステップとして、「隣接する」プレフィックスを再結合して、実行する検索の数を減らすことができます。たとえば、接頭辞 01000 と 01001 が残っている場合は、これらを 0100 に結合して、01000 の検索とそれに続く 01001 の検索を回避できます (検索プロセスに順次読み取りを超えるオーバーヘッドがあるという仮定の下での利点)。 . クエリ境界との交差をテストするには、ハッシュ プレフィックスの境界ボックスを計算するためのルーチンが必要です。これは、使用するハッシュ スキームによって異なります。停止点を見つけるために使用できる他のメトリックがあります。最後のステップとして、「隣接する」プレフィックスを再結合して、実行する検索の数を減らすことができます。たとえば、接頭辞 01000 と 01001 が残っている場合は、これらを 0100 に結合して、01000 の検索とそれに続く 01001 の検索を回避できます (検索プロセスに順次読み取りを超えるオーバーヘッドがあるという仮定の下での利点)。 . クエリ境界との交差をテストするには、ハッシュ プレフィックスの境界ボックスを計算するためのルーチンが必要です。これは、使用するハッシュ スキームによって異なります。プレフィックス 01000 と 01001 が残っているので、これらを 0100 に結合して、01000 の検索とそれに続く 01001 の検索を避けることができます (検索プロセスにシーケンシャル読み取りを超えるオーバーヘッドがあるという仮定の下での利点)。クエリ境界との交差をテストするには、ハッシュ プレフィックスの境界ボックスを計算するためのルーチンが必要です。これは、使用するハッシュ スキームによって異なります。プレフィックス 01000 と 01001 が残っているので、これらを 0100 に結合して、01000 の検索とそれに続く 01001 の検索を避けることができます (検索プロセスにシーケンシャル読み取りを超えるオーバーヘッドがあるという仮定の下での利点)。クエリ境界との交差をテストするには、ハッシュ プレフィックスの境界ボックスを計算するためのルーチンが必要です。これは、使用するハッシュ スキームによって異なります。

于 2013-08-24T01:13:05.120 に答える