Datensätze durchnummerieren

Das Skript datensaetze-nummerieren5.cal nummeriert Elemente nach dem Schema:

S_030
S_031
S_032
etc.

Damit können in ArcMap zum Beispiel ausgewählte Elemente mit einer benutzerdefinierten, fortlaufenden ID versehend werden.

Das Skript basiert auf einer Idee von Bill Huber im ArcView Forum, und auf der Online-Hilfe zu ArcMap.

Schritt für Schritt

(1) Klicken Sie in der Attributtabelle mit der rechten Maustaste auf den Spaltenkopf und öffnen Sie die Feldberechnung. Das Feld muss vom Typ her ein Textfeld sein!

(2) Wechseln Sie den Parser auf "Python"

(3) Laden Sie das Skript datensaetze-nummerieren5.cal.

(4) Passen Sie die folgenden Parameter an:

Konstante	Erklärung
Prefix	Zeichenfolge, die an den Anfang gestellt wird z.B. "S_"
Length	Anzahl der Stellen der Ziffernfolge z.B. 3, um S_001, S_002, S_003 etc. zu erzeugen
Start	Startwert z.B. 30, um mit S_030 zu beginnen
Interval	Schrittweite von einem Element zu nächsten z.B 2, um S_030, S_032, S_034 zu erzeugen
Suffix	Zeichenfolge, die ans Ende gestellt wird z.B. "a" um S_030a, S_031a, S_032a zu erzeugen

(5) Führen Sie das Skript mit "OK" aus.

Technische Details

Reihenfolge der Nummerierung

Die Datensätze werden in der Reihenfolge abgearbeitet, in der Sie in der Datenbank aufscheinen. Dies sollten Sie beim Digitalisieren neuer Schächte beachten. Üblicherweise wird in Hauptfließrichtung nummeriert.

Doppelte Bezeichnungen

Falls Sie einen Namen erzeugen, der als MUID bereits vorhanden ist, stoppt das Skript mit einer Fehlermeldung "Failed to apply changes after the row with ObjectID=22 with the calulated value. Das kann passieren, wenn Sie

a) an einer anderen Stelle im Netz einen gleich lautenden Namen vergeben haben

b) die Ziffernfolge zu kurz ist für die Anzahl der ausgewählten Elemente.

In der Zeile 22 wurde eine doppelte ID erzeugt, danach kam die Fehlermeldung der MIKE Urban Datenbank. Machen Sie den letzten Schritt rückgängig (dabei werden *alle* Zeilen wieder zurückgesetzt betroffen), und modifizieren Sie Ihren Rechenausdruck entsprechend.

Listing

rec = 0 def autoIncrement(): global rec ### Die folgenden Werte sind anzupassen: Prefix = 'Knoten_' # Zeichenfolge, die an den Anfang gestellt wird Length = 3 # Anzahl der Stellen der Ziffernfolge Start = 1 # Startwert Interval = 1 # Schrittweite Suffix = '' # Zeichenfolge, die ans Ende gestellt wird ### Fill = '00000000000000000000' if ( rec == 0 ): rec = Start else: rec = rec + Interval ID = Prefix + (Fill + str(rec))[-Length:] + Suffix return ID

Changelog

Datum	Änderung
27.11.2013	auf Python umgeschrieben (= Version 5)
14.12.2006	Prefix und Suffix eingefügt (= Version 4)