尝试根据输入创建一个简单的按属性选择脚本

时间:2015-09-09 15:05:56

标签: python attributes arcgis feature-selection arcpy

尝试在ARC Toolbox中创建一个简单的按属性选择脚本,该脚本将根据工具中的输入进行选择。我的数据存储在名为“Control”的Feature Dataset中的File数据库中,Feature Class称为“Monuments”。场被称为“乡镇”。

这是代码

# Select Features base on Township

import arcpy 

mxd = arcpy.mapping.MapDocument("CURRENT")

Monuments = arcpy.mapping.ListLayers(mxd, "Monuments") [0]

TWN = arcpy.GetParameterAsText(0)

arcpy.SelectLayerByAttribute_management(Monuments, "NEW_SELECTION", "Monuments.Township" = TWN)

但是收到错误消息。 “关键字不能成为表达。”

任何想法......提前致谢。

1 个答案:

答案 0 :(得分:2)

简短回答

arcpy.SelectLayerByAttribute_management(Monuments, "NEW_SELECTION", "Monuments.Township = '" + TWN + "'")

<强>说明

你尝试的方式与此基本相同:

whereClause = "Monuments.Township" = TWN
arcpy.SelectLayerByAttribute_management(Monuments, "NEW_SELECTION", whereClause)

如果你理解Python,你会发现whereClause = "Monuments.Township" = TWN不是有效的语法。您无法为"Monuments.Township"分配值,这是您的代码尝试执行的操作。同样,您无法将"Monuments.Township" = TWN作为参数传递。相反,您必须构建一个字符串,如下所示:"Monuments.Township = '" + TWN + "'"。这是有效的语法,如下所示:

whereClause = "Monuments.Township = '" + TWN + "'"
arcpy.SelectLayerByAttribute_management(Monuments, "NEW_SELECTION", whereClause)

我上面的简短回答在一行代码中做了同样的事情而不是两行。

(我向Python人道歉,他们可能会提供更准确的解释。)