In PostGIS 2.0 suche ich nach einer effizienten Möglichkeit, eine räumlich aktivierte Ansicht zu erstellen, die in QGIS angezeigt werden kann.
Ich verfolgte den Kontext von Teil 2 der Antwort von @Mike Toews auf Wie erstelle ich eine Tabelle aus vorhandenen Tabellen (Anwenden neuer Schemata) in postgis DB? und die Ansicht wird (in meinem Fall) als Punktebene im Dialogfeld "PostGIS-Ebenen hinzufügen" angezeigt. Nachdem ich die Ansicht erstellt und räumlich aktiviert habe, wurde beim Versuch, die Ansicht zu QGIS hinzuzufügen, die folgende Fehlermeldung angezeigt:
Sie müssen eine Tabelle auswählen, um eine Ebene hinzuzufügen
Kann jemand erklären, warum die räumliche Ansicht nicht in QGIS geladen wird und was ich tun muss, um sie als Ebene in QGIS ladbar zu machen?
Ich verwende derzeit QGIS v1.8 aus dem OSGEO-Installationsprogramm
I view wird aus der in PostGIS geladenen Geonames-Datenbank erstellt. Die Geoname-Tabelle / die räumlichen Daten können in QGIS ausgewählt / angezeigt werden.
Wenn ich versuche, " mt_view " auszuwählen , wird die Ansicht in QGIS im Dialogfeld angezeigt , aber ich kann sie nicht auswählen. Es wird ein gepunkteter Rahmen um den Bereich angezeigt, die Ansicht wird jedoch nicht hervorgehoben und ausgewählt.
Mir ist gerade aufgefallen, dass ich bei meiner ersten Abfrage Folgendes ausgeführt habe:
CREATE OR REPLACE VIEW data.test AS
SELECT * FROM data.geoname
WHERE admin1='MT'
Die Ansicht wird im Dialogfeld "Ebene hinzufügen" von QGIS angezeigt, ist jedoch nicht auswählbar. Wenn ich dann renne:
SELECT Populate_Geometry_Columns('data.test'::regclass);
Ich erhalte das Ergebnis "0", wobei ich der Dokumentation zufolge "1" zurückgeben sollte.
quelle
Antworten:
Ich kann bestätigen, dass es nicht möglich ist, einfach eine aufgelistete Ansicht auszuwählen.
Es scheint notwendig, zuerst die "Primärschlüsselspalte" auszuwählen. Dann wird der Tisch auswählbar:
quelle
(Aktualisiere meine Antwort leicht)
Solange sich das Feld OBJECTID (row_number) in der Spaltendefinition der Ansicht befindet , wird es von QGIS ohne Aufforderung aus dem Menü "Vektorebene hinzufügen" abgerufen.
Ich habe gerade einige alte Ansichten behoben, die gemäß der ursprünglichen Frage fehlerhaft waren, aber das Verschieben des OBJECTID-Felds an den Anfang der Ansicht hat das Problem behoben!
quelle
PRIMARY KEY
definierte hat, greift QGIS diese routinemäßig auf: Es kommt immer wieder vor, dass es die PK auf einer meiner Tabellen mit einer "auswählt" PK, obwohl fast alle meine PKs sindVARCHAR
. Das kann mit a nicht passieren,VIEW
weil PostgreSQLVIEW
s s nicht haben kannCONSTRAINT
. Aus diesem Grund ist es ziemlich sicher, dass Sie die PK fürVIEW
s manuell auswählen müssen, wenn Sie über die Schaltfläche "PostGIS-Ebenen hinzufügen" in QGIS importieren. Deshalb importiere ich sie mithilfe eines Python-Skripts.Erscheint Ihre Ansicht in der
geometry_columns
Tabelle? Laut Handbuch sollte die Ansicht in 2.0 automatisch angezeigt werden, aber ich habe es nicht ausprobiert.Versuchen Sie Folgendes zu überprüfen:
quelle
Verwendet Ihre Ansicht ein eindeutiges ganzzahliges Feld wie eine "gid" oder eine PK-Entsprechung aus einer der Tabellen in Ihrer Ansicht?
Ich weiß, dass ich in früheren Versionen von QGIS Probleme mit dem Hinzufügen von Ansichten zur Karte hatte, als es kein eindeutiges Ganzzahlfeld gab. Ich habe jedoch eine andere Fehlermeldung erhalten, die auf dieses Problem hinweist, aber es kann sich lohnen, zu prüfen, ob alle Grundlagen abgedeckt sind.
quelle