InsertCursor (arcpy.da)

摘要

InsertCursor 可在要素类或表上建立写入游标。可以使用 InsertCursor 来添加新行。

讨论

对点要素类使用 InsertCursor 时,创建 PointGeometry 并将其设置到 SHAPE@ 令牌操作的代价相对较高。此时,使用诸如 SHAPE@XYSHAPE@ZSHAPE@M 等令牌定义的点要素访问反而更为快速有效。

注注:

使用不同游标在同一个工作空间上开启同步插入或更新操作时,需要启动编辑会话。

注注:

不能将 arcpy.da.InsertCursorarcpy.InsertCursor 相混淆。

语法

InsertCursor (in_table, field_names)
参数说明数据类型
in_table

要素类、图层、表或表视图。

String
field_names
[field_names,...]

字段名称列表(或组)。对于单个字段,可以使用一个字符串,而不使用字符串列表。

如果要访问输入表中的所有字段(栅格和 BLOB 字段除外),可以使用星号 (*) 代替字段列表。但是,为了获得较快的性能和可靠的字段顺序,建议您将字段列表限制在实际需要的字段。

不支持栅格字段。

以令牌(如 OID@)取代字段名称可访问更多的信息:

  • SHAPE@XY一组要素的质心 x,y 坐标。
  • SHAPE@TRUECENTROID一组要素的真正质心 x,y 坐标。
  • SHAPE@X要素的双精度 x 坐标。
  • SHAPE@Y要素的双精度 y 坐标。
  • SHAPE@Z要素的双精度 z 坐标。
  • SHAPE@M要素的双精度 m 值。
  • SHAPE@JSON 表示几何的 esri JSON 字符串。
  • SHAPE@WKBOGC 几何的熟知二进制 (WKB) 制图表达。该存储类型将几何值表示为不间断的字节流形式。
  • SHAPE@WKTOGC 几何的熟知文本 (WKT) 制图表达。其将几何值表示为文本字符串。
  • SHAPE@要素的几何对象。

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)

向表中插入一行。

方法

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 xrange(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

相关主题

5/10/2014