問題タブ [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.
sql-server - 空間インデックスのクエリが応答しない
SQL Server 2008 にデータベースがあり、そのすべてに緯度、経度、および対応する地理フィールドが含まれる約 120 億行があります。最近、地理フィールドを照会する機能を追加する必要がありました。4 TB 以上のデータを処理するのに 6 日かかった空間インデックスを追加しました。
そのようなクエリを使用して意図的に追加...
お見積り実施プランはこちら・・・
このクエリを 1 億行のサンプル セットでテストしたところ、見事に機能しました。しかし、請求行が 12 行ある場合、クエリは約 4 時間後に応答せず、最終的にディスク書き込みエラーで失敗します。
私の側の明らかな見落としに気付くかもしれない誰かがいることを願っています. 本当にありがとう!
php - MySQLSPATIALデータ型のPropelORM
私はPropelORM 1.6
プロジェクトにある種のGISサービスを使用して実装しています。データベース(MySQL)では、座標として、さまざまなアイテムの座標を格納するためにPOINTのフィールドタイプを使用しています。
schema.xml
テーブルモデルを構築するために、AFAIK空間データ型がまだサポートされていないため、この(POINT)フィールドをに設定しました。VARCHAR(255)
このフィールドの選択クエリの整理は、を使用してOKですCriteria::CUSTOM
が、Propelでよく知られているものを使用してこのフィールドを更新したい場合、GeomFromText
次のエラーが発生します。
警告:PDOStatement :: execute():SQLSTATE [22003]:数値が範囲外です:1416/var/www/.../propel/util/BasePeer.phpのGEOMETRYフィールドに送信したデータからジオメトリオブジェクトを取得できません425行目
を使用してフィールド値を設定しています
$object->setGeo("GeomFromText( 'POINT(48.211055 16.383728)' )");
この文字列はORMによって文字列値のように扱われ、本来GeomFromText
の関数としては扱われないと思います。
残念ながら、Criteria::CUSTOM
フィールド値を設定することはできません。
PropelORMでそのようなフィールドを更新するにはどうすればよいですか?
更新:この種のタスクにZendFramework
はZend_Db_Expr
、PropelORMに似たようなものがあるのではないでしょうか?
c++ - SpatialIndexライブラリを使用したR*ツリーのパラメータの選択
http://libspatialindex.github.com/のspatialindexライブラリを使用しています
メインメモリにR*ツリーを作成しています。
次に、多数のバウンディングボックスを挿入します。現在、約250万(ドイツのバイエルンの道路網)です。後で、ヨーロッパのすべての道路を挿入することを目指します。
ストレージマネージャーとrtreeのパラメーターの適切な選択は何ですか?ほとんどの場合、rtreeを使用して、特定のクエリ(bbox交差点)に最も近い道路を検索しています。
postgresql - 空間インデックスに最も効率的な PostGIS SRID はどれですか?
locations
と呼ばれる列に緯度経度ポイント (SRID 4326) を格納する と呼ばれるテーブルを持つ PostGIS 対応データベースがありますcoordinates
。ただし、そのテーブルのすべてのルックアップは、主に距離の比較を行うために、ポイントをメトリック投影 (SRID 26986) に変換します。
明らかに、列に空間インデックスを作成したいと思いcoordinates
ます。私の質問は、この場合、空間インデックスで使用するのに最適な (最も計算効率の良い) SRID はどれですか?coordinates
SRID 4326 を使用してインデックスを作成することもできます...
またはSRID 26986を使用して...
azure-sql-database - SQL 空間インデックスとクラスター化インデックス
以下のように、SQL Server Azure Server の geography 列に空間インデックスを作成しています。
CREATE SPATIAL INDEX sp_idx ON TableA(GeographyAreaCode) USING GEOGRAPHY_GRID WITH (GRIDS = (LEVEL_1 = LOW, LEVEL_2 = LOW, LEVEL_3 = HIGH, LEVEL_4 = HIGH), CELLS_PER_OBJECT = 16, DROP_EXISTING = ON)
ここで、sp_idx という名前の 2 つのインデックスが作成されていることを確認しました。1 つは空間インデックス、もう 1 つはクラスター化インデックスです。
SQL Server は、空間インデックスを使用して必須のクラスター化インデックスを作成しますか?
また、このインデックスを削除する必要がある場合、関連するクラスター化インデックスも削除されますか?
よろしくお願いいたします。
mysql - Mysql 空間拡張。ラインストリングにポイントが含まれているかどうかを確認するには?
Linestring に Point.... fe があるかどうかを判断しようとしています。
もしそうなら、CONTAINS(ls,p)
私は真実を持っています。しかし、ラインにポイント (2 0) はありません
私は正確に含む必要があります。そのための機能はありますか?
c# - R*ツリーに新しい葉を挿入します
R *ツリーの挿入アルゴリズムの手順は何ですか?
注:挿入によってツリーを構築できるようにしたいです。最適な葉を選択するためにどの条件を選択しても、常に最大のオーバーラップと最大の面積をカバーするクラップツリーを提供します(ツリーの各レベルで追加した後の最小のオーバーラップ領域、ツリーの各レベルでの最小の拡張率などをテストします) 。
さて、このR *ツリーが非常に美しく挿入されることによってどのように構築されるか(ウィキペディアから):
mysql - MySqlのパフォーマンスは、1km以内にいるすべてのユーザーを見つけます
私は mysql テーブルを持っています。互いに 1 km 以内にいるすべてのユーザーを見つける必要があります。テーブル:
解決できます:
- ユーザー i ... n ごとに繰り返す
- インデックスを使用して、特定のポリゴン内のすべてのユーザーを選択するごとに
- お互いにメッセージを送る
複雑さは〜O(n)以上(インデックスに依存)になりますが、パフォーマンスが向上する他のソリューションはありますか?
algorithm - 群れから離れた動物をすばやく見つけるアルゴリズム
シミュレーションプログラムを開発しています。動物 (ヌー) の群れがあり、その群れの中で、群れから離れている 1 匹の動物を見つけることができる必要があります。
下の写真では、緑の点が群れから離れています。早く見つけたいのはこういうところです。
もちろん、その問題を解決するための簡単なアルゴリズムがあります。各ポイントの近傍にあるドットの数を数え、その近傍が空 (0 ポイント) の場合、このポイントが群れから離れていることがわかります。
問題は、このアルゴリズムがまったく効率的でないことです。私は 100 万点を持っていますが、このアルゴリズムを 100 万点のそれぞれに適用すると非常に時間がかかります。
もっと速くなるものはありますか?多分木を使う?
@amit の編集: そのようなケースは避けたいと思います。左隅にある緑色の点のグループが選択されますが、群れから離れているのは 1 匹の動物ではなく、動物のグループであるため、選択すべきではありません。群れから離れた 1 匹の動物のみを探しています (グループではありません)。
c# - RavenDB 2.0: SpatialGenerate を使用したインデックス作成ですべてのメモリが消費される
問題: 提示されたコードでは、約 26000 のジオフェンス (ポリゴン) のインデックスを作成しようとしています。簡潔にするために、1) データの挿入と 2) データのインデックス作成の多くの組み合わせを試しましたが、一部はコードに示されていません。事前に作成されたインデックスを使用してすべてのデータをインポートしました。データをインポートしてからインデックスを作成し、インデックスを作成して、古くないインデックスを待ってデータを部分的にインポートします。いずれの場合も、すべてのメモリを消費して失敗します (失敗とは、インデックス作成プロセスが完了するまで 30 分間待機することを意味します)。事前に構築されたインデックスを使用した部分挿入で、興味深い観察が 1 つ発生しました。常に ~1790 エントリあたりですべてのメモリを消費し始めます。
環境: 私はこれを 2 台のマシンでテストしました: 1) 4 GB RAM、デュアルコア 2.56 CUP 2) 12 GB RAM、i7 CPU。私は Visual Studio 2012 (これは重要ではありません) を使用して、RavenDB ビルド 2230 で .NET 4.0 をターゲットにしました。ここで使用した唯一の外部ライブラリ (RavenDB クライアント ライブラリ以外) は NetTopologySuite (NuGet) でした。
補足と背景: 私は 2 つのメモリ内データ構造を使用して空間計算を行っています: KD ツリーと静的データを含む R ツリー (挿入/削除/更新なし)。プロジェクトに新しいステップが追加され、1 日に 2 回データを更新/挿入する必要があります。そのため、この部分のハウスキーピングの負担を取り除く代替品を探し、SQLite R-Tree モジュールを思いつきました。十分に高速です (いくつかの並列プログラミングを使用し、ほとんどが読み取り専用のデータベースです)。これまでのところ、RavenDB は選択の余地がありません (戦略的決定など) が、私は RavenDB で遊ぶのが好きで、がっかりしました。正確に言うと、私は RavenDB 960 が大好きで、RavenDB 2230 には本当に腹を立てています。
インメモリ ツリーを使用し、SQLite を ~3,000,000 ポリゴン (正確には「バウンディング ボックス」) でテストしましたが、RavenDB を ~26,000 ポリゴンで使用できませんでした。私は何かひどく間違ったことをしていることを本当に願っています。
コード: