¿Hacer una vista espacial en PostGIS y agregarla como capa en QGIS?

48

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

Seguí el contexto de la Parte 2 de la respuesta de @Mike Toews a Cómo crear una tabla a partir de tablas existentes (aplicando nuevos esquemas) en ¿Postgis DB? , y la vista se muestra como una capa de puntos (en mi caso) en el cuadro de diálogo "Agregar capas de PostGIS". Pero después de crear la vista y habilitarla espacialmente, recibí el siguiente error al intentar agregar la vista a QGIS:

  

Debes seleccionar una tabla para agregar una capa

¿Puede alguien explicar por qué la vista espacial no se cargará en QGIS y qué debo hacer para poder cargarla como una capa en QGIS?

Actualmente estoy usando QGIS v1.8 del instalador OSGEO

I view se crea a partir de la base de datos de geonames, cargada en PostGIS. La tabla de geoname / datos espaciales se pueden seleccionar / ver en QGIS muy bien.

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

Acabodedarmecuentadequecuandoejecutomiprimeraconsulta:

CREATEORREPLACEVIEWdata.testASSELECT*FROMdata.geonameWHEREadmin1='MT'

lavistaapareceenelcuadrodediálogoAgregarcapadeQGIS,peronosepuedeseleccionar.Entoncescuandocorro:

SELECTPopulate_Geometry_Columns('data.test'::regclass);

Obtengoelresultadode"0", donde, de acuerdo con la documentación , creo que debería volver. "1".

    
pregunta RyanDalton 18.05.2012 - 07:32

4 respuestas

52

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

Parece necesario seleccionar primero la "columna de clave principal". Luego la tabla se vuelve seleccionable:

    
respondido por el underdark 18.05.2012 - 21:48
5

(Actualizando un poco mi respuesta)

Mientras el campo OBJECTID (row_number) sea el primero en la definición de columna de la vista , QGIS lo recogerá sin pedirle que lo agregue desde el menú 'agregar 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 corregir algunas vistas antiguas que se rompieron según la pregunta original, pero mover el campo OBJECTID al inicio de la vista solucionó el problema.

    
respondido por el DPSSpatial 09.11.2016 - 21:20
4

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

Intente ejecutar lo siguiente para verificar:

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';
    
respondido por el Ian Turton 18.05.2012 - 07:44
3

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

Sé que en versiones anteriores de QGIS tuve problemas con las vistas que se agregaron al mapa cuando no había un campo entero único. Sin embargo, recibí un mensaje de error diferente que señala ese problema, pero vale la pena verificarlo para cubrir todas las bases.

    
respondido por el Ando 18.05.2012 - 12:37

Lea otras preguntas en las etiquetas