AddField.py
import arcpy
#Überprüfen Sie die Eingabeparameter
arcpy.AddMessage("GetArgumentCount() = {0}".format(arcpy.GetArgumentCount()))
for i in range(arcpy.GetArgumentCount()):
arcpy.AddMessage("type(GetParameter({0})) = {1}".format(i, type(arcpy.GetParameter(i))))
arcpy.AddMessage("GetParameterAsText({0}) = {1}".format(i, arcpy.GetParameterAsText(i)))
inFeatureLayer = arcpy.GetParameter(0)
outFeatureClass = arcpy.GetParameter(1)
#Feature-Layer kopieren
arcpy.CopyFeatures_management(inFeatureLayer, outFeatureClass)
#Feld hinzufügen
arcpy.AddField_management(outFeatureClass, "field1", "DOUBLE", field_alias = "Feld 1")
arcpy.AddField_management(outFeatureClass, "field2", "DOUBLE", field_alias = "Feld 2")
fields = ["OID@", "SHAPE@X", "SHAPE@Y", "field1", "field2"]
#Geben Sie einen Wert in das Feld ein
with arcpy.da.UpdateCursor(outFeatureClass, fields) as cursor:
arcpy.AddMessage("Feld vor der Eingabe")
for row in cursor:
arcpy.AddMessage(row)
row[3] = row[1]
row[4] = row[2]
cursor.updateRow(row)
del cursor
#Überprüfen Sie den Status nach der Eingabe
with arcpy.da.SearchCursor(outFeatureClass, fields) as cursor:
arcpy.AddMessage("Feld nach Eingabe")
for row in cursor:
arcpy.AddMessage(row)
del cursor
Bei Ausführung als Eingabe mit einem Feature-Layer, der zwei Polygone enthält.
GetArgumentCount() = 2
type(GetParameter(0)) = <class 'arcpy._mp.Layer'>
GetParameterAsText(0) =Polygon testen
type(GetParameter(1)) = <class 'geoprocessing value object'>
GetParameterAsText(1) = D:\GIS\ArcGIS_Project\GeometryTest\GeometryTest.gdb\Polygon testen_AddField
Feld vor der Eingabe
[1, 134.32332180386206, 30.338120870687362, None, None]
[2, 144.42135929631993, 39.08930527833865, None, None]
Feld nach Eingabe
[1, 134.32332180386206, 30.338120870687362, 134.32332180386206, 30.338120870687362]
[2, 144.42135929631993, 39.08930527833865, 144.42135929631993, 39.08930527833865]
Recommended Posts