在shp文件的python脚本中进行字段计算的问题

时间:2011-08-17 19:49:49

标签: python arcgis

我添加了一个字段,并希望按代码块计算字段,但代码块不起作用,我想。在输出shp文件中,所有值都显示为0.以下是代码:

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Python中的三引号字符串会自动继续到后续行,直到匹配的结束引号,但它们也只包含您给它们的任何空格。您的代码可能会有一些缩进问题。

答案 2 :(得分: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
"""