我的问题是,如果我通过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"], "", "", "")
谢谢!
答案 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)
添加新列,计算主列中的值,然后选择所有空值并从辅助列计算。然后使用新列进行溶解。