Python 尝试基于输入创建简单的按属性选择脚本
尝试创建一个简单的按属性选择脚本,该脚本将根据ARC工具箱中工具的输入进行选择。我的数据存储在名为“控制”的要素数据集中的文件数据库中,要素类名为“纪念碑”。该领域被称为“乡镇” 这是密码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]
# 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语法角度来看,您现在编写的内容无法工作。