在Arc Pro中更新光标功能不会显示错误,但不会执行

问题描述 投票:1回答:1

我写这个是为了在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)
python gis arcgis arcpy
1个回答
0
投票

在尝试更新行之前,您没有为行分配新值。

我认为这是一个语法问题。

这两行:

row[15] == "N" and row[18] == "AER::"
row[15] == "Y" and row[18] == "BUR::"

只是测试row[15]值是否等于"N""Y"row[18]值等于"AER::""BUR::"。那些行只返回TrueFalse,行值不会被修改。

如果你想要做的是为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)
© www.soinside.com 2019 - 2024. All rights reserved.