目次
Pythonコード
import arcpy # 入力パラメータを確認 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) # フィーチャレイヤーをコピー arcpy.CopyFeatures_management(inFeatureLayer, outFeatureClass) # フィールドを追加 arcpy.AddField_management(outFeatureClass, "field1", "DOUBLE", field_alias = "フィールド1") arcpy.AddField_management(outFeatureClass, "field2", "DOUBLE", field_alias = "フィールド2") fields = ["OID@", "SHAPE@X", "SHAPE@Y", "field1", "field2"] # フィールドに値を入力 with arcpy.da.UpdateCursor(outFeatureClass, fields) as cursor: arcpy.AddMessage("入力前のフィールド") for row in cursor: arcpy.AddMessage(row) row[3] = row[1] row[4] = row[2] cursor.updateRow(row) del cursor # 入力後の状態を確認 with arcpy.da.SearchCursor(outFeatureClass, fields) as cursor: arcpy.AddMessage("入力後のフィールド") for row in cursor: arcpy.AddMessage(row) del cursor
実行結果
ポリゴンが2つ含まれているフィーチャレイヤーを入力として実行した場合。

GetArgumentCount() = 2 type(GetParameter(0)) = <class 'arcpy._mp.Layer'> GetParameterAsText(0) = テストポリゴン type(GetParameter(1)) = <class 'geoprocessing value object'> GetParameterAsText(1) = D:\GIS\ArcGIS_Project\GeometryTest\GeometryTest.gdb\テストポリゴン_AddField 入力前のフィールド [1, 134.32332180386206, 30.338120870687362, None, None] [2, 144.42135929631993, 39.08930527833865, None, None] 入力後のフィールド [1, 134.32332180386206, 30.338120870687362, 134.32332180386206, 30.338120870687362] [2, 144.42135929631993, 39.08930527833865, 144.42135929631993, 39.08930527833865]
