arcpy 在arcpy.da.UpdateCursor的for循环中嵌套了arcpy.da.SearchCursor后,for循环只执行了一次,要如何解决
时间: 2024-03-16 13:45:45 浏览: 48
在使用嵌套的 `arcpy.da.UpdateCursor` 和 `arcpy.da.SearchCursor` 进行循环操作时,如果不妥善处理游标对象可能会导致问题。你可以尝试在 `for` 循环外部先创建 `arcpy.da.SearchCursor` 游标对象,然后在 `for` 循环中使用 `with` 语句调用 `arcpy.da.UpdateCursor` 游标对象,这样可以确保游标对象的正常释放,同时确保 `for` 循环正常执行。
以下是一段示例代码,供参考:
```python
import arcpy
# 创建 SearchCursor 游标对象
with arcpy.da.SearchCursor("input_feature_class", ["field1", "field2"]) as search_cursor:
# 循环遍历每一行记录
for row in search_cursor:
# 使用 with 语句创建 UpdateCursor 游标对象
with arcpy.da.UpdateCursor("output_feature_class", ["field1", "field2"], "OID = ?", (row[0],)) as update_cursor:
# 更新记录
for update_row in update_cursor:
update_row[1] = row[1]
update_cursor.updateRow(update_row)
```
注意,在使用 `arcpy.da.UpdateCursor` 时,需要指定一个唯一标识符,这里使用的是 `OID = ?` 来表示每个记录的唯一标识符。如果你使用的是其他的唯一标识符,需要替换这里的 `OID` 字段名和 `?` 占位符。
阅读全文