我有一个脚本,它根据一个物种域(和一些其他域)对植被进行分类。我发现原始数据集中有一个错误,导致一些记录被错误分类。我正在代码中编写一个部分,以便在分类发生后查找这些记录(因为它们暂时不会修复原始层)。基本上,我正在尝试选择那些有NS的记录,但是它们的Fornon值不是20。我在ArcGIS中运行脚本作为一个脚本工具,并且不断出现语法错误。有时一些小事会把我搞得一团糟,就像格式化一样。任何关于如何解决这个或替代工作流程的建议将不胜感激
尝试进行选择,保存表达式并将其复制到代码中,但格式不同。我在Windows7 64位系统上使用ArcGIS 10.2.2。我使用IDLE编辑脚本,然后将其加载到ArcGIS中的脚本工具中
arcpy.AddMessage('> Finding Norway Spruce plantations that do not have a fornon of 20 ...')
shapefileFC = comb_raster
where_fornon1 = ("species" = 'NS04BS02WS02BF02' or "species" = 'NS05BS05' or "species" = 'NS05RS05' or "species" = 'NS06BS02BF02' or "species" = 'NS06BS03WS01' or "species" = 'NS06BS04' or "species" = 'NS06RS03BF01' or "species" = 'NS06TL03BS01' or "species" = 'NS06WS04' or "species" = 'NS07BS03' or "species" = 'NS07RS03' or "species" = 'NS07WS03' or "species" = 'NS08BF02' or "species" = 'NS08BS01BF601' or "species" = 'NS08BS02' or "species" = 'NS08RP02' or "species" = 'NS08RS01BF01' or "species" = 'NS08TL01BS01' or "species" = 'NS09BF01' or "species" = 'NS09BS01' or "species" = 'NS09RS01' or "species" = 'NS09WS01' or "species" = 'NS10' and TargetMap+'_fornon' != '20')
fields = ('L06', 'species')
# row id: 0 1
with arcpy.da.UpdateCursor(shapefileFC, fields, where_fornon1) as Cursor:
for row in Cursor:
SPECIES = row[1]
if len(SPECIES) < 4:
row[0] = 'No species data'
else:
if Spp(ex_) >= 10:
if Spp(ns_) >= 50:
row[0] ='NS plt'
else:
row[0] ='Unk plt'
我希望它能选择所有这些错误记录,并将“NS plt”写入L06字段。这样,即使它被错误分类,我们也可以抓住它并修复它
我认为其中的fornon1是一个sql,其中clase和需要是一个字符串
也许试试
否则python会尝试将其作为python代码进行计算,这肯定会导致语法错误,因此出现语法错误也就不足为奇了。您可能还需要删除
species
字段周围的双引号,因为我不知道这是否是有效的sql相关问题 更多 >
编程相关推荐