Python &引用;“值是必需的”;关于arcpy.CalculateField
我对Python非常陌生,正在尝试编写一个用于ArcGIS 10.1(arcpy)的脚本;基本思想是添加一个新字段(francis),检查其他几个字段中的值,如果有空(-99),然后将0输出到francis中,否则运行一个简单的计算。但是,我遇到了这个错误,并且很难超越它: 回溯(最近一次呼叫最后一次): 文件“C:\gislab 2\Python\take\u home\part1\prelim\u if2.py”,第28行,在arcpy.CalculateField\u管理中(输出特性类,“Francis”,“Python\u 9.3”,“”) 文件“C:\Program Files\ArcGIS\Desktop10.1\arcpy\arcpy\management.py”,第3128行,位于CalculateField e中 ExecuteError:未能执行。参数无效。错误000735:表达式:无法执行所需值(CalculateField) 这是密码Python &引用;“值是必需的”;关于arcpy.CalculateField,python,arcpy,Python,Arcpy,我对Python非常陌生,正在尝试编写一个用于ArcGIS 10.1(arcpy)的脚本;基本思想是添加一个新字段(francis),检查其他几个字段中的值,如果有空(-99),然后将0输出到francis中,否则运行一个简单的计算。但是,我遇到了这个错误,并且很难超越它: 回溯(最近一次呼叫最后一次): 文件“C:\gislab 2\Python\take\u home\part1\prelim\u if2.py”,第28行,在arcpy.CalculateField\u管理中(输出特性类,“
# Import arcpy module
import arcpy
print "start your engines"
# Script arguments
Shapefile = "C:\\gislab2\\Python\\take_home\\USCancer2000.shp"
Field_Name = Francis
Output_Feature_Class = "C:\\gislab2\\Python\\take_home\\USCancer2000.shp"
# Local variables:
USCancer2000__2_ = Output_Feature_Class
# Process: Add Field
arcpy.AddField_management(Shapefile, "Francis", "LONG", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
# Process: Calculate Field
arcpy.CalculateField_management(Output_Feature_Class, "Francis", "", "PYTHON_9.3", "")
##
### Process: If-then check for missing values
##
if "Cnt1"==-99:
Field_name=7
elif "Cnt2"==-99:
Field_name=7
elif "Cnt3"==-99:
Field_name=7
elif "Pop1"==-99:
Field_name==7
elif "Pop2"==-99:
Field_name=7
elif "Pop3"==-99:
Field_name=7
else:
Field_name=("Cnt1"+"Cnt2"+"Cnt3")/("Pop1"+"Pop2"+"Pop3")
print "done"
非常感谢!
davidarcpy.CalculateField\u management中的第三个参数告诉它要计算什么。你没有经过那里。作为测试,将该线路更换为
arcpy.CalculateField\u管理(输出特性类,“Francis”,5,“PYTHON 9.3”和“”)
并查看它是否计算
一旦它成功运行,那么您应该考虑使用表达式和代码块来执行所需的计算。请参见计算范围(第三个)示例
--备选方案--
您还可能会发现使用更方便。这似乎比使用calculateField要花更多的时间,但是它可以更快,并且省去了编写复杂代码块的麻烦
# Import arcpy module
import arcpy
print "start your engines"
# Script arguments
Shapefile = "C:\\gislab2\\Python\\take_home\\USCancer2000.shp"
Field_Name = "Francis"
# Process: Add Field
arcpy.AddField_management(Shapefile, "Francis", "LONG", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
fields = ["Cnt1", "Cnt2", "Cnt3", "Pop1", "Pop2", "Pop3", "Francis"] # the fields you want available to you in the cursor
with arcpy.da.UpdateCursor(shapefile, fields) as cursor:
for row in cursor: # step through each row
if not -99 in row: # Check for nulls
# none found, do the math
row[6] = (row[0] + row[1] + row[2]) / (row[3] + row[4] + row[5])
else:
# nulls found, zero out the result
row[6] = 0
cursor.updateRow(row) # save it
print "done"
能否显示堆栈跟踪回溯(最近一次调用):文件“C:\Gislab 2\Python\take\u home\part1\prelim\u if2.py”,第28行,在arcpy.CalculateField\u管理(输出特性类,“Francis”,“Python\u 9.3”,“Python”)文件“C:\Program Files\ArcGIS\Desktop10.1\arcpy\arcpy\arcpy\management.py”,第3128行,在CalculateField中,raise ExecuteError:未能执行。参数无效。错误000735:表达式:无法执行所需值(CalculateField)。>>提前感谢,但在您的问题中,在哪里可以正确格式化,人们可以阅读它!只是把它放在问题中,但格式仍然看起来不可靠,即使我试图将其表示为代码块,我试图修复您的回溯格式,但您粘贴的源代码已经有了所有空白,所以我不得不做很多猜测。您需要使用原始换行符进行复制。