Jestem nowy w Postgis i QGIS. Utworzyłem widok zdefiniowany jako
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;
w PostgreSQL. Próba dodania tego widoku do QGIS zwraca następujący błąd ...
"Invalid layer"..."sql= is an invalid layer and cannot be loaded."
Nie jestem pewien na czym polega problem. Tabela jest wymieniona w geommetry_columns
tabeli w PostGIS, ale widzę pozycję komunikatu w QGIS, która mówi „Brak pola klucza dla danego widoku”. Używam PostgreSQL 9.2 i QGIS 1.8.0.
qgis
postgis
spatial-view
ufeliciano
źródło
źródło
Odpowiedzi:
Kiedy dodajesz widok z PostGIS do QGIS, musisz określić unikalne pole ID. Po prawej stronie nazwy warstwy pojawi się menu rozwijane, w którym możesz określić, którego pola użyć. Jeśli nie masz unikalnego pola identyfikatora, możesz utworzyć fałszywe pole identyfikatora za pomocą funkcji okna row_number () w zapytaniu tworzącym widok.
źródło
Dzisiaj natknąłem się na ten błąd z widokiem, który został utworzony z połączenia między tabelami. Skończyło się to posiadaniem dwóch unikalnych pól, które zdenerwowały QGis. Początkowo widok wyglądał następująco:
W ten sposób w widoku były dwa pola klucza głównego. Zamiast tego musiałem określić pola wynikowe, aby uzyskać jedno pole kandydujące na unikalny identyfikator:
źródło