問題タブ [spatial-index]

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.

0 投票する
4 に答える
2864 参照

javascript - 重なり合う四角形の描画の最適化

多数の長方形があり、一部は他の長方形と重なっています。各長方形には、絶対 z オーダーとがあります。(各「長方形」は、実際にはパーティクル エフェクト、メッシュ、またはテクスチャの軸に沿ったバウンディング ボックスであり、半透明の場合があります。しかし、他の長方形の背後にある長方形をカリングしようとしない限り、色付きの長方形について抽象的に考える方が簡単です。 、だから私は問題の説明でそれを使用します:)

「色」を変更するコストは非常に高くなります。2 つの異なる色の四角形を描くよりも、2 つの青い四角形を続けて描く方がはるかに高速です。

画面上にない四角形を描画するコストも非常に高く、避けるべきです。

2 つの長方形が重ならない場合、それらが互いに相対的に描画される順序は重要ではありません。zオーダーが重要なのは、それらが重なっている場合のみです。

例えば:

長方形の重なり

1(赤)と4(赤)はまとめて描けます。2 (青) と 5 (青)、3 (緑) と 7 (緑) を一緒に描くこともできます。ただし、8 (赤) は 6 (青) の後に描画する必要があります。したがって、3 つの赤をすべて一緒に描いて青を 2 つのセットで描くか、すべての青を一緒に描いて赤を 2 つのセットで描くかのどちらかです。

また、長方形の一部が時々移動する場合があります。(すべてではありません。静的であることがわかっている四角形もあれば、移動することがわかっている四角形もあります。)

このシーンを JavaScript/webGL で描画します。

JavaScript のカリング コードと GPU によるカリングの適切なトレードオフを考慮して、色の変化を最小限に抑えるために、適切な順序で四角形を描画するにはどうすればよいでしょうか?

(どの長方形が重なり、どの長方形が表示されているかを調べるだけでも費用がかかります。私は基本的な四分木を持っており、これによりシーンの描画が非常に高速になりました(シーン全体の描画操作を単に発行する場合と比較して); 問題は、OpenGL を最小限に抑える方法です。状態が変化し、可能な限り属性配列を連結します)

更新問題を説明し、ソリューションのデモンストレーションの基礎として役立つ非常に単純なテストアプリを作成しました: http://williame.github.com/opt_rects/

ソースコードは github にあり、簡単にフォークできます: https://github.com/williame/opt_rects

完全なゲームで見られる問題を実際に再現するのに十分な状態変更を備えた小さなテスト アプリを作成するのは難しいことがわかりました。ある時点で、状態の変更には十分なコストがかかる可能性があることを考慮する必要があります。また、空間インデックス (デモでは四分木) と全体的なアプローチを高速化する方法も重要です。

0 投票する
0 に答える
416 参照

spatial-index - 長方形をヒルベルト数の範囲に変換します

空間データがヒルベルト数を使用して表される場合、長方形の範囲がヒルベルト数の複数の範囲にマップされます。与えられた長方形Rが重なっているすべてのセルを通過せずにこのマッピングを見つける簡単な方法はありますか?Rの境界セルだけを考えてソートすることも考えられます...もっと良い方法はありますか?

ありがとう。

0 投票する
1 に答える
405 参照

sql-server-2008 - SQL Server 2008 空間クエリのパフォーマンス

ユーザーが通勤ルートをデータベースに保存するアプリケーションがあります。

ルートはポリライン (折れ線) として保存されます。データベースにはインシデント、交通事故なども保存されています。定期的にルートを照会して、ルートの半径 1k 以内にインシデントがあるかどうかを確認する必要があります。

クエリの結合は次のように構成されています。

今、私も次のようなことを試しました:

速度を改善するためにこれまでに試みたことは次のとおりです。

  1. ラインストリングに沿ってポイントの数を減らします
  2. 空間インデックスを追加します (ただし、微調整する方法はわかりません)

1) 上記はうまくいきましたが、十分ではなく、インシデントがルートに沿ったすべてのポイントと比較されていて、本当に効率が悪いと思われます。

バウンディング ボックスにアクセスし、STContains を取得するために、長い緯度を幾何学と地理学として強く検討しています。

インシデントをチェックする前に、PolyLine で reduce を呼び出すことも検討してください。

0 投票する
1 に答える
585 参照

c++ - libspatialindex は単純な更新のために再シリアル化する必要がありますか?

次の機能を備えたデスクトップアプリケーション用のacまたはc ++ライブラリを探しています(サーバークライアントなし、ディスクに保存されたデータのみを編集する必要があります)

  • 空間クエリが高速になるように空間データを仮想メモリに格納します
  • 必要に応じて、スマートな更新方法で同等のデータをディスクに保持できます。更新は即時である必要はありませんが、バッファリングできます。

. libspatialindex は要件を満たしているようです。しかし、この Web ページからは明らかでないことが 1 つあります。たとえば、ディスクから大量のデータをロードして、小さなオブジェクトだけを更新したいとします。libspatialindex はデータ全体を再シリアル化してディスクに書き込みますか、それとも変更が必要な部分だけを更新するのが賢明ですか?

RTree を使用した sqlite はこれを達成しているようです。ただし、SQL の全体ではなく、単純な C++ ライブラリが必要です。

他に代替手段はありますか。GEOS にはスマート ディスク イメージの更新機能がありますか?

0 投票する
1 に答える
778 参照

sql - ST_DUMP(ST_UNION

私の質問:

EXPLAINからの出力:

Seq Scanは、インデックスを使用していないことを意味しますよね?なぜだめですか?

(この質問は最初にここに投稿されました:https ://gis.stackexchange.com/questions/51877/postgis-query-not-using-gist-index-when-doing-a-st-dumpst-union 。ここのコミュニティははるかに活発なので、おそらくより迅速に答えを提供するでしょう。)

更新:バッファに基づいてフィルタリングするwhere句を追加しても、Seqスキャンが発生します。

0 投票する
2 に答える
929 参照

sql - 空間インデックスでのNULLの使用

SQL Serverデータベースに多数の写真(約1,000万枚)があり、地理座標列はNULLまたはNOT NULL(マップに配置または配置されていない)にすることができます。

また、この地理情報に空間インデックスを作成しました。

現在、特定のポリゴン内のすべての写真を選択しようとしています。

地図上にない写真を保存する方法は2つあります。

  • マップ上にないすべての写真の地理的位置にNULLを割り当てると、そのようなクエリのパフォーマンスが遅すぎます(私が理解していないように、空間インデックスはNULL列ではまったく機能しません)。

  • POINT(0 0)地図上にないすべての写真の地理的位置に割り当てると、このゼロ点の場合を除いて、パフォーマンスは良好POINT(0 0)です。また、そのようなリクエストは間違った写真を返します(それらは地図上に存在しません)。

どうすればこれらの問題を克服できますか?

NULLまたはNOTNULLのビットを含む列を追加し、2つの列(この列と地理情報)からインデックスを作成する必要がありますか?

UPDATE 2つの列からインデックスを作成しようとしましたが、空間インデックスには地理情報を含む1つの列しか含まれていないため、不可能です(MSDN)。

0 投票する
1 に答える
2525 参照

sql - PostGis 挿入長方形

こんにちは、質問があります: Postgis データベース内に Ne_latitude、NE_longitude、SW_latitude、SW_longitude を含むボックス (四角形) を挿入し、異なるボックス間の交差を取得するために INDEX を上に構築するにはどうすればよいですか?

前もって感謝します

0 投票する
1 に答える
2572 参照

android - Sqlite を使用した Android 用の空間データベース

この質問は何度も聞かれましたが、私の要件に関連する解決策が見つかりませんでした。

地理データを格納するために空間データ (R-Tree) を使用する Android 上のシンプルな拡張現実アプリを構築したいと考えています。このソリューションSpatialiteは素晴らしいようですが、ツールに問題はほとんどなく、アプリにとっては非常に複雑に見えます. もう 1 つのトリックは、SQLITE_ENABLE_RTREE を有効にして SQLite を使用することです。これには、独自の SQlite ライブラリを構築する必要があります。

必要なのは、R ツリー アルゴリズムと互換性のある空間データ (大学のキャンパス内の建物をカバーする小さなデータ セットがある) を電話に保存し、現在の場所に従ってクエリを実行することだけです。

これを達成するための方向性を探しています。主にストレージ部分です。

前もって感謝します。

0 投票する
1 に答える
229 参照

ravendb - LineString の RavenDB 空間インデックス

LineString geo データの RavenDB 空間インデックスを作成するにはどうすればよいですか?

地理データの LINESTRING の空間インデックスを作成しようとしていますが、検索クエリはデータを返しません。

私は RavenDb を初めて使用するため、次のテストケースを参照として使用してください。検索クエリが正しいか、RavenDB のバグかわかりません

0 投票する
3 に答える
2313 参照

mongodb - B+-Tree MongoDB ではない理由

MongoDB が B-Tree を使用するのに B+-Tree を使用しない理由を知っている人はいますか?

私が知っているように、ほとんどの DBMS は B+-Tree を使用しています。MongoDB が B-Tree を使用する特別な理由はありますか?

ありがとう。