Feld zum automatischen Inkrementieren basierend auf Gruppen innerhalb der Feature-Class?


10

Ich muss ein Feld basierend auf Gruppen innerhalb einer Feature-Class automatisch inkrementieren. Ich habe 8 Diagramme innerhalb eines bestimmten Polygons und muss ihnen für jeden Satz von Diagrammen in jedem Polygon eine ID von 1 bis 8 zuweisen. Das Polygon hätte eine eigene eindeutige ID-Nummer, die zum Gruppieren der Diagramme verwendet werden könnte.

Ich gehe davon aus, dass dies eine Änderung wäre:

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

1
Sie möchten wahrscheinlich über die Verwendung des Modul-Operators von Python ( %)
Vince

Antworten:


12

Feldrechner für Python

d={}
def GroupOrder(groupID):
  if groupID in d: d[groupID]+=1
  else: d[groupID]=1
  return d[groupID]

---------------------------

GroupOrder( !locality! )

Ändern Sie! Ort! zu relevantem Feld.

UPDATE: Diese Variation des Ausdrucks:

d={}
def GroupOrder(groupID):
  N=d.get(groupID,0);N+=1
  d[groupID]=N
  return N

Sollte bei großen Datenmengen viel schneller funktionieren.


Wenn die GroupOrder-Funktion in einem eigenständigen Python-Skript GroupOrderverwendet würde, wäre die Funktion das code blockArgument und das Argument GroupOrder( !locality! )'expression'.
user3467260

Im Skript ist es: a) Wörterbuch erstellen b) Cursor auf 2 Feldgruppen aktualisieren und eines ausfüllen. 3-5 Codezeilen.
FelixIP

1
Ich habe es versäumt, in meinem Kommentar zu erwähnen, dass diese Argumente im arcpy-Berechnungsfeld-Tool enthalten arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON_9.3", codeblock)wären : wenn sie in einem eigenständigen Skript verwendet würden. Vielen Dank, dass Sie die Schritte eines anderen Ansatzes zur Verwendung Ihres Codes in einem eigenständigen Skript beschrieben haben.
user3467260

Alles gut. Jedenfalls habe ich den Eindruck, dass der Cursor viel schneller ist als der Feldrechner.
FelixIP
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.