Verwenden von ArcDesktop 10.1 & Python 2.7: Ich arbeite an einem Code, der nach Werten innerhalb von 13 Feldern sucht und basierend auf dem, was er in diesen 13 Feldern findet, verkettet er eine Zeichenfolge Ergebnis in einem vorhandenen (leeren) Feld.Fehler beim Verwenden von UpdateCursor beim Festlegen des Werts
Es verwendet einen Suchcursor, um die 13 Felder zu suchen. Verwendet dann das Ergebnis davon in einem Aktualisierungscursor, um die Zeichenfolge zu verketten.
Ich habe Probleme, das Ergebnis in das Feld mit dem setValue - Zeile 40 des Codes unter @ urow.setValue (commentsField, easementType) zu bekommen. Die Fehlermeldung ist sehr hilfreich (RuntimeError: ERROR 999999: Fehler beim Ausführen der Funktion.)
Ich bin mir nicht sicher, wie Sie den Wert korrekt in das gewünschte Feld eingeben. Jede Hilfe würde sehr geschätzt werden!
import arcpy, os, math
from itertools import izip
arcpy.env.workspace = "C:\\Users\\mdelgado\\Desktop\\WorkinDog.gdb"
#These are my variables
fc = "EASEMENTS"
commentsField = "Comments"
typeFields = ["ABANDONED", "ACCESS", "AERIAL", "BLANKET", "COMM", "DRAIN", "ELEC", "GEN_UTIL", "LANDSCAPE", "PARKING", "PIPELINE", "SAN_SEWR", "SIDEWALK", "SPECIAL", "STM_SEWR", "WATER"]
fieldNames = ["ABANDONED", "ACCESS", "AERIAL", "BLANKET", "COMMUNICATION", "DRAINAGE", "ELECTRIC", "GENERAL UTILITY", "LANDSCAPE", "PARKING", "PIPELINE", "SANITATION SEWER", "SIDEWALK", "SPECIAL", "STORM SEWER", "WATER"]
fieldValues = []
easementType = ""
#This is my search cursor
scursor = arcpy.SearchCursor(fc)
srow = scursor.next()
for field in typeFields:
srowValue = (srow.getValue(field))
fieldValues.append(srowValue)
srow = scursor.next()
print fieldValues
#This is my update cursor
ucursor = arcpy.UpdateCursor(fc)
for urow in ucursor:
#This is where I begin the loop to concatenate the comment field
for (value, name) in izip(fieldValues, fieldNames):
print str(value) + " " + name
#This is where I check each field to find out which types the easement is
if value == 1:
easementType = easementType + name + ", "
#This is where I format the final concatenated string
easementType = easementType[:-2]
print easementType
#This is where the field is updated with the final string using the cursor
urow.setValue(commentsField, easementType)
ucursor.updateRow(urow)
urow = cursor.next()
del urow
del ucursor
del srow
del scursor
Ist es korrekt ausführen, für einige Zeilen und dann brechen? Haben Sie überprüft, dass die Länge des Felds "Kommentare" ausreicht, um den längsten möglichen verketteten "Dienstbarkeitstyp" unterzubringen? – Erica
Großer Vorschlag! Als ich das betrachtete, entdeckte ich, dass ich auf einen Feldalias und nicht auf den tatsächlichen Feldnamen Bezug nahm. Das hat ein Problem gelöst. –