Soy nuevo en Postgis y QGIS. Creé una vista definida como
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;
en PostgreSQL. Intentar agregar esta vista a QGIS devuelve el siguiente error ...
"Invalid layer"..."sql= is an invalid layer and cannot be loaded."
No estoy seguro de cual es el problema. La tabla se menciona en la geommetry_columns
tabla en PostGIS, pero puedo ver una entrada de mensaje en QGIS que dice "Sin campo clave para la vista dada". Estoy usando PostgreSQL 9.2 y QGIS 1.8.0.
qgis
postgis
spatial-view
ufeliciano
fuente
fuente
Respuestas:
Cuando agrega una vista de PostGIS a QGIS, debe especificar el campo de ID único. A la derecha del nombre de la capa, aparecerá un menú desplegable donde puede especificar qué campo usar. Si no tiene un campo de ID único, puede crear un campo de ID falso utilizando la función de ventana row_number () en la consulta que crea su vista.
fuente
Hoy me topé con este error con una vista que se creó a partir de una unión entre tablas. Terminó teniendo dos campos únicos que alteraron QGis. Inicialmente, la vista era como:
De esta manera, había dos campos clave principales en la vista. En cambio, tuve que especificar los campos resultantes, para terminar con un candidato de campo único para un identificador único:
fuente