Existe-t-il un moyen d'ajouter une étiquette «utilisateur actuel» au compositeur d'impression?

11

Existe-t-il un moyen d'ajouter une étiquette utilisateur actuelle au compositeur d'impression dans QGIS.

J'ai pensé qu'il pourrait y avoir quelque chose de similaire au format $ CURRENT_DATE disponible.

Ce serait dans un environnement Windows.

Matt T
la source
1
"$ CURRENT_DATE (aaaa-MM-jj)" s'est avéré très utile et je l'ai inclus dans plusieurs de mes modèles de compositeur. Y a-t-il plus de ces commandes disponibles? Vous souhaitez afficher automatiquement le nom de mon projet, ou un certain nom de calque, etc.?
SAnderka

Réponses:

8

Actuellement, il s'agit d'une demande de fonctionnalité non satisfaite (voir Feature # 1385 ).

Vous pouvez ajouter vos idées de nouveaux «jetons» (ou «champs» car ils sont surnommés dans la demande). Rappelez - vous d'inclure les options de formatage recommandées comme par classes de Qt pour le type de données , comme cela a été fait avec la syntaxe $CURRENT_DATE(yyyy-MM-dd), qui est résolue à l' aide QDate::currentDate().toString( formatText )et chaîne de classe QDate mise en forme .


Cependant, il existe de meilleures solutions que d'essayer d'implémenter tous les types de jetons dont les utilisateurs pourraient avoir besoin ou demander (ce qui pourrait être une liste à chaque extension).

Il existe actuellement au moins deux moyens pour implémenter une solution plus robuste:

A) Le texte d'étiquette est éventuellement généré à l'aide de l'éditeur d'expression QGIS

C'est actuellement la méthode utilisée dans le moteur d'étiquetage avancé ...

entrez la description de l'image ici

Étant donné que les étiquettes Composer ne sont pas relatives à la source de données d'une couche de carte, la section de Fields and Valuesdevrait être remplacée et remplie avec des jetons Print Composer plus appropriés, par exemple le nom du projet, le titre, la projection, l'utilisateur, etc. (les fonctions de date sont déjà dans le maître builds de branche). Heureusement, les développeurs ont travaillé pour rendre relativement «facile» l'ajout de nouvelles sections d'expression, même si cela prendrait encore un peu de travail. Des travaux supplémentaires seraient également nécessaires pour accueillir de nouveaux jetons.

B) Le texte des étiquettes (ou jetons) est éventuellement le résultat d'extraits Python

Bien qu'elle ne soit pas aussi conviviale que la solution Expression Editor, car elle nécessite une compréhension de Python, la mise en œuvre d'une telle fonctionnalité ne nécessiterait probablement qu'un seul effort de développement. Ensuite, tout aspect textuel d'un projet QGIS, y compris ses divers éléments Composer , disponibles via l'API PyQGIS (c'est-à-dire la console Python), pouvait être consulté, formaté et sorti en texte.

Les extraits de code Python peuvent être enveloppés dans des jetons individuels et incorporés dans le texte actuel de la zone d'édition de texte, ou être contenus dans une zone d'édition de texte distincte dans l'interface graphique, activée par une case à cocher. Pour des raisons de sécurité, le code ne serait probablement pas exécuté automatiquement au lancement de Composer (pourrait être une option à autoriser toujours, cependant).

L'approche de zone d'édition de texte distinct permettrait la validation du code Python et la saisie des fonctions Python spécifiquement nommées, par exemple l'extrait de code suivant:

import getpass
from qgis.core import *

def pytoken_user():
    return getpass.getuser()

def pytoken_title():
    return QgsProject.instance().title()

remplacerait n'importe quel nombre de jetons dans le texte nommés $pytoken_userou $pytoken_title.


Les deux solutions ci-dessus sont considérablement plus extensibles que l'implémentation de jetons individuels en ligne dans le code source de QGIS. Il peut également y avoir d'autres ou de meilleures solutions.

Le Dr Hugentobler a récemment retravaillé Print Composer dans la branche principale de QGIS, c'est donc le moment idéal pour demander de telles fonctionnalités d'étiquetage pour la prochaine version de QGIS . Je vais ajouter une demande de fonctionnalité pour ces deux dès que possible.

dakcarto
la source
Voir la demande de fonctionnalité associée sur hub.qgis.org .
dakcarto
Est-ce que l'une de ces solutions en a fait une version finale de QGIS? Ou est-ce encore en développement? Merci