ich hab wieder mal ein Problem mit Python zusammen mit ArcGIS und hab inzwischen keine Ahnung wo der Fehler liegt. Ich probiere auch schon ganze 2 Tage lang rum, wo der Fehler liegt, kann es auch schon ein ganz klein wenig eingrenzen.
Ausgangssituation: ich habe eine Tabelle mit ganze vielen Attributen. Ein Attribut (KN) beinhaltet einen Schlüssel (gespeichert als Text), der eigentlich genau 8 Stellen haben müsste. Hat er aber nicht immer, daher will ich in einer neuen Spalte den Schlüssel korrigieren.
Da es sich hier wieder um Geodaten handelt, benutze ich wie immer ArcGIS, auch da vorher und hinterher noch mehr damit gemacht wird.
Es gibt nun ein ArcGIS Tool um die Werte zu Berechnen: http://webhelp.esri.com/arcgisdesktop/9 ... anagement)
(Hier mal der Link, damit ihr genauer nachvollziehne könnt, was das Tool macht und wie es benutzt werden sollte)
Dort gibt es auch tolle Codebeispiele und da steht z.B.
Code: Alles auswählen
expression = "getclass(float(!shape.area!))"
codeblock = "def getclass(area):\
if area <= 1000:\
return 1\
if area > 1000 and area <= 10000:\
return 2\
else:\
return 3"
gp.CalculateField_management(inputFC, "areaclass", expression, "PYTHON", codeblock)
Code: Alles auswählen
grenzen = sys.argv[0]
expression = "getAGS(!KN!)"
codeblock = "def getAGS(KN):\
if len(KN) == 12:\
return KN.split(',')[0]\
elif len(KN) == 3:\
return '02000' + KN\
elif len(KN) == 11:\
return KN[0:5] + KN[8:11]\
elif len(KN) >12:\
return KN.split(',')[0]\
elif len(KN) < 3:\
return 'nichts'\
else:\
return KN"
gp.CalculateField_management(grenzen,"AGS2",expression,"PYTHON",codeblock)
Code: Alles auswählen
Traceback (most recent call last):
File "D:\Engel_DA\JOIN\test3.py", line 42, in -toplevel-
gp.CalculateField_management(grenzen,"AGS2",expression,"PYTHON",codeblock)
RuntimeError:
exceptions.SyntaxError: invalid syntax (line 1)
Failed to execute (CalculateField).[/quote]