¿Hay alguna manera de agregar una etiqueta de "usuario actual" al compositor de impresión?

11

¿Hay alguna manera de agregar una etiqueta de usuario actual al compositor de impresión en QGIS?

Pensé que podría haber algo similar al formato $ CURRENT_DATE disponible.

Esto sería en un entorno de Windows.

Matt T
fuente
1
"$ CURRENT_DATE (aaaa-MM-dd)" resultó ser muy útil y lo incluí en muchas de mis plantillas de compositor. ¿Hay más de estos comandos disponibles? ¿Desea mostrar automáticamente el nombre de mi proyecto o un nombre de capa determinado, etc.?
SAnderka

Respuestas:

8

Actualmente, esta es una solicitud de función no cumplida (consulte la Función # 1385 ).

Puede agregar sus ideas para nuevos 'tokens' (o 'campos' a medida que aparecen en la solicitud). Recuerde que debe incluir opciones de formato recomendado como por clases de Qt para el tipo de datos , como se ha hecho con la sintaxis de $CURRENT_DATE(yyyy-MM-dd), que se resuelve usando QDate::currentDate().toString( formatText )y formatear cadena de clase método QDate .


Sin embargo, hay mejores soluciones que tratar de implementar todos los tipos de tokens que los usuarios pueden necesitar o solicitar (que podría ser una lista que se expande cada vez más).

Actualmente hay al menos dos medios para implementar una solución más robusta:

A) El texto de la etiqueta se genera opcionalmente utilizando el Editor de expresiones QGIS

Este es actualmente el método utilizado en el motor de etiquetado avanzado ...

ingrese la descripción de la imagen aquí

Dado que las etiquetas de Composer no son relativas al origen de datos de una capa de mapa, la sección de Fields and Valuesdebería reemplazarse y rellenarse con tokens de Print Composer más apropiados, por ejemplo, nombre del proyecto, título, proyección, usuario, etc. (las funciones de fecha ya están en el maestro construcciones de rama). Afortunadamente, los desarrolladores han trabajado para que sea relativamente 'fácil' agregar nuevas secciones de expresión, aunque todavía tomaría algo de trabajo. También se necesitaría trabajo adicional para acomodar nuevos tokens.

B) El texto de la etiqueta (o tokens) es opcionalmente el resultado de fragmentos de Python

Si bien no es tan fácil de usar como la solución Expression Editor, ya que requiere una comprensión de Python, la implementación de dicha característica posiblemente solo requeriría un solo esfuerzo de desarrollo. Luego, cualquier aspecto textual de un proyecto QGIS, incluidos sus diversos elementos Composer , disponibles a través de la API PyQGIS (es decir, la Consola Python), se puede acceder, formatear y enviar a texto.

Los fragmentos de Python podrían estar envueltos en tokens individuales e incrustados en el texto actual del cuadro de edición de texto, o estar contenidos en un cuadro de edición de texto separado en la GUI, activada por la casilla de verificación. Por razones de seguridad, el código probablemente no se ejecute automáticamente en el lanzamiento de Composer (aunque podría ser una opción para permitir siempre).

El enfoque del cuadro de edición de texto separado permitiría la validación del código de Python y la codificación de funciones de Python específicamente nombradas, por ejemplo, el siguiente fragmento:

import getpass
from qgis.core import *

def pytoken_user():
    return getpass.getuser()

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

reemplazaría cualquier cantidad de tokens de texto nombrados $pytoken_usero $pytoken_title.


Ambas soluciones anteriores son considerablemente más extensibles que la implementación de tokens individuales en línea en el código fuente de QGIS. Puede haber otras o mejores soluciones, también.

El Dr. Hugentobler ha estado trabajando recientemente en el Compositor de impresión en la rama maestra de QGIS, por lo que ahora es el momento ideal para solicitar tales características de etiquetado para la próxima versión de QGIS . Agregaré una solicitud de función para estos dos lo antes posible.

dakcarto
fuente
Consulte la solicitud de función asociada en hub.qgis.org .
dakcarto
¿Alguna de estas soluciones se convirtió en una versión de lanzamiento de QGIS? ¿O esto todavía está en desarrollo? Gracias