Apakah ada cara untuk menambahkan label "pengguna saat ini" ke komposer cetak?

11

Apakah ada cara untuk menambahkan label pengguna saat ini ke komposer cetak di QGIS.

Saya pikir mungkin ada sesuatu yang mirip dengan format $ CURRENT_DATE yang tersedia.

Ini akan berada di lingkungan windows.

Matt T
sumber
1
"$ CURRENT_DATE (yyyy-MM-dd)" ternyata sangat berguna dan saya memasukkannya ke dalam banyak template komposer saya. Apakah ada lebih banyak perintah ini yang tersedia? Ingin secara otomatis menampilkan nama proyek saya, atau nama layer tertentu, dll?
SAnderka

Jawaban:

8

Saat ini, ini adalah permintaan fitur yang tidak terpenuhi (lihat Fitur # 1385 ).

Anda dapat menambahkan ide-ide Anda untuk 'token' baru (atau 'bidang' saat mereka dimonikasi dalam permintaan). Ingatlah untuk memasukkan opsi format direkomendasikan sebagai per kelas Qt untuk tipe data , seperti telah dilakukan dengan sintaks $CURRENT_DATE(yyyy-MM-dd), yang diselesaikan menggunakan QDate::currentDate().toString( formatText )dan format QDate kelas string .


Namun, ada solusi yang lebih baik daripada mencoba menerapkan semua jenis token yang mungkin dibutuhkan atau diminta pengguna (yang bisa berupa daftar yang berkembang).

Saat ini setidaknya ada dua cara untuk mengimplementasikan solusi yang lebih kuat:

A) Teks label secara opsional dihasilkan menggunakan Editor Ekspresi QGIS

Saat ini metode yang digunakan dalam mesin pelabelan canggih ...

masukkan deskripsi gambar di sini

Karena label Komposer tidak relatif terhadap sumber data lapisan peta, bagian dari Fields and Valuesperlu diganti dan diisi dengan token Komposer Cetak yang lebih tepat, misalnya nama proyek, judul, proyeksi, pengguna, dll. (Fungsi tanggal sudah di master membangun cabang). Untungnya, ada pekerjaan yang dilakukan oleh pengembang untuk membuatnya relatif 'mudah' untuk menambahkan bagian ekspresi baru, meskipun itu masih membutuhkan beberapa pekerjaan. Pekerjaan tambahan juga diperlukan untuk mengakomodasi token baru.

B) Teks label (atau token) secara opsional merupakan hasil dari cuplikan Python

Meskipun tidak ramah pengguna seperti solusi Expression Editor, karena membutuhkan pemahaman tentang Python, implementasi fitur seperti itu mungkin hanya akan membutuhkan upaya pengembangan tunggal. Kemudian, setiap aspek tekstual dari proyek QGIS, termasuk berbagai item Komposernya , tersedia melalui API PyQGIS (yaitu Konsol Python), dapat diakses, diformat, dan di-output ke teks.

Cuplikan Python dapat dibungkus dengan token individual dan disematkan dalam teks saat ini dari kotak edit teks, atau dimasukkan dalam kotak edit teks terpisah di GUI, diaktifkan dengan kotak centang. Untuk alasan keamanan, kode ini mungkin tidak akan berjalan secara otomatis pada peluncuran Komposer (bisa jadi merupakan opsi untuk selalu mengizinkan).

Pendekatan kotak edit teks terpisah akan memungkinkan untuk validasi kode Python dan penguncian fungsi Python khusus bernama, misalnya potongan berikut:

import getpass
from qgis.core import *

def pytoken_user():
    return getpass.getuser()

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

akan mengganti sejumlah token teks yang bernama $pytoken_useratau $pytoken_title.


Kedua solusi di atas jauh lebih dapat dikembangkan daripada menerapkan token individual in-line dalam kode sumber QGIS. Mungkin ada solusi lain atau lebih baik.

Dr. Hugentobler baru-baru ini mengerjakan kembali Print Composer di cabang utama QGIS, jadi sekarang adalah waktu yang ideal untuk meminta fitur pelabelan seperti itu untuk versi QGIS berikutnya . Saya akan menambahkan permintaan fitur untuk dua ASAP ini.

dakcarto
sumber
Lihat permintaan fitur terkait di hub.qgis.org .
dakcarto
Apakah salah satu dari solusi ini membuatnya menjadi versi rilis QGIS? Atau apakah ini masih dalam pengembangan? Terima kasih