InsertCursor (arcpy.da)
摘要
InsertCursor 可在要素类或表上建立写入游标。可以使用 InsertCursor 来添加新行。
讨论
对点要素类使用 InsertCursor 时,创建 PointGeometry 并将其设置到 SHAPE@ 令牌操作的代价相对较高。此时,使用诸如 SHAPE@XY、SHAPE@Z 和 SHAPE@M 等令牌定义的点要素访问反而更为快速有效。
使用不同游标在同一个工作空间上开启同步插入和/或更新操作时,需要启动编辑会话。
不能将 arcpy.da.InsertCursor 与 arcpy.InsertCursor 相混淆。
语法
参数 | 说明 | 数据类型 |
in_table |
要素类、图层、表或表视图。 | String |
field_names [field_names,...] | 字段名称列表(或组)。对于单个字段,可以使用一个字符串,而不使用字符串列表。 如果要访问输入表中的所有字段(栅格和 BLOB 字段除外),可以使用星号 (*) 代替字段列表。但是,为了获得较快的性能和可靠的字段顺序,建议您将字段列表限制在实际需要的字段。 不支持栅格字段。 以令牌(如 OID@)取代字段名称可访问更多的信息:
Polygon, polyline, or multipoint features can only be created using the SHAPE@ token. 注: SHAPE@JSON、SHAPE@WKB 和 SHAPE@WKT 令牌在 ArcGIS 10.1 Service Pack 1 中可用。 | 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) |
向表中插入一行。 |
方法
参数 | 说明 | 数据类型 |
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 |
代码实例
使用 InsertCursor 在表中插入新行。
import arcpy
import time
# Create an insert cursor for a table specifying the fields that will
# have values provided
#
c = arcpy.da.InsertCursor("D:/data/base.gdb/roads_maint",
("rowid", "distance", "CFCC", "DateInsp"))
# Create 25 new rows. Set default values on distance and CFCC code
#
for x in range(0, 25):
c.insertRow((x, 100, "A10", time.ctime()))
# Delete cursor object
#
del c
使用 InsertCursor 和 SHAPE@XY 令牌将点要素添加到点要素类中。
import arcpy
# A list of values that will be used to construct new rows
#
rowValues = [('Anderson', (1409934.4442000017, 1076766.8192000017)),
('Andrews', (752000.2489000037, 1128929.8114))]
# Open an InsertCursor
#
c = 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 rowValues:
c.insertRow(row)
# Delete cursor object
#
del c
使用 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
#
c = arcpy.da.InsertCursor("C:/data/texas.gdb/counties", ["SHAPE@"])
c.insertRow([polyline])
# Delete cursor object
#
del c