Alguém pode me ajudar a entender o que as duas últimas linhas deste código fazem:
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
Eu entendo que a função loop passa por cada registro que não tem um valor de 'AK' e atribui a esse registro um valor de "AK". Mas o que eu não entendo é o que o del row
e del cursor
deve fazer.
Stephen escreveu uma boa resposta, no entanto, não esclareceu por que é importante liberar (excluir) objetos de linha / cursor. Um cursor aberto ou objeto de linha deixa um bloqueio na classe de recurso, o que causará problemas ao tentar fazer alterações na classe de recurso até que a sessão que retenha os bloqueios seja encerrada, geralmente fechando o aplicativo, mas pode ser tão grave quanto reiniciar o computador . Como você tem apenas um campo, ele não precisa ser uma lista (apenas 'state', não ['state'], mas isso não o interromperá; no entanto, substituirá qualquer estado que não seja 'AK' com "AK" como Stephen disse.
—
Michael Stimson
Obrigado pela sua contribuição, tudo o que vocês disseram fez todo o sentido. * Observe que o shapefile de aeroportos é de aeroportos em AK, eu estava preenchendo registros que não tinham valor para STATE.
—
Gabe
State
valor de qualquer aeroporto que não foi no Alasca