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

PostGISは、PostgreSQLオブジェクトリレーショナルデータベースの拡張機能で、地理オブジェクトのサポートを追加します。

1
PostGIS:同じ属性値を共有する隣接するフィーチャをマージする方法は?
ラインフィーチャを格納する大きなPostGISテーブルがあります。 互いに接続されていて、属性値が同じであるフィーチャをマージしたいと思います。以下は私が達成したいことの例です。 最も外側のフィーチャ(黒と青のフィーチャ)は、属性値が同じであっても隣接していないため、マージされません 緑と赤の機能は両方の条件に一致するため、統合されます フィーチャーイエローは以前のままです。 SQLクエリでそれをどのように実現しますか?

1
QGISが.prjファイルからCRSを検出しないのはなぜですか?
私は米国のさまざまな郡をカバーする1 kmの六角形グリッドをpostgreSQL / postGISデータベースに多数持っています。各グリッドにはCRS EPSG:3857があり、countiesレイヤーにはEPSG:3857があります。QGISで郡のグリッドを表示すると、すべてが壮大に見えます。 しかし...これらのグリッドを同僚と共有するために、ogr2ogrを使用してそれらをシェープファイルにエクスポートする必要がありました。これらをQGISで表示すると、各グリッドは約20 kmほどナッジされたように見え、QGISは自動的にCRSをEPSG:3395(プロジェクトのCRSではない)に設定します。 QGISから postGISテーブルをシェープファイルとしてエクスポートすると、.prjファイルはogr2ogrエクスポートされたシェープファイルとまったく同じに見えますが、postGISエクスポートされたテーブルは正しく表示されます。QGIS からシェープファイルをエクスポートすると、QGISが.qpjファイルを作成することに気付いたので、QGISが.prjを無視し、代わりに.qpjを探しているという結論に達しました。.qpjがないと.prjを読み取れないのはなぜですか?他のシェープファイル(米国国勢調査のものなど)には.qpjがありませんが、QGISはこれらを正しく表示します。 default.qpjを保存し、ogr2ogrを使用してエクスポートするすべてのファイルに対してこれから新しい.qpjを作成することで回避策を考え出しましたが、EPSG:3857でしか機能しないため、これは煩雑で、再現性がないようです。 補足:QGIS 2.0.1を使用しています。 編集: これが私が使用したogr2ogrコマンドです。 ogr2ogr -f "ESRI Shapefile" /home/matt/data/hex_grid_1 PG:'dbname=mydb user=matt' hex_grid_1 .prjの内容: PROJCS ["WGS_84_Pseudo_Mercator"、GEOGCS ["GCS_WGS_1984"、DATUM ["D_WGS_1984"、SPHEROID ["WGS_1984"、6378137,298.257223563]]、PRIMEM ["Greenwich"、0]、UNIT ["Degree"、0.01745329251994J3TION] ["メルカトル"]、PARAMETER ["central_meridian"、0]、PARAMETER ["false_easting"、0]、PARAMETER ["false_northing"、0]、UNIT ["Meter"、1]、PARAMETER ["standard_parallel_1"、0.0] ] .qpjの内容: PROJCS ["WGS 84 /疑似メルカトル"、GEOGCS ["WGS 84"、DATUM ["WGS_1984"、SPHEROID ["WGS 84"、6378137,298.257223563、AUTHORITY ["EPSG"、 "7030"]]、AUTHORITY …
9 qgis  postgis  ogr2ogr  epsg 

1
ポリゴンクエリの非常に大きなポイントを最適化する
住所ポイントの全国データセット(3700万)とタイプMultiPolygonZの洪水アウトライン(200万)のポリゴンデータセットがあります。一部のポリゴンは非常に複雑で、最大ST_NPointsは約200,000です。PostGIS(2.18)を使用してフラッドポリゴンにあるアドレスポイントを特定し、これらをアドレスIDとフラッドリスクの詳細を含む新しいテーブルに書き込もうとしています。アドレスの観点(ST_Within)から試してみましたが、洪水地域の観点(ST_Contains)から始めてこれを入れ替えました。根拠は、洪水のリスクのない大きな地域があることです。両方のデータセットが4326に再投影され、両方のテーブルに空間インデックスがあります。以下の私のクエリは3日間実行されており、すぐに終了する兆候はありません! select a.id, f.risk_factor_1, f.risk_factor_2, f.risk_factor_3 into gb.addresses_with_flood_risk from gb.flood_risk_areas f, gb.addresses a where ST_Contains(f.the_geom, a.the_geom); これを実行するより最適な方法はありますか?また、このタイプのクエリを長時間実行する場合、リソース使用率とpg_stat_activityを確認する以外に、進行状況を監視する最良の方法は何ですか? 私の元のクエリは3日間で問題なく終了し、他の作業に追われたため、ソリューションを試すために時間を費やす必要がなくなりました。しかし、私はこれを再検討し、推奨事項を検討したところ、これまでのところ良好です。私は以下を使用しました: ここで提案されているST_FishNetソリューションを使用して、英国上空に50 kmのグリッドを作成しました 生成されたグリッドのSRIDをBritish National Gridに設定し、それに空間インデックスを構築しました ST_IntersectionとST_Intersectsを使用してフラッドデータ(MultiPolygon)をクリップしました(ここで問題になるのは、shape2pgsqlがZインデックスを追加したときに、gemでST_Force_2Dを使用する必要があったことだけです) 同じグリッドを使用してポイントデータをクリップしました 行に作成されたインデックス、各テーブルにcolと空間インデックス これでスクリプトを実行する準備ができました。国全体をカバーするまで、結果を新しいテーブルに移入する行と列を繰り返し処理します。しかし、洪水データを確認したところ、非常に大きなポリゴンのいくつかが翻訳中に失われたようです!これは私のクエリです: SELECT g.row, g.col, f.gid, f.objectid, f.prob_4band, ST_Intersection(ST_Force_2D(f.geom), g.geom) AS geom INTO rofrse.tmp_flood_risk_grid FROM rofrse.raw_flood_risk f, rofrse.gb_grid g WHERE (ST_Intersects(ST_Force_2D(f.geom), g.geom)); 私の元のデータは次のようになります: ただし、ポストクリッピングは次のようになります。 これは、「欠けている」ポリゴンの例です。

2
PostGISで特定の距離にあるポイント間に線を引きますか?
通り沿いのポイントのデータがあります。それらの点を単純な色付きの線に変えたいと思います。この問題が何と呼ばれるか、またはこれを解決するのに役立つアルゴリズムはありますか? PostGISこれを行うために関数を使用することを望んでいましたが、提案を受け入れることが.shpできます。これはファイルのデータです。 Edit1:この問題の理想的なソリューションを示すために画像を更新しました。 線を描くことは、純粋にそれらの点の間の距離に基づいています。それらをグループ化するために使用できるものは他にありません。理想的には、これは投影された線に沿って指定された最大距離のポイントになるでしょうか?そして、投影された線とは、最初の点を見つけ、次にそれに最も近い点を見つけて線を投影し、この線上にすでに線上にある点の最大距離にある点があるかどうかを確認することを意味します。
9 postgis  line 

1
QGISサーバーがUPDATEを送信しています…WFSレイヤーのpostgisにWHERE NULL
Windows Server 2012サーバーを実行しています。 PostgreSQL 9.3.5、64ビット POSTGIS 2.1.3 QGISサーバー2.6.1-2 QGIS Desktop 2.8.3および2.12 QGISデスクトップ2.12を使用してMicrosoft Surface Pro 4タブレットを使用して、Postgresqlデータベースに格納されているいくつかのレイヤーを編集しています。タブレットのレイヤーは、QGISサーバーによって提供されるWFSレイヤーです。 レイヤーにデータを挿入した後で編集をやりすぎて、データをサーバーに強制的に送信して保存すると、データベースで更新が行われないことがあります。 POST httpリクエストがサーバーに正常に到着したことがわかりますが、データベースにコミット(更新)が表示されない場合や、正常に動作してコミットを実行する場合があります。 QGISサーバーのログで確認できます(QGISデスクトップで3つの機能のデータを更新しました): //QGIS SERVER RECEIVED HTTP POST FROM QGIS DESKTOP [4852][11:11:19] ********************new request*************** [4852][11:11:19] remote ip: 192.168.144.20 [4852][11:11:19] CONTENT_TYPE: text/xml [4852][11:11:19] HTTP_USER_AGENT: Mozilla/5.0 QGIS/2.8.2-Wien [4852][11:11:19] MAP:D:\OSGeo4W\apps\qgis\bin\alumbrado\alumbrado.qgs [4852][11:11:19] REQUEST:Transaction [4852][11:11:19] REQUEST_BODY:<Transaction xmlns="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0.0" …

1
QGIS PythonプラグインからPostGISレイヤーを追加する
Pythonの学習の一環として、プラグインからpostgisレイヤーをqgisに追加するプラグインを開発しようとしています。 postgisレイヤーを追加するためのコードはクックブックから取得され、qgis内のpythonコンソールから実行すると正常に動作します(ダイアログボックスで[OK]ボタンが押された場合、結果== 1であり、レイヤーをqgisに追加する必要があります)。 しかし、プラグインから実行すると、メッセージNameError:name 'QgsDataSourceURI' is not definedがスローされます。プラグインから実行するとエラーが発生するのはなぜですか? プラグインから/関数内からレイヤーを追加する方法とPythonコンソールから追加する方法に違いはありますか? def run(self): """Run method that performs all the real work""" # show the dialog self.dlg.show() # Run the dialog event loop result = self.dlg.exec_() # See if OK was pressed if result == 1: # Do something useful here - delete …

1
PostGISポリゴンエッジ分析(方向、エッジ長)
私はGISの世界、特にPostGISの世界にはかなり慣れていないので、答えが明らかな場合は失礼します... 多くの建物の分析をしたいと思います。私が興味を持っていることの1つは、それぞれの方向に沿ったファサードの表面です。下の図に示すように、一連のポリゴンのすべてのエッジの長さと(通常の)方向を設定したいと思います。この例では、1つのサーフェスのみを強調表示しています。 結果テーブルは次のようになります。 building_id | edge_id | orientation | edge_length ------------------------------------------------- 1 | 1 | 315 | 10.0 1 | 2 | 45 | 7.0 1 | ... | ... | ... しかし、それをさらに処理するために結果を格納するスマートな方法であるかどうかはわかりません(たとえば、エッジから次の建物までの距離を計算するなど)。だから私の質問は2つあります: ポリゴンのエッジを分析できる効率的なPostGIS関数はありますか?ネイティブのPostGIS関数がない場合は、代わりにPythonベースのアプローチに興味があります。 ポリゴンには異なる数のエッジがある可能性があるため、結果をPostGISテーブルに格納するためのスマートな方法は何でしょうか?

2
あるテーブルのフィーチャを別のテーブルのフィーチャでST_Splitする方法は?
閉じたラインストリングと閉じていないラインストリング(レイヤー 'lin')の両方でポリゴン(レイヤー 'pol')を分割する必要があります。 残念ながら、次のクエリを実行しても適切な結果が得られません。 CREATE VIEW splitted_pol AS SELECT g.path[1] as gid, g.geom::geometry(polygon, SRID) as geom FROM (SELECT (ST_Dump(ST_Split(pol.geom, lin.geom))).* FROM pol, lin ) as g; 私の例では、ST_Splitは6つのポリゴンを作成する必要があります(レイヤー 'splitted_pol')。 QGIS / PostGISでST_Splitを使用する方法を知っている人はいますか?

1
ライン接続に基づくPostGIS再帰クエリ
クエリに問題があります。n_type列に値を持つラインストリングのネットワークがあります。これは、いくつかのオプションの1つです。同じタイプで連続したラインを形成するラインストリングをグループ化した新しいテーブルを生成したいと思います。 前: 後: これが私がこれまでに得たものです。結果を返しますが、意味がありません。型が一致せず、返される機能が多すぎます。 また、「連続的」とは、その隣から5フィート以内にあり、30度未満の角度で交わる線として定義したことに注意してください。 WITH RECURSIVE all_links (i, pk_uid, n_type, geom) AS ( SELECT 1 AS i, pk_uid, n_type, geom FROM network WHERE n_type != 'none' UNION ALL SELECT a.i + 1, b.pk_uid, b.n_type, b.geom FROM network b, all_links a WHERE b.n_type = a.n_type AND b.geom <#> a.geom <= …
9 postgis 

3
等値線をpostgisで等値ポリゴンに変換する方法は?
私は次のように定義されたisolinesのpostgisテーブルを持っています: CREATE TABLE myisolines ( gid serial NOT NULL, isotime timestamp without timezone, val numeric(10,4), geom geometry(LineString,4326) ); 視覚的には、このラインストリングオブジェクトは次のようになります。 データの空間範囲がわかっているので、Bboxを追加して、LineStringを閉じているようにすることができます。 重複しないが連続したサーフェスを作成し、ポリゴンが形成された最低の等値線を持つ列を持つ、ポリゴンmyisopolygonsを含むmyisolinesテーブルから、アイソポリゴンのテーブルを作成します。セルフクローズドアイソライン(アイランド)またはbboxでクローズされたアイソラインから形成できることを理解しています。その場合、その特定のアイソラインからを取得する必要があります。視覚的には次のようになります。valvalval どういうわけかトポロジーを作ってから面をポリゴンに変換できると思ったのですが、どうしたらいいのかわかりません。これはどのように行うことができますか? もう1つのオプションは、bboxと作成された各ポリゴンの間の差分関数を再帰的に使用することですが、これは正しい方法ではなく、まったく高速ではありません。

2
2車線道路用の1つのラベル(osm、qgis、postgis)
私はosm-lines-layer(PostGIS)に一次道路と高速道路の記号を付けました。主要道路のシンボルは適切に配置されていますが(それぞれの間に十分な距離があります)、2車線の高速道路には車線ごとに1つのラベルが付けられています(画像で確認できます)。 同じタイプの他のラベルを配置できない範囲内で、各ラベルから半径のようなものを設定することは可能ですか?または、私は言うことができます:2車線の道路の1車線にラベルを付けますか? 私はqgisを使用しています。OSM-Dataは、osm2pgsqlを使用してPostGISにインポートされます。 編集:この新しいスクリーンショットは詳細を示しています:

2
PostGISでマンハッタン距離を計算するにはどうすればよいですか?
ST_Distance関数を使用して、2つのジオメトリ(駅と建物)間の距離を計算しています。すべての建物とすべての駅がシカゴにあり、優れた完全なストリートグリッドがあるため、マンハッタンを使用したいと思います。(またはタクシー)距離。 これの一般的な式は、Xの違いとYの違いを足したものです。したがって、Abs(X1-X2)+ Abs(Y1-Y2)になります。 これを機能させるPostgreSQLクエリは何ですか?

1
ラスターレイヤーの修正:PostGISラスターを読み込むときにプロバイダーが有効でないエラー?
私はいつものように現在のQGISマスターをコンパイルしてインストールし、postgres 9.3データベースにpostgis 2.0.2拡張子を付けていくつかのラスターデータをインポートしました。データベースマネージャーを使用してラスターデータをqgisにインポートしようとすると、次のメッセージが表示されます。 GDAL provider: Cannot get GDAL raster band: Raster layer: Provider is not valid (provider: gdal, URI: PG: dbname=gis host=127.0.0.1 user=xxx password=xxx port=5432 mode=2 schema=public table=elevation コマンドラインで、 ERROR 1: Computed PostGIS Raster dimension is invalid. You've probably specified unappropriate resolution. エラーを検索する場所がわかりません。 Postgis 2.1.2に移動したところ、同じ問題が見られます。

1
球の可視性グラフを計算する
いくつかのポリゴンを含むPostGISテーブルがあります(geographyデータタイプを使用して保存されています)。それらは球形の地球上の領域を表しています。 すべてのポリゴンの中から選択した頂点のペアごとに、これらの2つの頂点が互いに「見える」かどうかを計算します。(n *(n -1)/ 2のペアがあります。ここで、nはテーブル内のすべてのポリゴンにわたる一意の頂点の総数です。 "お互いに見える"とは、 2つの頂点がテーブル内のどのポリゴンとも交差していません。 その計算を実行する最も速い方法は何ですか(できればPostgreSQL / PostGISで)。 うまくいくものを持っていますが、遅いです。私は単純にすべてのペアを反復処理し、それらの間のLineStringがポリゴンと交差するかどうかを確認します。(PostGISのgeographyデータ型は、球体に関するすべての難しい計算を処理します。)それで、速度を上げるかもしれない巧妙なデータ構造またはアルゴリズムがあるかどうか疑問に思います。

1
QGIS / PostGISレイヤースタイル
DBへのログイン資格情報を要求するプラグインを作成しました。ログインすると、プラグインはDBからいくつかのレイヤーをロードします。DBには、adminユーザーと「通常」ユーザーの両方があります。 それぞれのレイヤーのデフォルトスタイルとして、UIから2つのスタイルをDBに保存しました(保存するには、DB管理者権限が必要です)。 スタイルをdbに保存すると、スタイルが格納されている場所を確認できません。つまり、新しいテーブルを表示できません。(スタイルがテーブルに保存されることを期待していました) QGISとプラグインを(管理者ユーザーとして)再度実行すると、レイヤースタイルが自動的に読み込まれます。 しかし、QGISとプラグインを再度実行すると(通常のユーザーrndとして)、それらは自動的にロードされません。次に、DBから(GUIから)スタイルをロードしようとしましたが、スタイルがロードされていません。 2つの質問。 レイヤースタイルはどのようにDBに保存されますか? DB管理者権限なしでレイヤースタイルをロードする方法はありますか?
9 qgis  postgis  layers  style 

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