QGIS ile otomatik olarak öznitelikler mi oluşturuyorsunuz?


11

Yeni özellikler oluştururken kimlikleri otomatik olarak oluşturmak istiyorum. Her yeni nokta oluşturduğumda kimliği aşağıdaki gibi 1 artacak:

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

Buna nasıl saldırabilirim?

Yanıtlar:


8

Eğer varsa sağ tıklayıp layer ve gidin Properties > Fieldsardından Text Edit, ayarlayabileceğiniz varsayılan değerler otomatik olarak nitelik tabloda görünecektir (bir değer yazarak veya bir ifade kullanmak suretiyle).

Maalesef, $rownum( ifadeleriniz için benzersiz kimlikler almanız gerekir) gibi bir ifade kullanmak işe yaramaz (tahminim, özelliğin önce taahhüt edilmesi gerektiğidir?). Ancak, yapılan özellik sayısını sayan ve ekleyen bir işlev oluşturabiliriz. 1. İşlev Düzenleyicisine resimde gösterildiği gibi erişebilirsiniz :

İşlev Düzenleyici

Ardından İşlev Düzenleyicisi'nde yeni bir dosya oluşturun veya mevcut bir dosyayı düzenleyin ve aşağıdaki kodu kullanın:

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

Click Yük sonra gidip İfade yanındaki sekmesi ve ifadeyi ekleyin:

update()

Ardından OK ve bir önizleme değeri görmelisiniz:

Ön izleme

Tamam , Uygula vb. ' Yi tıklayın ve şimdi bir özellik oluşturduğunuzda, otomatik olarak seçtiğiniz alanda benzersiz bir kimlik oluşturacaktır.



3

Yeni bir özellik oluştururken varsayılan değerleri ayarlayamayacağınızı düşünüyorum, ancak aşağıdaki geçici çözümü deneyebilirsiniz:

  • özelliklerinizi oluşturmayı tamamladığınızda özellik tablosuna gidin
  • Alan hesaplayıcısına gidin ve idInt türüyle adlandırılan yeni bir sütun oluşturun
  • @row_numberSatır numarasına göre benzersiz değerler verecek değer girişi olarak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.