Есть ли способ добавить ярлык «текущий пользователь» в композитор печати?

11

Есть ли способ добавить текущую пользовательскую метку в композитор печати в QGIS.

Я подумал, что может быть что-то похожее на формат $ CURRENT_DATE.

Это было бы в среде Windows.

Мэтт Т
источник
1
«$ CURRENT_DATE (yyyy-MM-dd)» оказался очень полезным, и я включил его во многие мои шаблоны для композиторов. Доступны ли еще эти команды? Как автоматически показывать имя моего проекта или имя определенного слоя и т. Д.?
Сандерка

Ответы:

8

В настоящее время это невыполненный запрос функции (см. Функция # 1385 ).

Вы можете добавить свои идеи для новых «токенов» (или «полей», так как они отслеживаются в запросе). Не забудьте включить рекомендуемые параметры форматирования , как в классах Qt для типа данных , как это было сделано с синтаксисом $CURRENT_DATE(yyyy-MM-dd), который разрешен с использованием QDate::currentDate().toString( formatText )и строка класса QDate форматирования .


Тем не менее, существуют более эффективные решения, чем попытка реализовать все типы токенов, которые могут потребоваться или запрашиваться пользователями (это может быть расширяющийся список).

В настоящее время существует как минимум два способа реализации более надежного решения:

A) Текст метки необязательно генерируется с помощью редактора выражений QGIS

В настоящее время этот метод используется в расширенном движке маркировки ...

введите описание изображения здесь

Поскольку метки Composer не относятся к источнику данных слоя карты, Fields and Valuesнеобходимо заменить участок и заполнить его более подходящими токенами Print Composer, например, именем проекта, заголовком, проекцией, пользователем и т. Д. (Функции даты уже находятся в главной ветка строит). К счастью, разработчики проделали работу, позволяющую относительно легко добавлять новые разделы выражений, хотя это все равно потребует некоторой работы. Также потребуется дополнительная работа для размещения новых токенов.

B) Текст метки (или токены) может быть результатом фрагментов Python.

Хотя это и не так удобно для пользователя, как решение Expression Editor, поскольку требует понимания Python, реализация такой функции, возможно, потребует только одного усилия по разработке. Затем любой текстовый аспект проекта QGIS, включая его различные элементы Composer , доступные через PyQGIS API (т.е. консоль Python), может быть доступен, отформатирован и выведен в текст.

Фрагменты Python могут быть обернуты в отдельные токены и встроены в текущий текст поля редактирования текста, или помещены в отдельное поле редактирования текста в графическом интерфейсе, активируемое флажком. По соображениям безопасности код, вероятно, не будет автоматически запускаться при запуске Composer (хотя может быть разрешен всегда).

Подход с использованием отдельного текстового редактора позволил бы проверять код Python и вводить специальные функции Python, например, следующий фрагмент:

import getpass
from qgis.core import *

def pytoken_user():
    return getpass.getuser()

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

заменит любое количество токенов, названных $pytoken_userили $pytoken_title.


Оба вышеупомянутых решения являются значительно более расширяемыми, чем отдельные встроенные токены в исходном коде QGIS. Могут быть и другие или лучшие решения.

Доктор Хугентоблер недавно перерабатывал Print Composer в основной ветке QGIS, поэтому сейчас идеальное время для запроса таких функций маркировки для следующей версии QGIS . Я добавлю запрос функции для этих двух как можно скорее.

dakcarto
источник
См. Связанный запрос функции на hub.qgis.org .
Даккарто
Превратило ли одно из этих решений в выпускную версию QGIS? Или это все еще в разработке? Спасибо