Ai đó có thể giúp tôi hiểu 2 dòng cuối của mã này không:
import arcpy
arcpy.env.workspace = "c:/esripress/python/data/exercise07"
arcpy.env.overwriteOutput = True
copy = arcpy.CopyFeatures_management("airports.shp","Results/airports.shp")
fc = "Results/airports.shp"
cursor = arcpy.da.UpdateCursor(fc, ["STATE"], ' "STATE" <> \'AK\'')
for row in cursor:
row[0] = "AK"
cursor.updateRow(row)
del row
del cursor
Tôi hiểu rằng hàm vòng lặp đi qua mỗi bản ghi không có giá trị 'AK' và cung cấp cho bản ghi đó một giá trị là "AK". Nhưng những gì tôi không hiểu là những gì del row
và del cursor
có nghĩa là để làm.
Stephen đã viết một câu trả lời hay tuy nhiên anh ta không làm sáng tỏ lý do tại sao việc phát hành (xóa) các đối tượng hàng / con trỏ lại quan trọng. Một con trỏ hoặc đối tượng hàng mở để lại khóa trên lớp tính năng sẽ gây ra sự cố khi cố gắng thực hiện bất kỳ thay đổi nào đối với lớp tính năng cho đến khi phiên giữ khóa bị chấm dứt, thường là bằng cách đóng ứng dụng nhưng có thể nghiêm trọng như khởi động lại máy tính của bạn . Vì bạn chỉ có một trường nên nó không cần phải là một danh sách (chỉ là 'trạng thái', không phải là 'trạng thái'] nhưng điều đó sẽ không ngăn nó chạy, tuy nhiên nó sẽ ghi đè lên bất kỳ trạng thái nào không phải là 'AK' bằng "AK" như Stephen nói.
—
Michael Promotionson
Cảm ơn cho đầu vào của bạn, tất cả mọi thứ mà các bạn nói đều có ý nghĩa hoàn hảo. * Lưu ý, shapefile sân bay là của các sân bay ở AK, tôi đã điền vào các hồ sơ không có giá trị cho NHÀ NƯỚC.
—
Gabe
State
giá trị của bất kỳ sân bay nào trước đây không có ở Alaska