QGISはPostGISビューを追加しようとすると「Invalid Layer」メッセージを返しますか?


14

私はPostgisとQGISが初めてです。次のように定義されたビューを作成しました

CREATE OR REPLACE VIEW pupr.vstudentmuni AS 
 SELECT m.id AS munid, m.name AS muname, m.geom, s.code, 
    (s.name::text || ' '::text) || s.lastname::text AS fullname
   FROM pupr.municipio m, pupr.student_location l, pupr.student s
  WHERE st_within(l.geom, m.geom) AND s.code = l.code;

PostgreSQLで。このビューをQGISに追加しようとすると、次のエラーが返されます...

"Invalid layer"..."sql= is an invalid layer and cannot be loaded."

何が問題なのかわかりません。このテーブルはgeommetry_columnsPostGIS のテーブルに記載されていますが、「特定のビューにキーフィールドがありません」というメッセージがQGISに表示されます。PostgreSQL 9.2とQGIS 1.8.0を使用しています。


1
問題は一意のキーフィールドに関連しているようです。私はあなたのデータを知りません、あなたはあなたがあなたのクエリで達成したいことについてもう少し説明できるかもしれません。QGISでどのようにレイヤーを開きますか?キーを選択しましたか?説明したことから、s.codeのみが一意のキーとして使用できます。また、あなたのムニピピオジオメトリは各生徒に対して数回繰り返されますが、それはあなたが望むものですか?
アレクサンドルネトー

回答:


6

PostGISからQGISにビューを追加するとき、一意のIDフィールドを指定する必要があります。レイヤー名の右側には、使用するフィールドを指定できるドロップダウンがあります。一意のIDフィールドがない場合は、ビューを作成するクエリでrow_number()ウィンドウ関数を使用して偽のIDフィールドを作成できます。


この質問は関連しており、QGIS GUIでの一意のIDフィールドの選択に関する詳細を提供します。
RyanKDalton

そして、この質問はあなたのユニークなIDを持つビューを作成する方法の詳細を提供します。
RyanKDalton

返信ありがとうございます。提案された機能を使用して問題を解決しました。
ufeliciano

1

今日、テーブル間の結合から作成されたビューでこのエラーにぶつかりました。最終的に、QGisを混乱させる2つの一意のフィールドができました。最初は次のようなビューでした:

CREATE OR REPLACE VIEW my_view AS
SELECT *
  FROM more_data m,
       node n   
 WHERE m.id_node = n.id;

この方法では、ビューに2つの主キーフィールドがありました。代わりに、一意の識別子の単一のフィールド候補を得るために、結果のフィールドを指定する必要がありました。

CREATE OR REPLACE VIEW my_view AS
SELECT n.id,
       n.name,
       n.geom,
       m.type,
       m.other_stuff,
       m.more_stuff
  FROM more_data m,
       node n   
 WHERE m.id_node = n.id;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.