使用 arcpy 遍历用户定义的列表
iterating through a user defined list with arcpy
taxNo = arcpy.GetParameterAsText(0)
thisMap = arcpy.mapping.MapDocument("CURRENT")
myDF = arcpy.mapping.ListDataFrames(thisMap)[0]
myLayers = arcpy.mapping.ListLayers(myDF)
for lyr in myLayers:
if lyr.name == "Address Numbers":
arcpy.SelectLayerByAttribute_management(lyr,"NEW_SELECTION","EKEY = " + taxNo[0])
for tax in taxNo:
arcpy.SelectLayerByAttribute_management(lyr,"ADD_TO_SELECTION","EKEY = " + tax)
arcpy.AddWarning("Additional Selection " + tax)
我正在尝试在 ArcGIS 中构建一个脚本,它将 select 一系列用户定义的值,在这种情况下,我正在尝试 select 1784102 和 1784110。当我使用 arcpy.AddWarning(taxNo) 在循环之前,我得到输出“1784102;1784110”,但它一次迭代一个数字,即
附加选择 1
追加选择 7
追加选择 8
附加选择4
等等
然后碰到分号就报错。
taxNo 的参数在 ArcMap 中设置为字符串、多值、值列表。
我假设您是这样调用脚本的:
python script.py 1784102;1784110
你的变量 taxNo = arcpy.GetParameterAsText(0)
那么是一个字符串 "1784102;1784110"
。如果您在字符串上使用 "array indexes"(例如 taxNo[0]
、taxNo[1]
等),您将从该字符串中获取单个字符,即 "1"、"7"、"8" 。 ..
对您的 arcpy.GetParameterAsText(0)
结果调用 .split(';')
以将字符串 "1784102;1784110"
拆分为两个字符串的数组:["1784102", "1784110"]
。如果您需要数字项,即整数,也可以尝试 this。
taxNo = arcpy.GetParameterAsText(0).split(';')
taxNo = arcpy.GetParameterAsText(0)
thisMap = arcpy.mapping.MapDocument("CURRENT")
myDF = arcpy.mapping.ListDataFrames(thisMap)[0]
myLayers = arcpy.mapping.ListLayers(myDF)
for lyr in myLayers:
if lyr.name == "Address Numbers":
arcpy.SelectLayerByAttribute_management(lyr,"NEW_SELECTION","EKEY = " + taxNo[0])
for tax in taxNo:
arcpy.SelectLayerByAttribute_management(lyr,"ADD_TO_SELECTION","EKEY = " + tax)
arcpy.AddWarning("Additional Selection " + tax)
我正在尝试在 ArcGIS 中构建一个脚本,它将 select 一系列用户定义的值,在这种情况下,我正在尝试 select 1784102 和 1784110。当我使用 arcpy.AddWarning(taxNo) 在循环之前,我得到输出“1784102;1784110”,但它一次迭代一个数字,即
附加选择 1
追加选择 7
追加选择 8
附加选择4 等等
然后碰到分号就报错。 taxNo 的参数在 ArcMap 中设置为字符串、多值、值列表。
我假设您是这样调用脚本的:
python script.py 1784102;1784110
你的变量 taxNo = arcpy.GetParameterAsText(0)
那么是一个字符串 "1784102;1784110"
。如果您在字符串上使用 "array indexes"(例如 taxNo[0]
、taxNo[1]
等),您将从该字符串中获取单个字符,即 "1"、"7"、"8" 。 ..
对您的 arcpy.GetParameterAsText(0)
结果调用 .split(';')
以将字符串 "1784102;1784110"
拆分为两个字符串的数组:["1784102", "1784110"]
。如果您需要数字项,即整数,也可以尝试 this。
taxNo = arcpy.GetParameterAsText(0).split(';')