Deutsch

How To: Sortieren und Erstellen eines sequenziell angeordneten ID-Feldes in einer Attributtabelle in ArcGIS Pro

Zusammenfassung

Durch Sortierung und die Erstellung eines sequenziell angeordneten ID-Feldes in einer Attributtabelle können Daten in ArcGIS Pro effizient organisiert werden. Die größten und kleinsten Werte bzw. die wichtigsten und am wenigsten wichtigen Features in einem Layer sind so leicht zu erkennen.

Vorgehensweise

In den folgenden Schritten wird beschrieben, wie eine Sortierung vorgenommen und ein sequenziell angeordnetes ID-Feld in einer Attributtabelle in ArcGIS Pro erstellt wird. Sie können dazu drei verschiedene Optionen nutzen: die Funktion "Aufsteigend sortieren" bzw. "Absteigend sortieren", die Funktion "Feld berechnen" oder ein Python-Skript.

Mit der Funktion "Aufsteigend sortieren" bzw. "Absteigend sortieren"
  1. Klicken Sie mit der rechten Maustaste auf das gewünschte Feature, um die Attributtabelle zu öffnen.

    The image of opening attribute table.
     
  2. Klicken Sie mit der rechten Maustaste auf das gewünschte Feld in der Attributtabelle.
  3. Wählen Sie Aufsteigend sortieren, Absteigend sortieren oder Benutzerdefinierte Sortierung aus. Es wird ein sortiertes Feld erstellt.

    The image of the Sort functionality.
     
Mit der Funktion "Feld berechnen"
Hinweis:
Mit dieser Option werden nur für nicht sortierte Daten fortlaufende Zahlen erstellt, deren Reihenfolge auf der OBJECTID basiert. Bei sortierten Daten sind die generierten Nummern nicht fortlaufend.
  1. Öffnen Sie die Attributtabelle des gewünschten Features.
  2. Klicken Sie mit der rechten Maustaste auf das gewünschte Feld in der Attributtabelle.
  3. Wählen Sie Feld berechnen aus, um die Konsole Feld berechnen zu öffnen.

    The image of Calculate Field option.
     
  4. Klicken Sie in der Konsole Feld berechnen auf das Filtersymbol Hilfsmethodentyp, und wählen Sie Funktion aus.

    The image of the Helpers filter for Function.
     
  5. Doppelklicken Sie auf die Funktion Fortlaufende Nummer. Dadurch werden der Ausdruck und der Abschnitt Code-Block erstellt, mit denen die fortlaufenden Zahlen erzeugt werden.

    The image of Calculate Field console with the populated Expression and Code Block section.
     
  6. Klicken Sie auf Ausführen. Die auf dem Feld OBJECTID basierenden fortlaufenden Zahlen werden in dem Feld erstellt, das durch die Funktion Geometrie berechnen angegeben wird.
Mit einem Python-Skript über die Python-Konsole

In den folgenden Schritten wird gezeigt, wie sortierte fortlaufende Zahlen mit der ArcPy-Funktion autoIncrement() erstellt werden:

  1. Starten Sie die Python-Konsole. Klicken Sie auf die Registerkarte Analyse, und wählen Sie Python aus.

    The image of ArcGIS Pro Analysis tab.
     
  2. Importieren Sie die ArcPy-Bibliothek.
    import arcpy
  3. Legen Sie das gewünschte Feature, das Feld für die Reihenfolge und das Feld für die fortlaufenden Zahlen fest.
    sortFeat  = r'[Geodatabase]\[Feature]'
    sortField = '[Base Field to sort]'
    idField   = '[Field to populate sequential numbers]'
    Hinweis:
    Um die fortlaufenden Zahlen in einem neuen Feld zu erstellen, legen Sie ein neues Feld an, und geben Sie den neuen Feldnamen im Segment "idField" an. Weitere Informationen zum Erstellen eines neuen Feldes finden Sie im folgenden Dokument der Webhilfe: ArcGIS Pro: Feld hinzufügen.
  4. Definieren Sie einen Zählparameter.
    rec = 0
  5. Starten Sie die Funktion autoIncrement().
    def autoIncrement():
    global rec
    pStart = 1
    pInterval = 1
    if (rec == 0):
    rec = pStart
     else:
    rec += pInterval
     return rec
  6. Füllen Sie das Feld mit den fortlaufenden Zahlen, und löschen Sie zusätzliche Zeilen.
    rows = arcpy.UpdateCursor(sortFeat, "", "", "", sortField + " A")
    
    for row in rows:
        row.setValue(idField, autoIncrement())
        rows.updateRow(row)
    
    del row, rows

Im folgenden Codebeispiel wird ein voll funktionsfähiges Skript veranschaulicht.

import arcpy

sortFeat  = r'C:\Users\\Northridge.gdb\Stations' 
sortField = 'OBJECTID' 
idField   = 'Station' 
rec=0

def autoIncrement():
global rec
 pStart = 1 
 pInterval = 1 
 if (rec == 0): 
 rec = pStart 
 else: 
 rec += pInterval 
 return rec

rows = arcpy.UpdateCursor(sortFeat, "", "", "", sortField + " A")

for row in rows:
    row.setValue(idField, autoIncrement())
    rows.updateRow(row)

del row, rows

Referenzinformationen