摘要
InsertCursor 可在要素类或表上建立写入游标。 可以使用 InsertCursor 来添加新行。
说明
对点要素类使用 InsertCursor 时,创建 PointGeometry 并将其设置为 SHAPE@ 令牌操作的代价相对较高。 此时,使用诸如 SHAPE@XY、SHAPE@Z 和 SHAPE@M 等令牌定义的点要素访问反而更为快速有效。
使用不同游标在同一个工作空间上开启同步插入或更新操作时,需要启动编辑会话。
以下列出了只能在编辑会话中编辑的一些数据集类型:
- 参与拓扑的要素类
- 参与几何网络的要素类
- 参与网络数据集的要素类
- 企业级地理数据库中的版本化数据集
- 一些带有类扩展的对象和要素类
注:
不支持在包含连接表的图层上使用 InsertCursor。
语法
InsertCursor (in_table, field_names, datum_transformation)
参数 | 说明 | 数据类型 |
in_table | 要素类、图层、表或表视图。 | String |
field_names [field_names,...] | 字段名称列表(或组)。 对于单个字段,可以使用一个字符串,而不使用字符串列表。 要访问输入表中的所有字段(栅格和 BLOB 字段除外),可以使用星号 (*) 代替字段列表。 但是,为了获得较快的性能和可靠的字段顺序,建议您将字段列表限制在实际需要的字段。 不支持栅格字段。 以令牌(如 OID@)取代字段名称可访问更多的信息:
面、折线或多点要素仅可使用 SHAPE@ 令牌创建。 | String |
datum_transformation | 如果要插入的要素的空间参考与目标要素类不同,则将自动执行投影。如果两个空间参考的基准面不同,则应指定相应变换。 ListTransformations 函数可用于提供两个空间参考之间的有效基准面变换列表。 | String |
属性
属性 | 说明 | 数据类型 |
fields (只读) | 游标使用的一组字段名称。 该组将包括由 field_names 参数指定的所有字段(和令牌)。如果 field_names 参数设置为 *,则字段属性将包括游标使用的全部字段。使用 * 时,几何值将以 x,y 坐标组返回(相当于 SHAPE@XY 令牌)。 fields 属性中字段名称的排序顺序将与 field_names 参数的传递顺序一致。 | tuple |
方法概述
方法 | 说明 |
insertRow (row) | 向表中插入一行。 |
方法
insertRow (row)
参数 | 说明 | 数据类型 |
row [row,...] | 值列表或组。值的顺序必须与创建光标时所指定的顺序相同。 更新字段时,如果传入的值与字段类型匹配,则将根据需要对这些值进行转换。例如,将值 1.0 添加到字符串字段将添加为 "1.0";将值 "25" 添加到浮点型字段将添加为 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