簡體   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