Краткая информация
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 будет добавлено в поле 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