Tengo un proyecto QGIS con capas, basado en consultas SQL PostGIS que usan la fecha actual. Como los datos en la base de datos cambian, estas consultas devuelven datos diferentes cada día nuevo.
¿Es posible cambiar dinámicamente el nombre de la capa en el panel del árbol de capas, por lo que representa la fecha actual? (es decir, el nombre de la capa Traffic on 24.01.2015
, que cambia cada día). Los datos para el título deben tomarse del atributo de cualquier entidad en una capa; todos tienen el mismo valor para el campo traffic_date
.
qgis
pyqgis
layers
query-layer
dynamic-layer
mofoyoda
fuente
fuente
Respuestas:
Si lo entendí bien, la respuesta es sí, QGIS admite nombres de capa dinámicos.
Debería escribir una macro de Python para que se ejecute cada vez que se abra el proyecto. Este sería el flujo de trabajo:
Vaya
QGIS->Project->Project Properties
y reemplaceopenProject()
con el siguiente código de Python:Nota 1: Lo probé en archivos de forma, por lo que el campo del que tomo las fechas se
traffic_da
debe a que los archivos de forma no admiten más letras en los nombres de campo. Ajuste eso en el código para trabajar en sus capas.Nota 2: Dependiendo de la configuración de su proyecto, debe agregar un código de validación para actuar solo en las capas que desee. Por ejemplo, si ejecuta el código en capas ráster, los errores aparecerán con seguridad. Si necesita ayuda con esto, abra una nueva pregunta, puedo ayudarlo.
Asegúrese de habilitar macros en su proyecto, de esta manera:
Settings->Options->General->Enable macros: Always
Cargue sus capas al proyecto.
Guarda tu proyecto.
Cada vez que abra su proyecto desde este punto, los nombres de sus capas serán dinámicos, la fecha se tomará del campo
traffic_date
en la tabla de atributos de cada capa.Después de la primera vez que abrí el proyecto, así es como se generaron dinámicamente los nombres de mis capas:
Creo que esto puede ayudarte a comenzar. Dime si te enfrentas a problemas no obvios.
fuente
on
y la tira desde allí hasta el final para ahorrar en el uso de expresiones regulares.