Processing math: 100%

2 votos

QGIS, crear una capa desde PostGIS : añadir un estilo

Estoy creando algunas capas en QGIS utilizando la conexión PostgreSQL.

Tengo un plugin de python que hace la carga de la capa en Qgis, esta parte del código se ve así :

        uri = QgsDataSourceURI()
        db = SettingsProperties.get_db()
        pg = SettingsProperties.get_postgre_settings()
        uri.setConnection(db['host'], str(db['port']), project_name, pg['user'], pg['password'])
        uri.setDataSource('work', table_name, str(column_geom))

        layer = QgsVectorLayer(uri.uri(), tr(layer_name), "postgres")

No hay problema con esto, pero ahora, me gustaría configurar el estilo al crear esta capa, esto en función del valor de alguna columna ... etc

En realidad, soy capaz de configurar el estilo a través de un .qml preparado, pero quería saber si hay una posibilidad de crear el estilo ya sea en PostgreSQL o en el script de Python de una manera "simple" y luego añadirlo a la base de datos ?

Sé que se puede guardar el estilo con la GUI de QGIS. Pero me gustaría hacer un script.

3voto

Ed B Puntos 246

Hay dos posibles soluciones, que yo sepa: La primera, es utilizar un estilo predefinido, guardado por ejemplo en un archivo .qml. Entonces puedes cargar ese archivo .qml con LAYER_OBJECT.loadNamedStyle(PATH_TO_QML), donde PATH_TO_QML obviamente apunta a la ubicación del archivo del estilo guardado:

layer = QgsVectorLayer(uri.uri(), tr(layer_name), "postgres")
layer.loadNamedStyle(PATH_TO_QML)

En segundo lugar, se puede programar su propia simbología mediante el uso de un determinado objeto de renderización. Encontrarás ejemplos en el oficial y famoso PyQGIS-Cookbook

Puede empezar con una capa de un solo símbolo, de un símbolo categorizado o de un símbolo graduado, o afinar con más símbolos o con su propio renderizador.

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