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

时间:2018-10-11 05:53:16

标签: python arcgis arcpy

基本的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!如果使用整数,脚本将运行,但是输出当然不好。感谢您的任何帮助...谢谢!

1 个答案:

答案 0 :(得分:1)

如果将这段代码放在字段计算器的“代码块”中,那么得到语法错误的原因是因为您无法从代码块访问类似的字段。您必须将字段作为函数的参数传递。因此,您必须这样做:

# -----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!)