根据是否填充字段来执行ArcMap Python脚本工具

时间:2014-08-21 21:04:48

标签: python arcpy arcmap

我的问题是,如果我通过Python脚本运行ArcMap Dissolve工具,如何告诉它在一个字段中检查属性,如果该字段为空,则执行该工具另一个领域。

更具体地说,我希望Dissolve工具在名为[rt_shrt_nm]的字段中检查路由号码(当路由名称是数值时提供)。但是,如果该字段为空(有时是字段具有文本路径名称),则在[rt_long_nm]字段上执行该工具。

这就是我现在正在使用的,只是为了给你一个更好的主意,即使我知道这可能是非常错误的:

if [rt_shrt_nm] is null:
    arcpy.Dissolve_management(OutShapesFCname, outGDB, ["rt_long_nm"], "", "", "")
elif:
    arcpy.Dissolve_management(OutShapesFCname, outGDB, ["rt_shrt_nm"], "", "", "")

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用列表推导从rt_long_nm字段生成列表,并将其用于逻辑检查。列表推导搜索除None之外的所有值,并将其添加到列表中。如果列表的长度等于0,则执行一些操作,否则执行另一个操作。

import arcpy

OutShapesFCname = r'C:\path\to\fc'

vals = [row[0] for row in arcpy.da.SearchCursor(OutShapesFCname, ["rt_long_nm"]) if row[0] is not None]

if len(vals) == 0:
        arcpy.Dissolve_management(OutShapesFCname, outGDB, ["rt_long_nm"], "", "", "")
else:
        arcpy.Dissolve_management(OutShapesFCname, outGDB, ["rt_shrt_nm"], "", "", "")

答案 1 :(得分:0)

添加新列,计算主列中的值,然后选择所有空值并从辅助列计算。然后使用新列进行溶解。