[英]ArcGIS Field Calculator: Conditional statement syntax error
基本的Python / ArcPy技能在这里起作用,不确定我哪里出错了。
尝试从一个图层中随机选择10个要素,以在为此目的预留的另一个属性中放置“ 1”来表示。 基本概念是使用random.sample()生成10个FID的随机列表,然后检查列表中是否包含每个FID。 NewID是包含FID值的属性。 这是我在代码块中的内容:
import random
def randSelTen():
featurecount = arcpy.GetCount_management("layer_name")
linecount = int(str(featurecount))
lst_oids = range(0, linecount)
rand_lines = random.sample(lst_oids, 10)
if !NewID! in rand_lines:
return 1
else:
return 0
我不断收到包含!NewID!的条件的语法错误,并且无论如何我都无法修复它。 如果我替换!NewID! 如果使用整数,脚本将运行,但是输出当然不好。 任何帮助表示赞赏...谢谢!
如果将这段代码放在字段计算器的“代码块”中,那么得到语法错误的原因是因为您无法从代码块访问类似的字段。 您必须将字段作为函数的参数传递。 因此,您必须这样做:
# -----Codeblock---------
import random
def randSelTen(NewID):
featurecount = arcpy.GetCount_management("layer_name")
linecount = int(str(featurecount))
lst_oids = range(0, linecount)
rand_lines = random.sample(lst_oids, 10)
if NewID in rand_lines:
return 1
else:
return 0
# ----- Expression (goes in bottom text box of the field calculator if using GUI) -----
randSelTen(!NewID!)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.