1 votos

ArcPy Calcular Gestión de Campos con Variable

Estoy intentando calcular varios campos que empiezan todos por "B01". Este cálculo consiste en multiplicar los campos por un campo que contiene un porcentaje ("TractPercent") y luego dividir los resultados de esa multiplicación por un campo de población ("BufferPOP").

El problema que tengo es incorporar la variable asociada a mi "bucle for" con mi expresión Python3.

Este es mi código:

import arcpy

### set workspaces
arcpy.env.workspace = r"C:\arcGIS_Shared\Python\Demographics.gdb"
relpath = r'C:\arcGIS_Shared\Python'
p = arcpy.mp.ArcGISProject(relpath + r'\Demographics.aprx')
m = p.listMaps('Map')[0]

layers = m.listLayers("DalyCity_HalfMile_Demographics")  
for layer in layers:
    print(layer)

    DemoFields = arcpy.ListFields(layer, "B01*", "ALL")
    for DemoField in DemoFields:
        arcpy.CalculateField_management(layer, DemoField, "(+DemoField+ * 
        !TractPercent!) / !BufferPOP!", "PYTHON3")
        print(layer.name + ' ' + DemoField + ' Calculated')

Cuando ejecuto el código de esta manera obtengo el siguiente error, pero no puedo averiguar lo que tengo que cambiar.

ERROR 000622: Failed to execute (Calculate Field). Parameters are not valid.
ERROR 000623: Invalid value type for parameter field

5voto

Oddthinking Puntos 233

Tu expresión no debe incluir nombres de variables. Estás escribiendo:

"(+DemoField+ * !TractPercent!) / !BufferPOP!"

pero debería serlo:

"(!{}! * !TractPercent!) / !BufferPOP!".format(DemoField.name)

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