印刷コンポーザーに「現在のユーザー」ラベルを追加する方法はありますか?


11

QGISの印刷コンポーザーに現在のユーザーラベルを追加する方法はありますか。

利用可能な$ CURRENT_DATE形式に似たものがあるかもしれないと思った。

これはWindows環境で行われます。


1
「$ CURRENT_DATE(yyyy-MM-dd)」は非常に有用であることが判明し、多くの作曲家テンプレートに含めました。これらのコマンドは他にもありますか?プロジェクトの名前や特定のレイヤー名などを自動的に表示したいですか?
サンダーカ

回答:


8

現在、これは未達成の機能要求です(機能#1385を参照)。

新しい「トークン」(またはリクエストでモニークされている「フィールド」)のアイデアを追加できます。あたりとして推奨される書式設定オプション含めることを忘れないでくださいデータ型のQtのクラスをの構文で行われているように、$CURRENT_DATE(yyyy-MM-dd)使用して解決され、QDate::currentDate().toString( formatText )かつQDATEクラス文字列の書式


ただし、ユーザーが必要または要求する可能性のあるすべての種類のトークンを実装しようとするよりも優れたソリューションがあります(これはあらゆる拡張リストである可能性があります)。

現在、より堅牢なソリューションを実装するには、少なくとも2つの方法があります。

A)ラベルテキストは、オプションでQGIS Expression Editorを使用して生成されます

これは現在、高度なラベル付けエンジンで使用されている方法です...

ここに画像の説明を入力してください

Composerラベルはマップレイヤーのデータソースに関連していないため、のセクションをFields and Values置き換えて、プロジェクト名、タイトル、投影、ユーザーなど、より適切なPrint Composerトークンを入力する必要があります(日付関数は既にマスターにありますブランチビルド)。幸いなことに、開発者は新しい式セクションを比較的「簡単に」追加するための作業を行ってきましたが、まだ多少の作業が必要になります。新しいトークンに対応するには、追加の作業も必要です。

B)ラベルテキスト(またはトークン)は、オプションでPythonスニペットの結果です

Expression Editorソリューションほどユーザーフレンドリーではありませんが、Pythonを理解する必要があるため、このような機能の実装に必要な開発作業は1つだけです。その後、PyQGIS API(Pythonコンソールなど)を介して利用できる、さまざまなComposerアイテムを含む QGISプロジェクトのテキスト部分にアクセスし、フォーマットし、テキストに出力できます。

Pythonスニペットは、個々のトークンでラップしてテキスト編集ボックスの現在のテキストに埋め込むか、チェックボックスでアクティブにするGUIの別のテキスト編集ボックスに含めることができます。セキュリティ上の理由から、コードはおそらく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ソースコードに個々のトークンをインラインで実装するよりも大幅に拡張可能です。他の、またはより良い解決策もあります。

Hugentobler博士は最近、QGISのマスターブランチでPrint Composerを作り直しているため、次のバージョンのQGISでこのようなラベル付け機能要求するのに最適な時期です。これら2つのASAPの機能要求を追加します。



これらのソリューションのいずれかが、QGISのリリースバージョンになりましたか?または、これはまだ開発中ですか?ありがとう
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.