Bagaimana cara menetapkan nilai default untuk atribut di shapefile?

8

Dalam QGIS 2.14.6 saya ingin mendefinisikan nilai default untuk atribut dalam shapefile (atau lapisan spasial juga) yang diterapkan jika pengguna tidak secara eksplisit menetapkan nilai.

Apakah ada cara untuk mencapai ini menggunakan alat / pengaturan standar (tanpa python)?

Jochen Schwarze
sumber
1
Tetapi terlepas dari bidang-bidang virtual ini yang bukan atribut 'nyata' dari sumber data saya (sejauh yang saya tahu hanya disimpan dengan proyek), bagaimana saya memberi tahu bidang virtual untuk bereaksi terhadap suntingan pengguna dengan cara mengatur nilainya, katakanlah 3.1415926, jika pengguna tidak menetapkan nilai atribut? Dan dapatkah itu dikonversi menjadi atribut nyata? Pertanyaan atas pertanyaan ... Selain itu, 'tanpa python' tidak wajib, saya akan baik-baik saja bahkan jika saya bisa mencapai ini dengan 'sedikit python' ;-) (Dan di mana komentar @ Joseph ?!)
Jochen Schwarze
Maaf, hapus komentar saya: "Anda dapat menggunakan bidang virtual" untuk memberikan metode yang mungkin menggunakan plugin =)
Joseph
periksa pertanyaan ini, tetapi merupakan kode python. gis.stackexchange.com/questions/192105/…
Fran Raga

Jawaban:

16

QGIS 3

Pilih layer di panel layer dan klik kiri. Pilih properti. Pilih "Formulir Atribut" seperti yang ditunjukkan di bawah ini. Pilih bidang dari daftar "Widget yang Tersedia" sebagai pertunjukan. Berikan ekspresi untuk nilai default dalam dialog "Default". Jika "Terapkan nilai default pada pembaruan" dicentang, nilainya akan disesuaikan setiap kali geometri fitur atau atribut lainnya diubah. Ini memungkinkan hal-hal seperti cap waktu "last_modified" atau "area" yang diperbarui menjadi mungkin.

Setel Nilai Default Field QGIS 3.0.3


QGIS 2.18

Mulai dari QGIS 2.18 ini dimungkinkan tanpa alat tambahan.

Cukup buka properti bidang klik pada tombol di bidang yang ingin Anda tetapkan nilai default dan masukkan ekspresi. Itu juga dapat mengambil geometri sebagai input.

masukkan deskripsi gambar di sini

Sidenote: Saya tahu bahwa pertanyaan awal menargetkan QGIS 2.14, tetapi saya pikir ini masih menarik bagi pembaca di masa depan dari pertanyaan ini.

Matthias Kuhn
sumber
1
Pasti menarik;)
Joseph
1
Baru saja melihat fitur di 2.17. Persis apa yang saya cari.
Jochen Schwarze
7

Ada plugin AutoFields yang memungkinkan Anda membuat (atau memodifikasi) bidang atribut dan memperbaruinya secara otomatis dengan ekspresi kustom .

Itu juga telah diuji dengan berbagai format dan autofields tidak dianggap sebagai bidang virtual (dikutip dari beranda plugin ):

Apakah AutoFields berfungsi dengan format vektor 'X'?

Kami telah menguji AutoFields pada PostgreSQL / PostGIS, SpatiaLite , Shapefile, WFS-T (Layanan Fitur Web Transaksional) dan lapisan Memori. Tolong beri tahu saya jika Anda menggunakan AutoFields pada format vektor lainnya.

Apakah AutoFields seperti Virtual Fields?

Nggak. Tidak seperti Bidang Virtual, AutoFields:

  • Menyimpan nilai yang dihitung dalam data;
  • Tidak tergantung pada proyek QGIS, yaitu, Anda dapat beralih antara proyek QGIS dan AutoFields akan tetap berfungsi;
  • Hanya bekerja pada layer vektor yang dapat diedit.
Yusuf
sumber
5

Karena saya ingin menggunakan nilai atribut ini yang disebutkan di atas untuk mengontrol beberapa aspek simbologi (ukuran simbol, opacity), beberapa penelitian lebih lanjut mengungkapkan bahwa dengan properti yang ditentukan data ada cara lain (dan fleksibel) yang bagus untuk mencapai ini. Ekspresi (umum)

if("attribute_name" is null, @default_value, "attribute_name")

di mana @default_valuedidefinisikan sebagai variabel proyek, mengembalikan default yang dapat didefinisikan oleh pengguna ketika tidak ada nilai yang ditetapkan untuk atribut attribute_namedan nilainya yang lain.

Tentukan variabel dalam properti proyek:

masukkan deskripsi gambar di sini

Menyiapkan ekspresi dengan properti yang ditentukan data (warna merah dengan opacity yang ditentukan pengguna dalam kasus ini):

masukkan deskripsi gambar di sini

Jochen Schwarze
sumber