Adicione valor no campo de atributo usando arcpy

8

Eu preciso adicionar valores a um campo existente na tabela de atributos. Os valores devem ser determinados por valores em outro campo na mesma tabela de atributos. Não consigo definir os valores em outro campo no script. Alguém pode me ajudar com isso?

poshan
fonte

Respostas:

8

Eu não usei cursores do Arc 10.1, mas aparentemente é ainda mais fácil lá.

Na 10.0, existem algumas maneiras de fazer isso, mas aqui está uma abordagem básica para iniciantes:

# Create a cursor on a feature class
cur = arcpy.UpdateCursor(myFeatureClass)

# Loop through the rows in the attribute table
for row in cur:
    # The variable sqMiles will get the value from the column
    # named 'Area_Miles'
    sqMiles = row.getValue('Area_Miles')
    # Calculate how many acres
    acres = (sqMiles * 640)
    # Assign the acres to a column named 'Area_Acres'
    row.setValue('Area_Acres', acres)
    # Apply the change
    cur.updateRow(row)

    # The loop will then move on to the next row/feature

Uma versão mais simples e condensada:

cur = arcpy.UpdateCursor(myFeatureClass)

for row in cur:
    row.setValue('Area_Acres', row.getValue('Area_Miles') * 640)
    cur.updateRow(row)

Consulte: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v0000003m000000

Tom
fonte
5
Tom, reescreva TODOS os "Arquivos de Ajuda" da ESRI usando o método usado nesta resposta. Então, mais pessoas entenderão e o mundo será um lugar mais feliz.
Jason Miller
2
Tom, siga os conselhos de @JasonMiller. E muito obrigado por resolver isso para nós. Eu me considerava analfabeta, mas agora não mais.
FaCoffee
2

Bem, existem algumas maneiras de fazer isso.

  1. Se o cálculo for bastante simples, eu usaria a ferramenta Calcular campo . Se você precisar usar o parâmetro code_block, eu usaria a opção 2, pois nem sempre é fácil obter a sintaxe correta em um script (ou na ferramenta em si).

  2. Se você estiver interessado em criar mais scripts no futuro, recomendo o uso de cursores . Você pode gravar os valores de um campo em uma lista Python e executar seus cálculos em cada item da lista com um loop for e, em seguida, gravar a lista novamente em seu novo campo.

Raramente uso Calcular campo, pois é mais fácil criar cursores para todas as fórmulas, exceto as mais simples.

Paulo
fonte