繁体   English   中英

ArcGIS Field Calculator:条件语句语法错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM