2 votos

Arcpy/Python cómo cambiar un campo de atributo basado en otra variable de atributo

Soy nuevo en python. He mirado a través de la sección de "preguntas similares" para tratar de responder a esto yo mismo y he encontrado muchas consultas python tabla de atributos que están relacionados con las operaciones estadísticas. Estas suelen llamar a alguna otra herramienta de Arcgis. Lo que me gustaría hacer es un poco diferente y no he encontrado exactamente cómo hacerlo todavía.

Tengo dos campos. El primero tiene una lista de clasificaciones de nombres para el plan general de una ciudad, como Ladera Baja, Barrio Residencial, etc. La segunda lista contiene un "código" numérico que se refiere a los usos conformes. Normalmente, tengo que seleccionar por atributos la designación específica del plan general, como Ladera Baja, y luego utilizar la calculadora de campos en las características seleccionadas para rellenar la segunda tabla de atributos con el código adecuado.

Lo que me gustaría hacer es generar los códigos en función de los nombres. Por ejemplo, si la columna del plan general tiene "Lower Hillside", la columna de códigos sería igual a "3" y así sucesivamente. Esto se repetiría también para una designación de zonificación. Como se ha señalado en los comentarios, se trata de una generación 1 a 1. Podría ver algo como la lista de nombres del plan general asignados alfabéticamente 0-x. Pero no estoy seguro de cómo hacerlo.

1voto

Aaron Puntos 25882

Puede utilizar un Actualizar Cursor para rellenar un campo basándose en los valores de otro campo.

El siguiente ejemplo tiene dos campos general_plan que ha clasificado los datos de zonificación (por ejemplo, "Residencial") y coded que es un campo de cadena vacía. Puede utilizar if/elif/else para añadir un código de clasificación entero. Por ejemplo

import arcpy

fc = r'C:\path\to\your\geodatabase.gdb\featureclass'

with arcpy.da.UpdateCursor(fc, ("general_plan", "coded")) as cursor:
    for row in cursor:
        if row[0] == "Lower Hillside":
            row[1] = 3 
        elif row[0] == "Residential Neighborhood":
            row[1] = 4
        elif row[0] == "Commercial Property":
            row[1] = 5
        else:
            row[1] = 0 # All other values
        cursor.updateRow(row)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X