問題タブ [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.
javascript - R*-Tree アルゴリズムとは何ですか?
R*-Treeを実装するのに十分なドキュメントはどこにありますか? 具体的には、次のことができる必要があります。
- ノードを挿入
- ノードを削除
- K 個の最近傍を検索する
- 距離 x 内にある最近傍をすべて見つけます。
このアルゴリズムが明確に文書化されている単一の場所はありますか? または、私が研究できるクリーンでオープンソースの実装はありますか? さらに良いことに、JavaScript の実装を教えていただければ、私の作業は完了です。
tsql - 空間データベース、奇妙なインデックスの動作
したがって、私のデータベースには、タイプ BigInt の Id とタイプ Geometry の Geometry を持つテーブルがあります。Geometry フィールドには、idx_Geometry という空間インデックスがあります。
次のクエリは、インデックスを使用して期待どおりに機能します。
ただし、クエリを試すと
エラーメッセージが表示されます:
クエリ プロセッサは、空間インデックス ヒントを含むクエリのクエリ プランを生成できませんでした。理由: 空間インデックスは、述語で指定された比較対象をサポートしていません。インデックス ヒントを削除するか、SET FORCEPLAN を削除してみてください。
私に関する限り、これら 2 つのクエリは基本的に同等です。なぜこれが起こっているのか、2番目のクエリでインデックスを動作させる方法 (または場合) を説明できる人はいますか?
ありがとう
編集: 2 番目が = 0 であり、where 句の =1 ではないことに気付きました。インデックスを = 0 で使用できない理由を知っている人はいますか? (2 番目のクエリは = 1 で動作します)
編集 2:機能するものと機能しないものの更新のみ
編集 3:左結合と null チェックに関する問題の回避策を見つけましたが、誰かが私を啓発できる場合、偽の交差でインデックスを使用できない理由についてまだ興味があります
php - 古いテーブルから新しいテーブルへの複雑なMySQLの結合
私はlocationsという名前の古いデータベースを持っており、その中にテーブルがあります。
このテーブルには、id(int、index)、authorized(int)、city(text)、country(text)、heading(double)、lat(double)、lng(double)の7つの変数があります。
複雑さという名前の新しいデータベースがあります。そのデータベースには、gsvrawという名前の新しいテーブルがあります
古いテーブルを新しいテーブルにコピーする必要がありますが、ここで注意が必要です。
新しいデータベースでは、後でポリゴン内を検索できるように、MySQLの空間インデックスを使用します。新しいデータベースで、lat、lngの代わりに、locationという名前の新しい列を追加したいと思います。
新しい列を作成するためのステートメントの例:
これは、場所の列に新しい値を挿入するためのステートメントの例です。
40と-100はlatとlngになります。
何か案は?
私はここMITで3つの異なる「教祖」のそれぞれを1時間無駄にし、文字通りどこにも行きませんでした。
私が実行しているサーバーは大きな問題を引き起こしているので、pythonとMySQLdbの使用は終了しています。
うまくいけば、そこにいる誰かが私たちより賢く、生のSQLステートメントを手伝ってくれるでしょう。
私はこれをMAMPproを使用してApacheMySQLとPHPを搭載したMacで実行しています。これはいくつかの問題を引き起こすので、実際に機能する可能性のある唯一の解決策は、現時点ではストレートphpとsqlです。何か案は?
解決:
mongodb - k最近傍法は3空間でクエリを実行します
3空間の位置を含むデータベーステーブルにデータセットが保存されています。効率的な方法でk最近傍を取得する必要があります。私のデータストアには、3次元のネイティブ空間インデックスが含まれていません。クライアントで空間インデックスをシミュレートするにはどうすればよいですか。
この質問は言い換えられるかもしれません、データベースに保存された日付に対してKDツリーをどのように実装できますか?
(違いが生じる場合、実際に使用されるデータベースはMongoDBとRedisです)
mysql - 空間データに基づく TRIGGER
lat、lng、latlng の 3 つの列を持つ pano_raw というテーブルがあります。
lat と lng は単なる 10 進数 (10,3) であり、latlng はタイプ POINT の空間インデックスです。
これは、緯度と経度に基づいてデータベースを更新するステートメントの例です。
上記のステートメントに基づいてトリガーを作成しようとしています。これにより、緯度と経度を個別に更新すると、列が自動的に更新されます。クエリが特殊化されているため、SQL を使用して毎回空間データ列を更新するのは面倒です。単純な 10 進数値をテーブルに書き込んだときに更新されるトリガーを (理論上は) 書くだけの方がはるかに簡単です。
私が抱えている問題は構文にあります。これが私のベストです(2時間のショット)。
これが機能するように助けていただければ幸いです。
mysql - SPATIALジオメトリインデックスのパフォーマンスは、ジオメトリ形状のサイズと密度に依存しますか?
空間インデックス
空間インデックスが与えられると、インデックスユーティリティ、つまりインデックスの全体的なパフォーマンスが、全体的なジオメトリと同じくらい良くなります。
たとえば、100万のジオメトリデータ型を取得してテーブルに挿入し、それらの相対点が互いに密に配置されるようにした場合、このインデックスは、相対位置が大幅にまばらになる可能性がある同一のジオメトリ形状に対してパフォーマンスが向上しますか? 。
質問1
たとえば、これら2つのジオメトリ形状を考えてみましょう。
状況1
幾何学的には同じですが、座標が1点ずれています。これが100万回繰り返されたと想像してみてください。
今、この状況を取ります、
状況2
上記の例では:
- 線の寸法は状況1と同じです。
- 線は同じ数の点です
- 線のサイズは同じです。
でも、
- 違いは、線が大幅に離れていることです。
なぜこれが私にとって重要なのですか?
この質問をする理由は、入力ジオメトリから可能な限り精度を削除し、アプリケーションが精度を失うことなく提供できる限り、それらの密度と近接性を減らす必要があるかどうかを知りたいからです。
質問2
この質問は最初の質問に似ていますが、別のジオメトリシェイプに空間的に近いのではなく、シェイプ自体を可能な限り小さな形状に縮小して、アプリケーションに必要なものを説明する必要があります。
たとえば、ジオメトリデータ型でSPATIALインデックスを使用して、日付に関するデータを提供する場合です。2つの日付の日付範囲を保存したい場合は、mysqlで日時データ型を使用できます。ただし、ジオメトリタイプを使用したい場合はどうすればよいでしょうか。そのため、個々の日付を取得してunix_timestamp()に変換することにより、日付範囲を伝達します。
例えば:
これで、これら2つの整数に基づいてLINESTRINGを作成できました。
アプリケーションが実際には日数のみを考慮し、秒数が日付範囲にとってまったく重要ではない場合、必要なものを満たすためにジオメトリを可能な限り最小のサイズに縮小するようにジオメトリをリファクタリングする必要があります。
そのため、「1293861600」の代わりに「1293861600」/(3600 * 24)を使用します。これはたまたま「14975.25」です。
誰かがこれらのギャップを埋めるのを手伝ってもらえますか?
tsql - SQL Server Management Studio 2008 で空間インデックスを作成するにはどうすればよいですか?
PrimaryKey(int)
、latitude(decimal 9,6)
およびの 3 つの列を持つテーブルがありlongitude(decimal 9,6)
ます。
ライブ ビューを DBMS 接続を使用して mapinfo 10.5 にインポートしましたが、テーブルをマップ可能にしたり、座標をマップするために「ポイントを作成」したりできないようです。
MS Management Studio で右クリックして新しいインデックスを追加しますが、表示されるインデックスの種類はクラスター化されたもの、非クラスター化されたもの、xml のみで、空間のオプションはありません。
mysql - MySQL の空間インデックス - エラー - GEOMETRY フィールドに送信したデータからジオメトリ オブジェクトを取得できません
私は「空間インデックス」全体に慣れていませんが、緯度/経度に基づいてフィルタリングするための最良のソリューションのようです。そこで、テーブルに列を追加しました。
だから私はgeometry
フィールドを作成しました:
そして、インデックスを追加しようとしました:
しかし、私はエラーが発生します:
ここで何が間違っていますか?
python - 空間インデックス/クエリ (k 個の最近点を見つける)
+10k ポイント (緯度、経度) があり、ユーザーの場所に最も近い k ポイントを表示するアプリを作成しています。
これは非常に一般的な問題であり、車輪の再発明はしたくありません。四分木について学んでいます。この空間的な問題を解決するための良いアプローチのようです。
私はこれらのツールを使用しています:
- パイソン2.5
- MySQL
- MongoDB
Quadtreeの構築はそれほど難しくありません。クエリ?
次のようなクエリを実行する必要があります。
- ユーザーの位置から 10 km 以内のすべてのポイントを検索します。
- ユーザーの位置に最も近い 6 つ (または少なくとも 6 つ) のポイントを見つけます。
それを行うための標準的で一般的なアプローチは何ですか?
編集1:
+10k ポイントを MongoDB (地理空間インデックス作成) にロードしましたが、一見すると問題なく動作します。とにかく私はPostGisを見つけました:
PostGIS は、GIS (地理情報システム) オブジェクトをデータベースに格納できるようにする PostgreSQL オブジェクト リレーショナル データベース システムの拡張機能です。
そこで、PostGis を試してみようと思います。
SimpleGeoも見つけました。ポイント/場所をクラウドに保存し、API を介してクエリを実行できます: https://simplegeo.com/docs/tutorials/python#how-do-radial-nearby-query
mysql - MySQL 空間データ型のインデックス作成のパフォーマンス比較
ポイントとポリゴン (GeomCollection タイプ) を含むジオメトリ タイプのインデックス付き列に対する MBR 関数クエリは、ポリゴン タイプのインデックス付き列に対する MBR 関数よりも遅くなりますか?
私のプログラマーの本能は、それは遅くなるだろうし、できるだけ記述的な空間型を使うべきだと教えてくれます。
編集:デニスの答えを読んだ後、本当の質問は次のとおりです。
MySQLでは、「ポイントとポリゴンを含むジオメトリタイプのインデックス付きの列には、実際に後者が含まれていますか、それともMBRに縮小されていますか?」