2011-08-17 49 views
1

我添加了一個字段,想通過codeblock來計算字段,但是我猜,代碼塊不工作。在輸出SHP文件,所有值顯示爲0。這裏是代碼:Python中在一個shp文件的python腳本中的字段計算問題

# An input polygon feature class 
inputFC = "D:/Delete/NewLineFeature.shp" 

gp.AddField_management(inputFC, "lenclass", "SHORT") 
# Calculation is based on a custom getclass definition 
expression = "getclass(float(!shape.length!))" 
codeblock = """\ 
def getclass(length): 
if length <= 600.0: 
return 1 
if length > 600.0 and length <= 6000.0: 
return 2 
else: 
return 3 
""" 
gp.CalculateField_management(inputFC, "lenclass", expression, "PYTHON", codeblock)` 

回答

0

三引號的字符串自動繼續執行後續行,直到匹配的結束報價,但他們也只包括任何空白你給他們。您的代碼可能有一些縮進問題。

+0

我認爲縮進是問題,可能需要在返回行前添加\ t \ t,並且在if/else語句前加\ t。看起來字符串將由其他腳本運行。 – Jim

0

Python使用空白來描繪代碼塊,而你的字符串沒有。試試這個:

codeblock = """\ 
def getclass(length): 
    if length <= 600.0: 
     return 1 
    if length > 600.0 and length <= 6000.0: 
     return 2 
    else: 
     return 3 
""" 
2

代碼塊中的縮進是包含計算字段工具的代碼塊(arcgis 10)的2個空格縮進。

def getclass(length): 
    if length <= 600.0: 
    return 1 
    if length > 600.0 and length <= 6000.0: 
    return 2 
    else: 
    return 3 
相關問題