我写这个是为了在ArcGIS Pro中运行,如果其中一个单元格为真,则填充属性表中的一些单元格。当我运行脚本时,表中没有任何反应,我没有收到错误消息。我忘记了执行它的部分代码吗?谢谢!
import arcpy
fc = 'C://file//path//folder.gdb//featureclass'
fields = ['OBJECT', 'PROJECT', 'LENGTH', 'ID', 'etc.', 'FIELD', 'FIELD2',
'FIELD3', 'FIELD4', 'DV......']
with arcpy.da.UpdateCursor(fc, fields) as rows:
for row in rows:
if(row[10] == "AERIAL"):
row[15] == "N" and row[18] == "AER::"
rows.updateRow(row)
else:
if(row[10] == "BURIED"):
row[15] == "Y" and row[18] == "BUR::"
cursor.updateRow(row)
在尝试更新行之前,您没有为行分配新值。
我认为这是一个语法问题。
这两行:
row[15] == "N" and row[18] == "AER::"
row[15] == "Y" and row[18] == "BUR::"
只是测试row[15]
值是否等于"N"
或"Y"
和row[18]
值等于"AER::"
或"BUR::"
。那些行只返回True
或False
,行值不会被修改。
如果你想要做的是为row[15]
和row[18]
分配新的值,你必须做如下的代码:
import arcpy
fc = 'C://file//path//folder.gdb//featureclass'
fields = ['OBJECT', 'PROJECT', 'LENGTH', 'ID', 'etc.', 'FIELD', 'FIELD2',
'FIELD3', 'FIELD4', 'DV......']
with arcpy.da.UpdateCursor(fc, fields) as rows:
for row in rows:
if row[10] == "AERIAL":
row[15] = "N" #assign value "N" to row[15]
row[18] = "AER::" #assign value "AER::" to row[18]
cursor.updateRow(row)
elif row[10] == "BURIED":
row[15] = "Y" #assign value "Y" to row[15]
row[18] = "BUR::" #assign value "BUR::" to row[18]
cursor.updateRow(row)