タグ付けされた質問 「sql」

構造化クエリ言語の略語。リレーショナルデータベースからデータを取得して操作するための構文。

1
PostGIS / PostGresQLの最大オーバーラップに基づいて参加しますか?
2つのテーブルに2セットのポリゴンがあります。セットは互いにオーバーラップします。セットAの各ポリゴンについて、最も重なるセットBのポリゴンのIDを取得します。PostGIS拡張機能を備えたPostgreSQLを使用しています。 SQLについては、true / false条件に基づいてしか参加できないことを知っています。したがって、これは機能しません: SELECT a.id as a_id, b.id as b_id, FROM a JOIN b ON max(ST_Area(ST_Intersection(a.geom, b.geom))) max()をON句に含めることはできないためです。 ST_Intersects()は真/偽のテストであるため、それに参加できますが、セットAのポリゴンはセットBの複数のポリゴンと重複することが多く、どれが最も重複するかを知る必要があります。ST_Intersectsは、重複の範囲に関係なく、最初に遭遇した重複IDを単に返すだけです。 これは実行可能であるように思えますが、それは私を超えています。何かご意見は?

4
ST_Intersectionスロークエリ
2つのレイヤー間の交差を実行しようとしています。 一部の道路を表すポリラインレイヤー(最大5500行) さまざまなポイント(約47,000行)の周りの不規則な形状のバッファーを表すポリゴンレイヤー 最終的に、私がやろうとしているのは、ポリラインをこれらの多くの(場合によってはオーバーラップする)バッファーにクリップし、各バッファーに含まれる道路の全長を合計することです。 問題は、物事がゆっくり実行されていることです。これにどれくらい時間がかかるかはわかりませんが、34時間を超えるとクエリを中止しました。私は誰かが私のSQLクエリで間違いを犯した場所を指摘するか、これを行うより良い方法を教えてくれることを望んでいます。 CREATE TABLE clip_roads AS SELECT ST_Intersection(b.the_geom, z.the_geom) AS clip_geom, b.* FROM public."roads" b, public."buffer1KM" z WHERE ST_Intersects(b.the_geom, z.the_geom); CREATE INDEX "clip_roads_clip_geom_gist" ON "clip_roads" USING gist (clip_geom); CREATE TABLE buffer1km_join AS SELECT z.name, z.the_geom, sum(ST_Length(b.clip_geom)) AS sum_length_m FROM public."clip_roads" b, public."buffer1KM" z WHERE ST_Contains(z.the_geom, b.the_geom) GROUP …

2
親ポリゴンの交差を再帰的にループして、オーバーラップのない最小の(子)ポリゴンを取得する方法は?
私は2日間問題に取り組んでいますが、トピックがPostGIS(v2.5)の交差部分である場合、多くの人が行き詰まることにも気づきました。そのため、より詳細で一般的な一般的な質問をすることにしました。 次の表があります。 DROP TABLE IF EXISTS tbl_foo; CREATE TABLE tbl_foo ( id bigint NOT NULL, geom public.geometry(MultiPolygon, 4326), att_category character varying(15), att_value integer ); INSERT INTO tbl_foo (id, geom, att_category, att_value) VALUES (1, ST_SetSRID('MULTIPOLYGON (((0 6, 0 12, 8 9, 0 6)))'::geometry,4326) , 'cat1', 2 ); INSERT INTO tbl_foo (id, …
11 postgis  sql 

3
SQL 2008のポリゴンの「利き手」を変更する(ポリゴンの頂点の順序を逆にする)
SQL 2008に取得しようとしている数万のポイントで構成される数百の形状(polygonsとmultipolygons)があります。 残念ながら、インポートしようとしたシェイプは「右利き」です(各シェイプの周囲は、含まれているポイントの周りに時計回りに描かれています)。SQLサーバーは、少なくともgeography型については、「左回り」の形状(内部で反時計回り)を想定しています。これは、SQLが、自分の形状を除いて地球全体を選択しようとしていることを前提としていることを意味します。一部の人々は、これを「裏返し」の形状と表現しています。 MSDNから、どのリングの向きを使用するべきかについてイライラするほど言っていません: geographyデータタイプを使用して空間インスタンスを格納する場合、リングの方向を指定し、インスタンスの場所を正確に記述する必要があります。 SQL 2008で間違ったリング方向を使用すると、次のエラーでクラッシュします(強調は私のものです)。 ユーザー定義ルーチンまたは集計 "geography"の実行中に.NET Frameworkエラーが発生しました:Microsoft.SqlServer.Types.GLArgumentException:24205:指定された入力は、単一の半球を超えているため、有効なgeographyインスタンスを表していません。各geographyインスタンスは、単一の半球内に収まる必要があります。このエラーの一般的な理由は、ポリゴンのリングの向きが間違っていることです。 geometryではなくとしてシェイプをインポートすることはgeography問題ありませんが、geography可能であれば使用したいと思います。 SQL 2012では、この問題を修正するのはかなり簡単ですが、私は2008に縛られています。 形状を変換するにはどうすればよいですか?

3
ST_Differenceを使用して重複するフィーチャを削除しますか?
ST_Differenceを使用して、PostGis 2.1(およびPostgres SQL 9.3)を使用する別のポリゴンのセット(test.single_geometry_1)でカバーされる領域を含まないポリゴンのセット(processing.trimmedparcelsnew)を作成しようとしています。これが私のクエリです: CREATE TABLE processing.trimmedparcelsnew AS SELECT orig.id, ST_Difference(orig.geom, cont.geom) AS difference FROM test.single_geometry_1 cont, test.multi_geometry_1 orig; しかし、結果のポリゴンはトリミングされておらず、代わりに他のレイヤーと交差する場所で分割されているようです。結果をテーブルに入れずにselectを実行するだけで、他に考えられるすべてのものを試しましたが、この関数を機能させることができません。 結果の写真を添付し​​ました コメントの後、WHERE句を追加してみました。交差のないパーセルと、他のパーセルの交差する領域を削除します(レイヤーtest.single_geometryは、パーセルから削除する汚染を表します)。交差を試してみましたが、もちろん実際には非交差が必要なので、分離を試行しています。また、テーブルにorigを追加しようとしましたが、ST_Difference(http://postgis.net/docs/ST_Difference.html)のドキュメントには、必要な正確なジオメトリ(ジオメトリAのその部分を表すジオメトリ)が返されると記載されていますはジオメトリB)と交差しないため、テーブルの元のポリゴンを代わりに使用する理由がわかりません。とにかく、ここに私の変更されたコードがあります: CREATE TABLE processing.trimmedparcelsnew AS SELECT orig.id, ST_Difference(orig.geom, cont.geom) AS difference, orig.geom AS geom FROM test.single_geometry_1 cont, test.multi_geometry_1 orig WHERE ST_Disjoint(orig.geom, cont.geom); dbastonの回答に続いて、私は今試しました: CREATE TABLE processing.parcels_trimmed AS SELECT id, …

2
SQL Server 2012で3パラメーターの地理変換と投影を実行するにはどうすればよいですか?
緯度経度(NAD27)列のテーブルがあります。Webメルカトル(WGS84)の場所を表すXとYの2つの列を計算します。 現在、私はこれを行うためにArcmapを使用しています。調査領域に推奨される地理座標変換-3つのパラメーター(地理中心)地理座標変換を適用して、NAD27からWGS84に移動します。 私はこれを完全にSQL Server 2012内で実行したいと考えています。私が知ることができることから、Sql Serverはそのままではデータム変換をサポートしていません。この地理変換をサポートするSQLライブラリを知っている人はいますか?Arcmapで現在使用しているSQLで同じ係数を使用したいのですが。 また、WGS84 lat / longからweb mercatorに投影する必要があります。なるほど、この式はJavaScriptで実装され、誰かがこれを行うSQLストアド・プロシージャを持っているならば、それは素晴らしいことです。

3
ArcGIS Desktopの定義クエリをコメント化しますか?
私は日常のGISライフで定義クエリを頻繁に使用していますが、ArcMapで不快に感じることが多いのは、定義クエリをコメントアウトできないことです。定義クエリをオン/オフしたい場合や、単一のシェープファイルで複数のクエリを使用したいが、一度にアクティブになるのは1つだけなので、このオプションを使用したいと思います。 これまでのところ、これを回避するために、私は通常、バックグラウンドにメモ帳ドキュメントを用意し、必要に応じてコピーして貼り付けます。ただし、理想的な解決策は、レイヤープロパティの定義クエリタブを使用してこのドキュメントを置き換えることです。レイヤーに複数の異なるクエリがある場合がありますが、すべてコメント化されています。 私が理解しているように、定義クエリはSQLで記述されています。SQLでのコメントに私はあなたがどちらかと行を開始信じる:-または括弧内の文を包含する:{} 。私はこれらの両方を試しました: Original: "DATA_AQUISITION" LIKE 'MISSING XSECTION' Dashes: --"DATA_AQUISITION" LIKE 'MISSING XSECTION' Brackets: {"DATA_AQUISITION" LIKE 'MISSING XSECTION'} 最後の2つのステートメントはSQL式エラーを返し、ArcMapに描画されません。プログラミングソリューションを探しているのではありません。

4
SpatiaLiteでポイントの位置を持つ2つのテーブル間の最近傍を検索しますか?
今日SpatiaLiteを使い始めて、すでに問題に遭遇しました。 tableOneに保存されている各ポイントの場所について、tableTwoから最も近い(直線距離)ポイントを1つ選択します。 これまでのところ、VIEWを利用する不器用なソリューションを思い付きました。 CREATE VIEW testview AS SELECT A.id , B.myValue, Distance(A.Geometry, B.Geometry) AS distance FROM tableOne AS A, tableTwo AS B WHERE distance < 10000 ORDER BY A.Id, distance; その後: SELECT * FROM testview WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id) 仕事をするようです。 2つの質問: …

1
ポリゴンクエリのポイントのGISTインデックスによるパフォーマンスの向上
2つのテーブルがあります。locations(id、region_id、the_geom)とregions(id、the_geom)です。各ロケーションポイントについて、それが配置されているリージョンを特定します。 UPDATE locations SET region_id = (SELECT id FROM regions WHERE ST_Within(locations.the_geom,regions.the_geom) ); ロケーションポイントにGISTインデックスを作成することには意味がありますか?リージョンポリゴンにインデックスを作成しますが、ポイントについてはわかりません。クエリを高速化できますか?

4
SQLの言語はArcGISツールを介してどの程度アクセスできますか?
その質問はとても冗長に聞こえます... とにかく、私はArcGISでのSQLの使用を調査するように求められました。すべてのサーバー側ストレージとDB管理/大規模編集にはSDE DBを使用します。ただし、統合されたSQLがArcGISのツールにどのように組み込まれているかを詳しく調べようとしています。ArcGIS 10のヘルプのSQLクエリリファレンスガイドに、フィールド計算ツールを使用するとSQL構文が機能しないと明記されています。フィールド値を計算するときに、データベース自体から情報を直接プルしたり、マングルしたりできると非常に便利に思えるので、これは非常に残念です。 ArcGISでSQLを利用しようとするときに遭遇する可能性がある最大の制限と落とし穴は何ですか?SQLと統合すると、どのツールが最高の機能を発揮しますか? これをより明確な質問にするために例が必要な場合、私は特定の地域で特定のタイプの関心のあるポイントの数を追跡しようとしています。各ポイントには、そのタイプとリージョンを説明する属性があります。私の現在の解決策は、カウントとデータの取得にカーソルを多用することですが、上層部は、単純なSQLクエリでこれらすべてを実行できることを指摘しました。残念ながら、この機能は存在しないようです。 またはそれは?

5
重複するジオメトリを見つけるためのGIS分析
私が働いている町のすべての建物と家を含む大きなシェープファイルがあります(約90,000個のフィーチャ)。建物/家屋のデータは町の測量技師によって保存され、悪い習慣とそのデータへのさまざまな測量士のアクセスにより、多くの建物/家屋が2回保存され、重複してマップに表示されています。 それらの一部は正確に複製され(一方が他方の上に表示されます)、もう一方は2つのオブジェクト間にスペースを空けて複製されます(一方のオブジェクトが他方の中にあるように-添付のスクリーンショットを参照)。 そのデータを整理して、町に正しい建物や家だけができるようにしたいので、私の質問は次のとおりです。 すべての複製されたフィーチャ(正確なものと他の内部にあるものの両方)を見つけるために実行できるGIS分析またはSQL式はありますか?私はArcGISとQGISの両方を持っているので、あなたの提案をすべて受け入れます。

2
ArcMapでSQLステートメントLEN()を使用して属性でレイヤーを選択しますか?
文字列の列の長さをクエリして使用したいと思います: LEN([ColumnName]) > 5 ただし、それはまったく機能しません。ArcMap 10.1のfGDBのテーブルをクエリしているため、[ColumnName]の表記になります。 誰かが私を助けてくれますか? ArcGISから取得するエラーメッセージは、無効なSQLステートメントを使用しているというものです。

2
フィールドに値を追加するGDAL SQL構文
属性テーブルに新しいフィールドを作成し、文字から整数に変換した後、別のフィールドの値を入力しようとしましたが、正しい構文を取得できません。これをMSYSのシェルスクリプトとして実行します。 cd D:/GIS_DataBase/CorineLC/shps_app_and_extr/ myfile=extr_and_app.shp name=${myfile%.shp} ogrinfo $myfile -sql "ALTER TABLE $name ADD COLUMN code_num int(3)" ogrinfo $myfile -sql "UPDATE TABLE $name SET code_num = CONVERT(code_06 As int(3))" エラーメッセージ(MSYS): Kay@KAY-PC /c/users/kay/desktop/bash $ sh calc_field_shp.sh Warning 6: Unsupported column type 'int'. Defaulting to VARCHAR INFO: Open of `extr_and_app.shp' using driver `ESRI Shapefile' …
9 sql  ogr 

2
一連の座標内にある点を見つける
PostGISデータベースがあり、ある領域(境界ボックス)内にあるポイントを見つけたいのですが。私は2セットの座標を持っています。そこから、ボックスを形成する4つのすべての長方形の点を取得できます(必要な場合)。問題の私のデータ列は「ポイント」という名前で、タイプもポイントです。 とにかく4つの座標セット(緯度/経度)を指定して、ボックス内にあるすべてのポイントを取得することはできますか? または、2つのポイントを指定し、DBに長方形のコーナーを計算させ、そのポイントを返す 念のため、自分が何を達成したいのかはっきりしていません。ポイントの代わりに緯度と経度のフィールドがあった場合の 'vanilla' sqlと同等のものは次のようになります。 SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax 更新された編集: アンダーダークの解決策を試しています。最初は、ST_MakePointコンストラクターがありません(今はあります)ので、非常によく似たエラーが発生します(別の文字についてのみ)。 SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326)) そして私はこのエラーを得ています: ERROR: function st_makepoint(point) does not exist LINE 1: SELECT * FROM …
9 postgis  sql  point  extents 

1
PostGISラインの開始と終了にZ値を割り当てます
PostGISデータベースにラインテーブルがあり、各ラインの開始と終了のレベルが反転しているテーブルがあります。 私の目標は、私の反転データから、テーブルに3Dラインを作成することです。st_makelineを使用して、始点と終点に3Dポイントを持つラインを再作成できることはわかっていますが、始点と終点のZ値だけで更新を実行できることを望んでいました。 これはできますか、それとも単にラインを再作成する方が簡単ですか。
9 postgis  3d  sql 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.