QGIS、Postgis:新しいpostgisレイヤーを作成することは可能ですか?


8

状況:

多くのラインセグメント(フィーチャ)を含むpostgisベクトルレイがあります。元のレイヤーの機能のサブセットをそれぞれ含む新しいレイヤーのセットを作成し、これらのレイヤーもpostgisに保存したいと考えています。理想的には、一度だけ保存された実際の機能を持ちます。

ソースからレイヤーをロードするのではなく、新しいレイヤーを作成するための唯一の方法は、シェープファイルまたはスペーシャルライトのオプションを提供するLayer-> newを使用することです。

シェイプファイルを選択する最初に新しいレイヤーのgidおよびfid属性を指定しようとしましたが、それをpostgisにロードしようとすると、SPITが重複フィールドgidについて不平を言います。

新しいレイヤーの属性を作成しない場合、SPITはそれをうまくロードし、おそらくすべての機能を複製します。

これは見落としではなく「機能」だと思います。なぜなら、レイヤー間で機能を共有できた場合、機能を分割するとどうなるでしょうか。物事が適切に機能する場合、その機能を参照するすべてのレイヤーは、新しい部分の新しいgidで更新する必要があります。

この解釈は正しいですか?

ラッセル


1
共有機能などはありません。コピーが2つあり、一方を分割しても、もう一方は同じままです。
Nathan W

私はおそらくそれが事実であると考えました。私の問題は、何年にもわたってリレーショナルモデルとデータの正規化について徹底的に説明されてきたことです。)
Russell Fulton

回答:


4

PostGIS Managerプラグインを使用して、PostGISデータベースに新しいテーブルを作成できます。

次のようなSQLステートメントを実行することもできます。

CREATE TABLE new_table AS SELECT * FROM old_table

テーブルを複製します。


7

これはやや古い質問であり、QGISの最近のバージョンでは正しい答えが変更されています。

PostGIS Managerは非推奨になり、PostGISとSpatiaLiteの両方で機能するDB Managerに置き換えられました。

DBマネージャーはデフォルトでインストールされ、Database > DB Managerメニューエントリからアクセスできます。これにより、DB Managerウィンドウが開きます。

レイヤーを追加するデータベースも選択して、をクリックしますTable > Create table。[テーブル]メニューエントリをクリックしたときにデータベースが選択されていない場合、[テーブルの作成]オプションは表示されません。

これにより、Layer > New > New SpatiaLiteLayerがアクセスするダイアログとよく似たテーブル作成ダイアログが開きますが、レイアウトは異なります。

オプションはほとんど同じですが、最大の違いは、新しいSpatialite Layerダイアログで座標系の選択を容易にする[Specify CRS]ダイアログにアクセスできることです。[テーブルの作成]ダイアログでは、SRID番号を入力するために、事前に知っている必要があります。

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