2 votos

Entrada duplicada en la tabla layer_styles con PyQGIS

Me gustaría duplicar una entrada en QGIS (2.18.21) layer_styles (en una base de datos PostGIS) mediante los siguientes pasos:

Desde una conexión PostGIS con estilos guardados en la base de datos añadir layer_styles al proyecto y seleccionarla en el panel de capas.

Usando el siguiente código en la consola de python intento duplicar una de las características de la tabla:

>>> l = iface.activeLayer()
>>> f = [f for f in l.getFeatures()]
>>> f
[<qgis._core.QgsFeature object at 0x0000000029F4C378>, <qgis._core.QgsFeature object at 0x0000000029F4A048>]
>>> l.addFeature(f[0])
False

Ahora bien, ¿por qué addFeature() devolver False aquí y cómo puedo duplicar una entrada en layer_styles tabla con PyQGIS?

1voto

bretddog Puntos 210

Si desea tomar un estilo que se almacena en la tabla PostGIS layer_styles no se aplica a las características sino a toda la capa.

Propongo esta solución que no necesita un estilo duplicado:

layer = iface.activeLayer() # Holds table B
sql= "select  styleqml from public.layer_styles WHERE stylename = '%s'" %( "Your table name A")
query = QSqlQuery(self.db) # holds connection to your db
query.exec_(sql)
while query.next():
    style  = query.record().value("styleqml")
layer.applyNamedStyle(style)

Con este enfoque, se obtiene el estilo de la capa A a la capa B

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