Сводка
InsertCursor создает курсор записи в классе объектов или таблице. InsertCursor можно использовать для добавления новых строк.
Описание
При использовании InsertCursor в классе точечных объектов создание PointGeometry и установка токена SHAPE@ является довольно затратной операцией. Для более быстрого и эффективного доступа можно определить точечный объект с помощью таких токенов, как SHAPE@XY, SHAPE@Z и SHAPE@M.
Примечание:
Для одновременного начала операций вставки и/или обновления в одной рабочей области с использованием разных курсоров необходимо открыть сеанс редактирования.
Синтаксис
InsertCursor (in_table, field_names, datum_transformation)
Parameter | Объяснение | Тип данных |
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)
Parameter | Объяснение | Тип данных |
row [row,...] | Список или кортеж значений. Порядок значений должен соответствовать тому, что был задан при создании курсора. Если при обновлении полей входящие значения совпадают с типом поля, значения будут объявлены необходимыми. Например, значение 1.0 будет добавлено в поле string как "1.0", а значение "25" в поле float будет записано как 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