Ich bin neu bei Postgis und QGIS. Ich habe eine Ansicht erstellt, die als definiert ist
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;
in PostgreSQL. Beim Versuch, diese Ansicht zu QGIS hinzuzufügen, wird der folgende Fehler zurückgegeben ...
"Invalid layer"..."sql= is an invalid layer and cannot be loaded."
Nicht sicher, was das Problem ist. Die Tabelle wird in der geommetry_columns
Tabelle in PostGIS erwähnt, aber in QGIS wird ein Nachrichteneintrag mit der Meldung "Kein Schlüsselfeld für die angegebene Ansicht" angezeigt. Ich benutze PostgreSQL 9.2 und QGIS 1.8.0.
qgis
postgis
spatial-view
ufeliciano
quelle
quelle
Antworten:
Wenn Sie eine Ansicht von PostGIS zu QGIS hinzufügen, müssen Sie das eindeutige ID-Feld angeben. Rechts neben dem Ebenennamen befindet sich ein Dropdown-Menü, in dem Sie angeben können, welches Feld verwendet werden soll. Wenn Sie kein eindeutiges ID-Feld haben, können Sie mit der Fensterfunktion row_number () in der Abfrage, die Ihre Ansicht erstellt, ein falsches ID-Feld erstellen.
quelle
Heute bin ich auf diesen Fehler mit einer Ansicht gestoßen, die aus einem Join zwischen Tabellen erstellt wurde. Es endete mit zwei einzigartigen Feldern, die QGis verärgerten. Anfangs sah die Aussicht so aus:
Auf diese Weise befanden sich zwei Primärschlüsselfelder in der Ansicht. Stattdessen musste ich die resultierenden Felder angeben, um einen einzelnen Feldkandidaten für eine eindeutige Kennung zu erhalten:
quelle