Menghasilkan atribut secara otomatis dengan QGIS?


11

Saya ingin membuat ID secara otomatis saat saya membuat fitur baru. Jadi setiap kali saya membuat titik baru, ID-nya akan bertambah 1 seperti berikut:

Feature 1: id 1
Feature 2: id 2
Feature 3: id 3

Bagaimana saya bisa menyerang ini?

Jawaban:


8

Jika Anda mengklik kanan layer Anda dan pergi ke Properties > Fieldskemudian klik Text Edit, Anda dapat mengatur nilai Default (baik dengan mengetikkan nilai atau menggunakan ekspresi) yang akan muncul di tabel atribut secara otomatis.

Sayangnya, menggunakan ekspresi seperti $rownum(yang seharusnya membuat Anda id unik untuk fitur Anda) tidak berfungsi (dugaan saya adalah karena fitur tersebut harus dikomit dulu?). Tetapi kita dapat membuat fungsi yang menghitung jumlah fitur yang dibuat dan menambahkan 1. Anda dapat mengakses Editor Fungsi seperti yang ditunjukkan pada gambar:

Editor fungsi

Kemudian di Function Editor, buat file baru atau edit yang sudah ada dan gunakan kode berikut:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def update(feature, parent):
    layer = qgis.utils.iface.activeLayer()
    x = layer.featureCount()
    return x + 1

Klik Muat lalu buka tab Ekspresi di sebelahnya dan masukkan ekspresi:

update()

Kemudian klik OK dan Anda akan melihat nilai pratinjau:

Pratinjau

Klik OK , Terapkan dll dan sekarang mudah-mudahan ketika Anda membuat fitur, itu akan secara otomatis membuat id unik di bidang yang Anda pilih.



3

Saya pikir Anda tidak dapat menetapkan nilai default saat membuat fitur baru tetapi Anda bisa mencoba yang berikut ini:

  • setelah selesai membuat fitur Anda pergi ke tabel atribut
  • Buka kalkulator bidang dan buat kolom baru yang disebut iddengan tipe Int
  • Sebagai nilai masukkan @row_numberyang akan menghasilkan katup unik sesuai dengan nomor baris
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.