Czy istnieje sposób dodania etykiety „bieżącego użytkownika” do kompozytora wydruku?

11

Czy istnieje sposób dodania bieżącej etykiety użytkownika do kompozytora wydruku w QGIS.

Myślałem, że może istnieć coś podobnego do formatu $ CURRENT_DATE.

Byłoby to w środowisku Windows.

Matt T.
źródło
1
„$ CURRENT_DATE (rrrr-MM-dd)” okazało się bardzo przydatne i zawarłem je w wielu moich szablonach kompozytorskich. Czy dostępnych jest więcej tych poleceń? Czy chcesz automatycznie wyświetlać nazwę mojego projektu, nazwę określonej warstwy itp.?
SAnderka

Odpowiedzi:

8

Obecnie jest to niespełnione żądanie funkcji (patrz funkcja nr 1385 ).

Możesz dodać swoje pomysły na nowe „tokeny” (lub „pola”, ponieważ są one identyczne w żądaniu). Pamiętaj, aby podać zalecane opcje formatowania, jak na zajęciach Qt dla typu danych , jak zostały wykonane przy użyciu składni $CURRENT_DATE(yyyy-MM-dd), która jest rozwiązane za pomocą QDate::currentDate().toString( formatText )i formatowanie QDate klasa String .


Istnieją jednak lepsze rozwiązania niż próba zaimplementowania wszystkich typów tokenów, których mogą potrzebować użytkownicy lub których mogą żądać (może to być lista rozwijana coraz częściej).

Obecnie istnieją co najmniej dwa sposoby wdrożenia bardziej niezawodnego rozwiązania:

A) Tekst etykiety jest opcjonalnie generowany za pomocą edytora wyrażeń QGIS

Jest to obecnie metoda stosowana w zaawansowanym silniku etykietowania ...

wprowadź opis zdjęcia tutaj

Ponieważ etykiety kompozytora nie są względne w stosunku do źródła danych warstwy mapy, sekcję Fields and Valuesnależy zastąpić i zapełnić bardziej odpowiednimi tokenami Print Composer, np. Nazwą projektu, tytułem, projekcją, użytkownikiem itd. (Funkcje daty są już w systemie głównym kompilacje oddziałów). Na szczęście programiści pracowali nad tym, aby względnie „łatwo” dodawać nowe sekcje wyrażeń, choć nadal wymagałoby to trochę pracy. Potrzebne będą również dodatkowe prace, aby pomieścić nowe tokeny.

B) Tekst etykiety (lub tokeny) jest opcjonalnie wynikiem fragmentów kodu w języku Python

Chociaż nie jest tak przyjazny dla użytkownika jak rozwiązanie Expression Editor, ponieważ wymaga znajomości języka Python, wdrożenie takiej funkcji wymagałoby tylko jednego wysiłku programistycznego. Następnie każdy aspekt tekstowy projektu QGIS, w tym jego różne elementy Composer , dostępne za pośrednictwem PyQGIS API (tj. Python Console), może być dostępny, sformatowany i przesłany do tekstu.

Fragmenty Pythona mogą być zawinięte w poszczególne tokeny i osadzone w bieżącym tekście pola edycji tekstu lub mogą być zawarte w oddzielnym polu edycji tekstu w interfejsie GUI, aktywowanym przez pole wyboru. Ze względów bezpieczeństwa kod prawdopodobnie nie uruchomi się automatycznie podczas uruchamiania Composer (choć może być to opcja zawsze dozwolona).

Oddzielne podejście do pola edycji tekstu umożliwiłoby sprawdzanie poprawności kodu Python i kluczowanie specyficznych nazw funkcji Python, na przykład następujący fragment kodu:

import getpass
from qgis.core import *

def pytoken_user():
    return getpass.getuser()

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

zastąpiłoby dowolną liczbę tokenów tekstowych o nazwie $pytoken_userlub $pytoken_title.


Oba powyższe rozwiązania są znacznie bardziej rozszerzalne niż implementacja pojedynczych tokenów w kodzie źródłowym QGIS. Mogą być też inne lub lepsze rozwiązania.

Dr Hugentobler niedawno przerobił Print Composer w głównej gałęzi QGIS, więc teraz jest idealny czas, aby poprosić o takie funkcje etykietowania dla następnej wersji QGIS . Dodam żądanie funkcji dla tych dwóch ASAP.

dakcarto
źródło
Zobacz powiązane żądanie funkcji na hub.qgis.org .
dakcarto
Czy któreś z tych rozwiązań stało się wydaną wersją QGIS? Czy jest to wciąż w fazie rozwoju? Dzięki