摘要
InsertCursor 可在要素类或表上建立写入游标。可以使用 InsertCursor 来添加新行。
讨论
对点要素类使用 InsertCursor 时,创建 PointGeometry 并将其设置到 SHAPE@ 令牌操作的代价相对较高。此时,使用诸如 SHAPE@XY、SHAPE@Z 和 SHAPE@M 等令牌定义的点要素访问反而更为快速有效。
语法
InsertCursor (in_table, field_names)
参数 | 说明 | 数据类型 |
in_table | 要素类、图层、表或表视图。 | String |
field_names [field_names,...] | 字段名称列表(或组)。对于单个字段,可以使用一个字符串,而不使用字符串列表。 如果要访问输入表中的所有字段(栅格和 BLOB 字段除外),可以使用星号 (*) 代替字段列表。但是,为了获得较快的性能和可靠的字段顺序,建议您将字段列表限制在实际需要的字段。 不支持栅格字段。 以令牌(如 OID@)取代字段名称可访问更多的信息:
面、折线或多点要素仅可使用 SHAPE@ 令牌创建。 | String |
属性
属性 | 说明 | 数据类型 |
fields (只读) | A tuple of field names used by the cursor. The tuple will include all fields (and tokens) specified by the field_names argument. If the field_names argument is set to "*", the fields property will include all fields used by the cursor. When using "*", geometry values will be returned in a tuple of the x,y-coordinates (equivalent to the SHAPE@XY token). | tuple |
方法概述
方法 | 说明 |
insertRow (row) | 向表中插入一行。 |
方法
insertRow (row)
参数 | 说明 | 数据类型 |
row [row,...] | A list or tuple of values. The order of values must be in the same order as specified when creating the cursor. When updating fields, if the incoming values match the type of field, the values will be cast as necessary. For example, a value of 1.0 to a string field will be added as "1.0", and a value of "25" added to a float field will be added as 25.0. | tuple |
返回值
数据类型 | 说明 |
Integer | insertRow 将返回新行的 objectid。 |
代码实例
使用 InsertCursor 在表中插入新行。
import arcpy
import datetime
# Create an insert cursor for a table specifying the fields that will
# have values provided
fields = ['rowid', 'distance', 'CFCC', 'DateInsp']
cursor = arcpy.da.InsertCursor('D:/data/base.gdb/roads_maint', fields)
# Create 25 new rows. Set default values on distance and CFCC code
for x in range(0, 25):
cursor.insertRow((x, 100, 'A10', datetime.datetime.now()))
# Delete cursor object
del cursor
使用 InsertCursor 和 SHAPE@XY 令牌将点要素添加到点要素类中。
import arcpy
# A list of values that will be used to construct new rows
row_values = [('Anderson', (1409934.4442000017, 1076766.8192000017)),
('Andrews', (752000.2489000037, 1128929.8114))]
# Open an InsertCursor
cursor = arcpy.da.InsertCursor('C:/data/texas.gdb/counties',
['NAME', 'SHAPE@XY'])
# Insert new rows that include the county name and a x,y coordinate
# pair that represents the county center
for row in row_values:
cursor.insertRow(row)
# Delete cursor object
del cursor
使用 InsertCursor 和 SHAPE@ 令牌添加一个使用几何对象的新要素。
import arcpy
# Create a polyline geometry
array = arcpy.Array([arcpy.Point(459111.6681, 5010433.1285),
arcpy.Point(472516.3818, 5001431.0808),
arcpy.Point(477710.8185, 4986587.1063)])
polyline = arcpy.Polyline(array)
# Open an InsertCursor and insert the new geometry
cursor = arcpy.da.InsertCursor('C:/data/texas.gdb/counties', ['SHAPE@'])
cursor.insertRow([polyline])
# Delete cursor object
del cursor