Python 尝试基于输入创建简单的按属性选择脚本

Python 尝试基于输入创建简单的按属性选择脚本,python,attributes,arcgis,feature-selection,arcpy,Python,Attributes,Arcgis,Feature Selection,Arcpy,尝试创建一个简单的按属性选择脚本,该脚本将根据ARC工具箱中工具的输入进行选择。我的数据存储在名为“控制”的要素数据集中的文件数据库中,要素类名为“纪念碑”。该领域被称为“乡镇” 这是密码 # Select Features base on Township import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") Monuments = arcpy.mapping.ListLayers(mxd, "Monuments") [0]

尝试创建一个简单的按属性选择脚本,该脚本将根据ARC工具箱中工具的输入进行选择。我的数据存储在名为“控制”的要素数据集中的文件数据库中,要素类名为“纪念碑”。该领域被称为“乡镇”

这是密码

# 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)
但是获取错误消息。“关键字不能是表达式。”


任何想法。。。提前感谢。

简短回答

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

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

whereClause = "Monuments.Township" = TWN
arcpy.SelectLayerByAttribute_management(Monuments, "NEW_SELECTION", whereClause)
如果您理解Python,您将认识到
whereClause=“Monuments.town”=TWN
是无效语法。您不能将值指定给
“纪念碑.城镇”
,这是您的代码尝试执行的操作。同样,您不能将
“Monuments.town”=TWN
作为参数传递。相反,您必须构建一个字符串,如下所示:
“Monuments.town=”“+TWN+””
。这是有效的语法,如下所示:

whereClause = "Monuments.Township = '" + TWN + "'"
arcpy.SelectLayerByAttribute_management(Monuments, "NEW_SELECTION", whereClause)
我上面的简短回答在一行代码而不是两行代码中做了同样的事情


(我向Python人道歉,他们可能会给出更精确的解释。)

你期待什么
“纪念碑镇”=TWN
作为参数使用?这是选择纪念碑层中所有记录的方程式,即Town=输入参数。但这不能是关键字Arguments,那么编写该参数的最佳方式是什么?我完全不知道,我从未使用过
arcpy
。我只是告诉您,从基本的Python语法角度来看,您现在编写的内容无法工作。