Esiste un modo per aggiungere un'etichetta utente corrente al compositore di stampa in QGIS.
Ho pensato che potrebbe esserci qualcosa di simile al formato $ CURRENT_DATE disponibile.
Questo sarebbe in un ambiente Windows.
Esiste un modo per aggiungere un'etichetta utente corrente al compositore di stampa in QGIS.
Ho pensato che potrebbe esserci qualcosa di simile al formato $ CURRENT_DATE disponibile.
Questo sarebbe in un ambiente Windows.
Risposte:
Attualmente, si tratta di una richiesta di funzionalità non soddisfatta (vedere Funzione # 1385 ).
Potresti aggiungere le tue idee per nuovi "token" (o "campi" man mano che vengono visualizzati nella richiesta). Ricorda di includere le opzioni di formattazione consigliate secondo le classi Qt per il tipo di dati , come è stato fatto con la sintassi di $CURRENT_DATE(yyyy-MM-dd)
, che viene risolta usando QDate::currentDate().toString( formatText )
e la formattazione della stringa di classe QDate .
Tuttavia, esistono soluzioni migliori rispetto al tentativo di implementare tutti i tipi di token di cui gli utenti potrebbero aver bisogno o richiedere (che potrebbe essere un elenco in continua espansione).
Esistono attualmente almeno due mezzi per implementare una soluzione più solida:
A) Il testo dell'etichetta viene generato facoltativamente utilizzando l'Editor espressioni QGIS
Questo è attualmente il metodo utilizzato nel motore di etichettatura avanzato ...
Poiché le etichette Composer non sono relative all'origine dati di un layer della mappa, la sezione di Fields and Values
dovrebbe essere sostituita e popolata con token Print Composer più appropriati, ad esempio nome del progetto, titolo, proiezione, utente, ecc. (Le funzioni di data sono già nel master build del ramo). Fortunatamente, gli sviluppatori hanno lavorato per rendere relativamente "facile" l'aggiunta di nuove sezioni di espressione, anche se richiederebbe comunque del lavoro. Sarebbe inoltre necessario un lavoro aggiuntivo per accogliere nuovi token.
B) Il testo (o token) dell'etichetta è facoltativamente il risultato dei frammenti di Python
Sebbene non sia facile da usare come la soluzione Expression Editor, poiché richiede una comprensione di Python, l'implementazione di tale funzionalità richiederebbe probabilmente solo un singolo sforzo di sviluppo. Quindi, qualsiasi aspetto testuale di un progetto QGIS, inclusi i suoi vari elementi Composer , disponibili tramite l'API PyQGIS (cioè Python Console), è stato possibile accedere, formattare e inviare al testo.
Gli snippet di Python possono essere racchiusi in singoli token e incorporati nel testo corrente della casella di modifica del testo o essere contenuti in una casella di modifica del testo separata nella GUI, attivata dalla casella di controllo. Per motivi di sicurezza, probabilmente il codice non verrebbe eseguito automaticamente all'avvio di Composer (potrebbe essere un'opzione da consentire sempre, comunque).
L'approccio separato della casella di modifica del testo consentirebbe la convalida del codice Python e la codifica di funzioni Python specificatamente denominate, ad esempio il frammento seguente:
import getpass
from qgis.core import *
def pytoken_user():
return getpass.getuser()
def pytoken_title():
return QgsProject.instance().title()
sostituirà qualsiasi numero di token nel testo denominati $pytoken_user
o $pytoken_title
.
Entrambe le soluzioni di cui sopra sono notevolmente più estendibili rispetto all'implementazione di singoli token in linea nel codice sorgente QGIS. Potrebbero esserci anche altre soluzioni migliori.
Il Dr. Hugentobler ha recentemente rielaborato Print Composer nel ramo principale di QGIS, quindi ora è il momento ideale per richiedere tali funzionalità di etichettatura per la prossima versione di QGIS . Aggiungerò una richiesta di funzionalità per questi due APPENA POSSIBILE.