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@) вместо имен полей:
Полигональные, полилинейные и мультиточечные объекты можно создать только с помощью токена SHAPE@. Примечание: Токены SHAPE@JSON, SHAPE@WKB и SHAPE@WKT стали доступны в пакете обновлений ArcGIS 10.1 Service Pack 1. | String |
Свойства
Свойство | Объяснение | Тип данных |
fields (только чтение) |
Список (или кортеж) имен полей, используемых курсором. В кортеж будут включены все поля (и токены), указанные аргументом field_names. Если аргумент field_names будет иметь значение "*", то в свойства полей будут включаться все поля, используемые курсором. Когда используется "*", значения геометрии будут выводиться в кортеже координат x и y (эквивалент токену SHAPE@XY). | tuple |
Обзор метода
Метод | Объяснение |
insertRow (row) |
Вставляет строку в таблицу. |
Методы
Параметр | Объяснение | Тип данных |
row [row,...] |
Список или кортеж значений. Порядок значений должен соответствовать тому, что был задан при создании курсора. Если при обновлении полей входящие значения совпадают с типом поля, значения будут объявлены необходимыми. Например, значение 1.0 будет добавлено в поле string как "1.0", а значение "25" в поле float будет записано как 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