Automatisches Generieren von Attributen mit QGIS?


11

Ich möchte IDs automatisch generieren, während ich neue Funktionen erstelle. Jedes Mal, wenn ich einen neuen Punkt erstelle, erhöht sich seine ID wie folgt um 1:

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

Wie kann ich das angreifen?

Antworten:


8

Wenn Sie mit der rechten Maustaste auf Ihre Ebene klicken und Properties > Fieldsdann auf klicken Text Edit, können Sie Standardwerte festlegen (entweder durch Eingabe eines Werts oder mithilfe eines Ausdrucks), die automatisch in der Attributtabelle angezeigt werden.

Leider $rownumfunktioniert die Verwendung eines Ausdrucks wie (mit dem Sie eindeutige IDs für Ihre Funktionen erhalten sollten) nicht (ich vermute, dass die Funktion zuerst festgeschrieben werden muss?). Wir können jedoch eine Funktion erstellen, die die Anzahl der erstellten Features zählt und 1 hinzufügt. Sie können auf den Funktionseditor zugreifen, wie im Bild gezeigt:

Funktionseditor

Erstellen Sie dann im Funktionseditor eine neue Datei oder bearbeiten Sie eine vorhandene und verwenden Sie den folgenden Code:

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

Klicken Sie auf Laden, gehen Sie zur Registerkarte Ausdruck daneben und fügen Sie den Ausdruck ein:

update()

Klicken Sie dann auf OK und Sie sollten einen Vorschauwert sehen:

Vorschau

Klicken Sie auf OK , Übernehmen usw. und hoffentlich wird beim Erstellen eines Features automatisch eine eindeutige ID in dem von Ihnen ausgewählten Feld erstellt.



3

Ich denke, Sie können beim Erstellen einer neuen Funktion keine Standardwerte festlegen, aber Sie können die folgende Problemumgehung ausprobieren:

  • Wenn Sie mit dem Erstellen Ihrer Features fertig sind, wechseln Sie zur Attributtabelle
  • Gehen Sie zum Feldrechner und erstellen Sie eine neue Spalte mit dem Namen idInt
  • Als Wert einfügen, @row_numberder eindeutige Werte entsprechend der Zeilennummer ergibt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.