中文

错误:TypeError:序列大小必须与行的大小相匹配

错误消息

使用 InsertCursor ArcPy 函数向要素类或表添加行时,返回以下错误:

错误: 
TypeError:序列大小必须与行的大小相匹配。

原因

此错误的原因通常与字段匹配或语法错误有关。

  • 字段匹配错误

    设置要插入到要素类或表中的值时,这些字段必须与光标中的定义字段匹配。 这包括以正确的顺序进行设置并确保字段类型和长度与要插入的数据相匹配。

    在下面的示例中,插入的行值与 InsertCursor 字段不正确匹配。

    # fc 是要素类
    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)
    
  • Python 语法错误

    存在许多可能的语法错误,但此错误通常与数据列表的设置方式有关。

    在下面的示例中,XY 坐标位于元组中,该元组在列表中并非创建几何的正确格式。

    # fc 是要素类
    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)
    

解决方案或解决方法

检查以确保插入的行值与 InsertCursor 字段对齐,并且几何列表格式正确。

字段匹配错误的解决方案

仅设置插入数据所需的必要字段,如以下示例所示:

# fc 是要素类
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)
语法错误的解决方案

使用 SHAPE@XY 令牌创建单个点时,需要具有单个值的元组。 要正确识别,应使用尾随逗号写入单个值元组。

# fc 是要素类
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)

或者

拆分 SHAPE@X 和 SHAPE@Y 允许避免使用单个值的元组。

# fc 是要素类
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)

相关信息