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