問題タブ [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 - Sql Server Geometry 列が原因で、クエリの実行に時間がかかる
SQL データベースからポリゴン データを取得するクエリを作成しました。
結果を取得するために次のクエリがあります。
このテーブルでは、以下のように空間インデックスを既に追加しています
しかし、2483 件のレコードを取得するのに 38 秒かかりました。誰でもこのクエリを最適化するのを手伝ってくれますか
mysql - WGS84 緯度/経度を空間データとして MySQL に直接保存できますか?
私はWGS84 座標のセットを持っています。保守的なアプローチは、それらを数値として保存し ( SQL データベースに緯度と経度のデータを保存するときに使用するデータ型は? )、距離を次のように計算することです (緯度/経度で最も近い緯度/経度を見つける - 複雑な sql または複雑な計算)。
もう少し高度なアプローチは、「範囲内」のユーザー定義関数を作成することです ( MySQL User Defined Function for Latitude Longitude Syntax )
MySQL の緯度と経度のテーブルのセットアップでは、空間インデックスが使用されます。Point
しかし、WGS 座標を直接格納し、データ型に基づいて距離を照会できるかどうかはよくわかりません。
例: データは次のようになります: "lat" 40.7142298
、"lng" -73.9614669
、これがインポートしたいものです。次に、「緯度/経度から 10 km 以内のすべての tupel を選択」のようなクエリを実行します。
sql-server - SQL Server 2012 の最近傍
空間データを使用する非常に単純なテーブル構造があります。
これは、空間インデックスの DDL です。
列に主キーがあり、[ID]
列に空間インデックスがありGeoLocation
ます。空間インデックスには、テッセレーション スキーマ " Geometry auto grid " を使用しています。
データベースに数千行しかない場合でも、最近隣を取得するクエリはかなり遅いです。
実際、(空間インデックスの使用を強制する) テーブル ヒントを追加することにより、パフォーマンスが向上する代わりに、クエリのパフォーマンスが低下します :)
ありがとう
mysql - MySQL の空間テーブルでサブクエリを実行する
の空間テーブルがありpolygons
ます。MySQL 空間テーブル内にあるものを効率的にpolygon
見つけようとしています。lat/lng point
ST_Within
が利用可能であることはわかっていますがMySQL 5.6
、私のバージョンはこれよりも前のものであるため、自由に使える2つの機能を組み合わせて、個別よりも効率的/正確なものにしています。
これらは、MySQL フォーラムの投稿からのネイティブMBRWITHIN
関数とカスタムGISWithinです。MBRWITHIN は通常、1 つしかないはずのポイントに対して約 2 行を提供しますが、高速です。GISWithin は正しい行を提供しますが、非常に遅いです。
だから私は次のようなクエリを書こうとしています:
最初に、クイック MBRWITHIN 関数を使用して、ポイントを含む可能性のあるいくつかの行を選択します。
次に、現在 9000 行ではなく約 2 行で動作している低速の GISWithin を使用して、このリストを 1 つの正しい行に絞り込みます。
私はあらゆる種類のサブクエリを試しました
と
エラーメッセージを取得するためだけに
そのようなクエリや関数を書く方法を知っている人はいますか?
私のテーブルのポリゴンフィールドは呼び出されgeometry
、タイプはGeometry
ogr2ogrからインポートされています。
postgresql - st_intersect() が postgresql で機能しない
私はpostgresqlバージョンを使用しています:「gcc(GCC)4.6.3 20120306(Red Hat 4.6.3-2)でコンパイルされたx86_64-unknown-linux-gnu上のPostgreSQL 9.3.1、64ビット」
ポイントとポリゴンをデータ型として使用して、2つのテーブルAとBを作成しました。ポイントがポリゴンの内側にあるかどうかを知りたいです。このために、私は ST_Intersect(A.point_LatLong , B.polygon_abc); を使用しようとしています。私のクエリは次のとおりです。
ここでpoint_latLong
とpolygon_abc
は、テーブル A と B のポイントとポリゴンのデータ型を持つ列名です。
しかし、このクエリはエラーを返します:
エラー: 関数 st_intersect(point, polygon) は存在しません
3 行目: WHERE city.city_name = 'callifornia' AND ST_intersect(city.c... ヒント
: 指定された名前と引数の型に一致する関数はありません。
型キャスト。
どうすればこの問題を解決できますか? st_contains() などの postgresql で他の空間メソッドを使用することさえできません。解決策があれば教えてください。
postgresql - ST_GeomFromText を使用した postgresql クエリが機能しない
Postgres クエリを実行しようとしています:
しかし、このクエリはエラーを返します:
エラー: 解析エラー - 無効なジオメトリ
SQL 状態: XX000
ヒント: "Polygon((1,1" <-- ジオメトリ内の位置 12 で解析エラー
sql-server - 多くの行を持つテーブルの基本的な選択は非常に遅いです
私は現在、クライアント Web ブラウザーで openlayers を使用して独自のマップをレンダリングするために、SQL サーバーとジオサーバーをセットアップしています。私が直面している問題は、SQL Server データベースに大量の道路 (テキサス州のすべての道路) が含まれており、テーブルでの単純な選択に永遠に (2,348,638 行でほぼ 2 分) かかることです。私のマップサーバーがクライアントのマップタイルをレンダリングするのに100万年もかからないように、このクエリを高速化するために使用できるアドバイスや推奨事項はありますか? ありがとう
sql - 低いズーム レベルで SQL Server 空間クエリのパフォーマンスが低下する
次のクエリは、より高いズーム レベル (経度 2 度、緯度 0.5 度よりも小さい境界ボックス) で非常にうまく機能しますが、境界ボックスが大きくなるにつれて著しく低下します。テーブルには、7 ~ 800 万行のテキストと、ジオメトリ列。
さまざまなグリッド構成を試しましたが、バウンディング ボックスが @north=41.123029000000002、@east=-72.935406、@south=40.296503999999999、@west=-75.077740000000006 などよりも大きくなると、パフォーマンスは常に低下します。
何か案は?ありがとう〜マット
さまざまなズーム レベルでのパフォーマンスの表を含めました。
Zoom Level 2 = @north=74.542308000000006,@east=94.21875,@south=-24.370607,@west=-180 Zoom Level 20 = @north=40.711250999999997,@east=-74.006050000000002,@south=40.710847000000001,@west=-74.007096000000004
これは空間インデックスです。
ズーム レベル別のリクエスト期間 (1000 のランダム テスト):
空間インデックスを強制する、top(1000) を使用しない、典型的なクエリの行数と実行時間:
latitude-longitude - 緯度/経度の JTS
すべての座標が緯度/経度のペア (10 進精度で約 10 桁) である空間データがあり、WGS84 データとしてデータベースに格納されています。境界が保存されているいくつかの小さなポリゴン。次に、後でポリゴンとの交差テストに使用するラインセグメント (各セグメントに 2 つのポイント) を作成するための多数のポイントがあります。
クエリを改善するために SpatialIndex を使用しているので、すべてのポリゴンのエンベロープをツリーに挿入します (QuadTree と STRtree の両方でテスト済み)。次に、2 つのポイントを線分に接続し、そのエンベロープを使用してツリーをクエリしています。問題は、明らかに間違っている結果としてほとんどすべてのポリゴンを取得することです..私のデータの実際のスケールについてのアイデアを与えるために、私は北アメリカ全体をカバーする約100のポリゴンをそれぞれ持っています.ラインは、単一のポリゴンの非常に小さな部分をカバーしています.理想的には、結果としてポリゴンが2つ以下になると予想されます.
私はこの計算を行うために JTS を使用していますが、球体データにはあまり適していないことを認識しています。別のライブラリ/ツールを提案して、目的の動作または可能な回避策 (たとえば、JTS を使用する前に投影する) を実現できますか?
sql - ローカライズされた地理ポイントの空間インデックスの SQL 最適化
GEOGRAPHY空間 SQLに格納されている最大40 万の関心のあるポイントがあります。
これらのポイントを PointOfInterest.STDistance(@CentralPoint) < @Radiusでクエリして、クエリに送信された @CentralPointの特定の半径内にある PointOfInterest を見つけます。
グリッドのレイヤー化について少し読んだことがありますが、自分のことを知っている人に最も賢明なグリッドパターンを推奨してもらいたいと思います。デフォルトは
LEVEL_1 = 中、LEVEL_2 = 中、LEVEL_3 = 中、LEVEL_4 = 中
しかし、私の状況では 、興味のあるポイントは英国内にしかありません。素晴らしいにもかかわらず、大地の相対的な仕様しか取り上げていないので、この場合の空間インデックスで使用するより良いグリッド パターンがあるかどうか疑問に思っていました。
地理に基づいているため、見栄えの良いジオメトリ バウンディング ボックスを使用できません。また、空間ヘルプストアドプロシージャを持っていないように見えるSQL Azureを使用しています:(