J'ai un projet QGIS avec des couches, basé sur des requêtes SQL PostGIS qui utilisent la date actuelle. Étant donné que les données de la base de données changent, ces requêtes renvoient des données différentes chaque jour.
Est-il possible de changer dynamiquement le nom du calque dans le panneau d'arborescence des calques, afin qu'il représente la date actuelle? (c'est-à-dire le nom de la couche comme Traffic on 24.01.2015
, qui change chaque jour). Les données de la légende doivent être extraites de l'attribut de n'importe quelle entité d'une couche - elles ont toutes la même valeur pour le champ traffic_date
.
qgis
pyqgis
layers
query-layer
dynamic-layer
mofoyoda
la source
la source
Réponses:
Si je vous comprends bien, la réponse est oui, QGIS prend en charge les noms de couches dynamiques.
Vous devrez écrire une macro Python à exécuter à chaque ouverture du projet. Ce serait le flux de travail:
Accédez à
QGIS->Project->Project Properties
et remplacezopenProject()
par le code Python suivant:Remarque 1: Je l'ai testé sur des fichiers de formes, donc le champ dont je tire la date est
traffic_da
parce que les fichiers de formes ne prennent pas en charge plus de lettres dans les noms de champs. Ajustez cela dans le code pour travailler sur vos calques.Remarque 2: Selon la configuration de votre projet, vous devez ajouter un code de validation pour agir uniquement sur les couches que vous souhaitez. Par exemple, si vous exécutez le code sur des couches raster, des erreurs apparaîtront à coup sûr. Si vous avez besoin d'aide, ouvrez une nouvelle question, je peux vous aider.
Assurez-vous d'activer les macros sur votre projet, de cette façon:
Settings->Options->General->Enable macros: Always
Chargez vos calques dans le projet.
Enregistrez votre projet.
Chaque fois que vous ouvrez votre projet à partir de ce point, les noms de vos calques seront dynamiques, la date sera prise dans le champ
traffic_date
de la table attributaire de chaque calque.Après la première ouverture du projet, voici comment mes noms de calque ont été générés dynamiquement:
Je pense que cela peut vous aider à démarrer. Dites-moi si vous rencontrez des problèmes non évidents.
la source
on
et la bande de là jusqu'à la fin pour économiser sur l'utilisation de l'expression régulière.