Español

Error: TypeError: el tamaño de la secuencia debe coincidir con el tamaño de la fila

Mensaje de error

Al agregar filas a una clase de entidad o tabla utilizando la función InsertCursor de ArcPy, aparece el siguiente error:

Error: 
TypeError: el tamaño de la secuencia debe coincidir con el tamaño de la fila.

Causa

La causa de este error generalmente está relacionada con la coincidencia de campos o los errores de sintaxis.

  • Error de coincidencia de campo

    Al configurar los valores a insertar en la clase de entidad o tabla, los campos deben coincidir con los campos definidos dentro del cursor. Esto incluye configurarlos en el orden correcto y asegurarse de que los tipos de campo y las longitudes coincidan con los datos a insertar.

    En el siguiente ejemplo, los valores de las filas que se insertan no coinciden correctamente con los campos InsertCursor.

    # fc es una clase de entidad
    fc = "C:/data/texas.gdb/counties"
    
    rowValues = [('Anderson',(-84.0, 35.0)),
    	    ('Andrews', (-85.0, 36.0))]
    
    cur = arcpy.da.InsertCursor(fc,("NAME", "ID", "SHAPE@XY"))
    
    for row in rowValues:
        cur.insertRow(row)
    
  • Error de sintaxis de Python

    Hay muchos posibles errores de sintaxis, pero este error generalmente se relaciona con la forma en que se configura la lista de datos.

    En el siguiente ejemplo, las coordenadas x,y están en una tupla que no está formateada correctamente dentro de la lista para crear la geometría.

    # fc es una clase de entidad
    fc = "C:/data/texas.gdb/counties"
    
    rowValues = [((-84.0, 35.0)),
    	    ((-85.0, 36.0))]
    
    cur = arcpy.da.InsertCursor(fc,("SHAPE@XY"))
    
    for row in rowValues:
        cur.insertRow(row)
    

Solución o solución alternativa

Compruebe que los valores de las filas que se insertan estén alineados con los campos InsertCursor y que las listas de geometría tengan el formato correcto.

Solución para el error de coincidencia de campo

Configure solo los campos necesarios requeridos para los datos que se insertan, como se muestra en el siguiente ejemplo:

# fc es una clase de entidad
fc = "C:/data/texas.gdb/counties"

rowValues = [('Anderson',(-84.0, 35.0)),
	    ('Andrews', (-85.0, 36.0))]

cur = arcpy.da.InsertCursor(fc,("NAME", "SHAPE@XY"))

for row in rowValues:
    cur.insertRow(row)
Solución para el error de sintaxis

Cuando se utiliza el token SHAPE@XY para crear un solo punto, se requiere una tupla con un solo valor. Para que se reconozca correctamente, una tupla de un solo valor debe escribirse con una coma al final.

# fc es una clase de entidad
fc = "C:/data/texas.gdb/counties"

rowValues = [((-84.0, 35.0),),
	    ((-85.0, 36.0),)]

cur = arcpy.da.InsertCursor(fc,("SHAPE@XY"))

for row in rowValues:
    cur.insertRow(row)

OR

Sacar SHAPE@X y SHAPE@Y permite evitar una tupla con un solo valor.

# fc es una clase de entidad
fc = "C:/data/texas.gdb/counties"

rowValues = [(-84.0, 35.0), (-85.0, 36.0))]

cur = arcpy.da.InsertCursor(fc,("SHAPE@X", "SHAPE@Y"))

for row in rowValues:
    cur.insertRow(row)

Información relacionada