尝试根据输入通过属性脚本创建一个简单的 select
Trying to create a simple select by attribute script based on an input
尝试通过属性脚本创建一个简单的 select,该脚本将 select 基于工具中的输入,在 ARC 工具箱中。我的数据存储在名为 "Control" 的要素数据集中的文件数据库中,要素 Class 称为 "Monuments"。字段名为 "Township".
这是代码
# 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)
但是收到错误消息。 "Keyword can't be an expression."
任何想法...提前致谢。
简答
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 人道歉,他们可能会给出更准确的解释。)
尝试通过属性脚本创建一个简单的 select,该脚本将 select 基于工具中的输入,在 ARC 工具箱中。我的数据存储在名为 "Control" 的要素数据集中的文件数据库中,要素 Class 称为 "Monuments"。字段名为 "Township".
这是代码
# 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)
但是收到错误消息。 "Keyword can't be an expression."
任何想法...提前致谢。
简答
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 人道歉,他们可能会给出更准确的解释。)