[QGIS-es] Problema al cargar vista de postgis2.x
Francisco Salas Rosette
fsalas en pinar.geocuba.cu
Mar Nov 18 06:46:43 PST 2014
Hola a todos,
estamos trabajando en un plugin para QGis en python.
El objetivo es cargar capas de postgis 2.x a partir de varios criterios de
selección, el problema se nos presenta cuando vamos a cargar una vista
creada por nosotros , les muestro un ejemplo de creación :
CREATE OR REPLACE VIEW vcaminos AS
SELECT e.codcamino, e.codprovinc, e.codmunicip, e.desde, e.hasta,
e.longitud,
e.nombrecomu, e.poseedor, e.ancho, e.tienecunet, e.estadocune,
e.no_carril,
e.nombre, e.estadocami, e.gid,
st_intersection(st_setsrid(st_envelope('0104000000020000000101000000F8C2642A
A5650841DBF97EEA60DC12410101000000B22E6EA33C320C411D3867445C061141'::geometr
y), 2085), st_setsrid(e.the_geom, 2085))::geometry(LineString,2085) AS
the_geom
FROM caminos e
WHERE NOT
st_isempty(st_intersection(st_setsrid(st_envelope('0104000000020000000101000
000F8C2642AA5650841DBF97EEA60DC12410101000000B22E6EA33C320C411D3867445C06114
1'::geometry), 2085), st_setsrid(e.the_geom, 2085)));
ALTER TABLE vcaminos
OWNER TO postgres;
El problema está cuando tratamos de cargar la vista al mapa usando nuestro
código , nos dice La capa PostgreSQL no tiene clave primaria.. , sin
embargo si la adicionamos por la herramienta de QGis , vemos que esta llave
está definida y es gid , y si se adiciona bien al mapa.
Mi pregunta es , ¿ el problema está en la definición de la vista ?, alguien
puede orientarme al respecto
Fragmento del código que adiciona la vista al mapa :
self.Datos =
self.conexion.limitar_vista(esquema,tabla,xSupIzq,ySupIzq,xInfDer,yInfDer)
if self.Datos:
print self.Datos[0]
uri = QgsDataSourceURI()
uri.setConnection(self.server, str(self.port), self.bd,
self.user, self.password)
#aDatos = [str(esquema), str(nombre_vista), geometry_col,
tipo_tabla]
uri.setDataSource(self.Datos[0][0], self.Datos[0][1],
self.Datos[0][2])
name_capa = self.Datos[0][1].capitalize()
layer = QgsVectorLayer(uri.uri(), name_capa, "postgres")
if layer.isValid():
QgsMapLayerRegistry.instance().addMapLayer(
layer);
self.clickTool.cargoOK()
else:
self.clickTool.noData()
Saludos
Francisco Salas
----------------------------------------------------------------------------------------------------
¿Dónde estoy? ¿Qué hay a mí alrededor? ¿A dónde quiero ir? ¿Dónde está lo que busco? ¿Cómo llegar? ¿Cómo anunciar mi negocio?
Si quiere solucionar todo esto visite y descargue la nueva aplicación móvil disponible en http://andariego.geocuba.cu
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.osgeo.org/pipermail/qgis-es/attachments/20141118/01d39d2c/attachment-0002.html>
Más información sobre la lista de distribución QGIS-es