Spalte mit fortlaufenden Nummern in QGIS füllen?


30

Ich erstelle eine neue Spalte in meiner Attributtabelle und sie hat einen Standardwert (zum Beispiel 0). Ich möchte (wahrscheinlich mit dem Feldrechner) das Ergebnis haben, dass Zeile 1 den Wert 1 hat, Zeile 2 = 2 und so weiter, genau wie ein nummerierter Index.

Ich wäre dankbar für ein Codebeispiel für den Feldrechner (einschließlich der Verwendung von $rownum(ich glaube, ich brauche dies zum Umschalten auf die Leitung)).

Antworten:


54

$rownumSetzen Sie einfach (QGIS 2) oder @row_number(QGIS 3+) als Ausdruck. So einfach ist das. :)

Eine aktuelle Liste aller Funktionen des Feldrechners finden Sie in den offiziellen Dokumenten .


Ich bin Ihrem Ansatz gefolgt, aber ohne ersichtlichen Grund ändern sich die Zahlen an einem Punkt. Es hat perfekt von Zeile 1 zu Zeile 129 funktioniert, und nachdem es auf 789 verschoben wurde ... gibt es eine Möglichkeit, dies zu lösen?
Guillaume

1
Stellen Sie sicher, dass kein Anzeigefilter aktiviert ist, da es keinen Grund gibt, zu springen.
Lynxlynxlynx

8

@ArMoraer hat ein interessantes Plugin entwickelt, mit dem Sie steuern können, wie diese automatische Nummerierung mit dem Namen "Sortieren und Nummerieren " durchgeführt wird . Sie können damit eine Spalte mit eindeutigen Nummern füllen, indem Sie 3 andere Felder berücksichtigen, um Ihre Daten vor der Nummerierung nach Ihren Wünschen zu sortieren.

Siehe das Quellenthema: Gibt es eine Möglichkeit, Zeilennummern für sortierte Tabellen nach Spalten in QGIS zuzuweisen?



1

Für mich ist der beste und einfachste Weg, einfach $ideine idZahl zu jeder Zeile zurückzugeben, von der aus sie indiziert wird 0.


Es gibt jede Feature-ID zurück, aber die Sequenz beginnt nicht unbedingt bei 0 und weist möglicherweise fehlende Werte auf. Dies ist der Fall, wenn ein vorhandenes Feature gelöscht wurde (dh wenn Sie mit einem Layer mit 3 Features beginnen, löschen Sie # 2 und rufen Sie $ id auf, um 0 und 2 zurückzugeben.)
JGH

Sie haben Recht, wenn Werte fehlen, liegt ein Problem mit der tatsächlichen Indexnummer vor. Allerdings denke ich, dass der Aufruf $idnach dem Löschen von Zeilen bestätigen sollte @row_number. Wenn ich Ihre Bestätigung richtig verstanden habe.
Vlad

Nein, es wird Löcher hinterlassen
JGH
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.