尝试在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)
但是收到错误消息。 “关键字不能成为表达。”
任何想法......提前致谢。
答案 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人道歉,他们可能会提供更准确的解释。)