54 votos

¿Hacer una vista espacial en PostGIS y añadirla como capa en QGIS?

En PostGIS 2.0, estoy buscando una manera eficiente de crear una vista espacialmente habilitada que se pueda ver en QGIS.

He seguido el contexto de la segunda parte de la respuesta de @Mike Toews a ¿Cómo crear una tabla a partir de tablas existentes (aplicando nuevos esquemas) en la BD de Postgis? y la vista aparece como una capa de puntos (en mi caso) en el cuadro de diálogo "Add PostGIS Layers". Pero después de crear la vista y habilitarla espacialmente, he recibido el siguiente error al intentar añadir la vista a QGIS:

Debe seleccionar una tabla para añadir una capa

¿Puede alguien explicar por qué la vista espacial no se carga en QGIS, y qué tengo que hacer para que se pueda cargar como una capa en QGIS?

Actualmente estoy usando QGIS v1.8 desde el instalador de OSGEO

La vista se construye a partir de la base de datos de geonames, cargada en PostGIS. La tabla de geonames/datos espaciales puede ser seleccionada/visualizada en QGIS sin problemas.

Cuando intento seleccionar la opción " mt_view ", QGIS ve la vista en el diálogo, pero no me deja seleccionarla. Da un cuadro punteado alrededor del área, pero no resalta ni selecciona la vista.

QGIS cannot select the mt_view as a layer


Acabo de notar que cuando ejecuto mi primera consulta:

CREATE OR REPLACE VIEW data.test AS
SELECT * FROM data.geoname
WHERE admin1='MT'

la vista aparece en el diálogo de añadir capas de QGIS, pero no se puede seleccionar. Entonces, cuando ejecuto

SELECT Populate_Geometry_Columns('data.test'::regclass);

Obtengo el resultado de "0", donde según el documentación Creo que debería devolver "1".

57voto

tobes Puntos 19

Puedo confirmar que no es posible seleccionar simplemente una vista de la lista.

Parece necesario seleccionar primero la "columna de clave primaria". Entonces la tabla se vuelve seleccionable:

enter image description here

12voto

mapBaker Puntos 5348

(Actualizando ligeramente mi respuesta)

Siempre que el campo OBJECTID (row_number) sea el primero en la definición de la columna de la vista QGIS la recogerá sin pedirle que la añada desde el menú "añadir capa vectorial".

CREATE OR REPLACE VIEW dqmt.addressverify AS 
 SELECT row_number() OVER (ORDER BY newaddresses.addressid) AS objectid,
    newaddresses.addressid
  , geom
   FROM dqmt.newaddresses;

Acabo de arreglar unas vistas antiguas que estaban rotas según la pregunta original, pero al mover el campo OBJECTID al inicio de la vista se solucionó el problema.

4voto

Adam Ernst Puntos 6939

¿Aparece su vista en el geometry_columns ¿mesa? Según el manual la vista debería aparecer automáticamente en la 2.0 pero no lo he probado.

Prueba a ejecutar lo siguiente para comprobarlo:

SELECT f_geometry_column As col_name, type, srid, coord_dimension As ndims 
FROM geometry_columns
WHERE f_table_name = 'my_spatial_table' AND f_table_schema = 'my_schema';

3voto

Shane O'Grady Puntos 1758

¿Su vista utiliza un campo entero único como un "gid" o un equivalente PK de una de las tablas de su vista?

Sé que en versiones anteriores de QGIS he tenido problemas con las vistas que se añadían al mapa cuando no había un campo entero único. Sin embargo, recibí un mensaje de error diferente señalando ese problema, pero puede valer la pena comprobar para cubrir todas las bases.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X