問題タブ [r-tree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - libspatialindex は単純な更新のために再シリアル化する必要がありますか?
次の機能を備えたデスクトップアプリケーション用のacまたはc ++ライブラリを探しています(サーバークライアントなし、ディスクに保存されたデータのみを編集する必要があります)
- 空間クエリが高速になるように空間データを仮想メモリに格納します
- 必要に応じて、スマートな更新方法で同等のデータをディスクに保持できます。更新は即時である必要はありませんが、バッファリングできます。
. libspatialindex は要件を満たしているようです。しかし、この Web ページからは明らかでないことが 1 つあります。たとえば、ディスクから大量のデータをロードして、小さなオブジェクトだけを更新したいとします。libspatialindex はデータ全体を再シリアル化してディスクに書き込みますか、それとも変更が必要な部分だけを更新するのが賢明ですか?
RTree を使用した sqlite はこれを達成しているようです。ただし、SQL の全体ではなく、単純な C++ ライブラリが必要です。
他に代替手段はありますか。GEOS にはスマート ディスク イメージの更新機能がありますか?
c++ - MyDataStream stream(argv[1]) にオブジェクトとして渡される入力データ ファイルの形式
R ツリー インデックスを作成するために「libspatialindex」ライブラリを使用しています。私のデータは次の値を持つ 2 次元です。
データの説明は次のとおりです。
上記のデータを R-Tree に一括ロードしようとしています。そのために、libspatialindex の次のテスト コードを使用しています。ただし、オブジェクトとして * MyDataStream stream(argv[1]);に渡される入力データ ファイルの形式がどうあるべきかについてはわかりません。*
私が使用しているテストコードは次のとおりです。
c++ - 2D 線分を処理する効率的な方法
2D 線分の膨大なセットがあります。だから、私は知っています。各ライン セグメントのライン番号、開始 (X、Y、Z) と終了 (x、Y、Z)。特定の線分の近接線分を取得したい。すべての場合も同様です。
近接を見つけるために、これを適用できます
私のデータを言うと、それは次のとおりです。
したがって、最後に、線分ごとに近接線をベクトルとして取得したいと考えています。このタイプのベクトルのベクトルは、r-tree データ構造で取得できると聞きました。私はそれを検索していましたが、それでも私に関連するものを見つけることができませんでした. また、私はopencvを調べました.Rツリーがありますが、分類子とトレーニングフェーズについて何かを言っています...だから、私には合わないと思います。
行番号を取得する方法を知っている人はいますか? 次に、 exの隣接行を取得します。
1 = {2,4,,7,66,32,12}
2 = {1,4,5,6}
3 = {...} .. .. このタイプのベクトルは r-tree を使用しています。
このタイプのベクトルは、kd-tree を使用して取得できます。ただし、ポイントデータ用に設計されています。したがって、この場合に kd-tree を使用するのは難しいと思います。助けてください、ありがとう。
algorithm - 多次元データのディスク ベースのインデックス作成
多次元データにディスクベースのインデックスを使用したいと考えています。できるようになりたい
- 範囲検索の実行 - (アプリケーション使用率の 10 - 20%)
- 検索の高速化 - (80%)
データ サイズ (GB のオーダー) とレコード数 (10 億のオーダー)
より具体的には、R-Tree や X-Tree のようなものを実装したいと考えています。しかし、B-Tree を使い始めるのは良い考えだと思いました。すべてのデータベースは B ツリーの非常に効率的な実装を提供しますが、設計を調整し、可能なアプリケーション ベースのヒューリスティックを設計に追加できるようにしたいので、独自のものを実装するか、いくつかのライブラリを出発点として使用することを好みます。 .
ライブラリへのポインタや提案は非常に役立ちます。前もって感謝します
database - r*ツリーの再挿入
再挿入はどのように機能しますか?再挿入するエントリを選択すると、挿入アルゴリズムを再度実行しますか?したがって、再挿入されたエントリはツリーのどこにあってもかまいませんか?または、これらのエントリは兄弟の葉にのみ存在できます。実際、再挿入した葉と同じ親を持つ葉にのみ存在できますか?
c# - IComparer の問題
奇妙な問題があり、その理由を追跡する手がかりがありません。私の問題を明確に説明しようとします。
私は RTree クラスを持っています。このクラスでは、2 つの四角形を比較したいので (ここではエンベロープと呼び、minX、minY、maxX、maxY が含まれています)、次のような比較クラスがあります。
この比較子を使用すると、エンベロープの ArrayList を維持して簡単に並べ替えることができます。エンベロープはランダムに追加されます。次のコードを呼び出して、
IComparer.Compare() メソッドが一貫性のない結果を返すため、並べ替えできません。値がそれ自体と比較されないか、ある値を別の値と繰り返し比較すると異なる結果が得られます。
ここが奇妙な部分です。このエラーは、VistualStudio をインストールしない .net 4.0 でのみ発生します。マシンに VS または .net 4.5 がインストールされている場合、この問題は再現できません。
この場合、なぜそれが起こるのかわかりません。この種の問題をデバッグした経験があれば、とても助かります。
ありがとう、ハワード
algorithm - 二次分割と線形分割の違い
r ツリーがどのように機能するかを理解しようとしていますが、分割には 2 次と線形の 2 種類があることがわかりました。
線形と二次の実際の違いは何ですか? どちらの場合、一方が他方よりも優先されますか?
javascript - rtree を使用して HTML 要素を整理し、オーバーラップ チェックを実行する回数を減らすにはどうすればよいですか?
サーバーから位置情報を取得したデータを使用して、javascript を使用してページに追加する必要がある要素がいくつかあります。重ならないように並べたい。たとえばelement 5
、薄い緑色のボックスがある場所に移動して、重ならないようにしelement 3
ます。
2 つのボックスが重なるかどうかを判断する関数の作成に成功しました。たとえば、実行overlaps($('#element5')[0],$('#element3')[0])
すると、 が返されtrue
ます。
ただし、この関数を使用すると、各要素をループして、他のすべての要素と比較する必要があります。したがって、50 要素の場合、関数を 1275 回実行する必要があり、overlays
ロードに時間がかかります。
最初に要素を整理するための rtree を作成するのが最善であると判断しました。これにより、オーバーレイ関数を実行する必要がある 2 つの要素を簡単に見つけ出すことができ、オーバーレイ関数の実行回数を大幅に減らすことができます。ただし、これがどのように機能するかについては非常に混乱しています。少数でのみ関数を実行する必要があるように、それらをどのように整理しますか? rtree のバウンディング ボックスの 2 つが重なって、この手法が冗長になるのではないでしょうか? これを行う最良の方法は何ですか?