InsertCursor

Сводка

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@XYКортеж x, y координат центроида объекта.
  • SHAPE@XYZКортеж x, y, z координат центроида объекта.
  • SHAPE@TRUECENTROIDКортеж x, y координат центроида объекта. Выдает такой же результат, что и SHAPE@XY.
  • SHAPE@XЗначение двойной точности координаты х объекта.
  • SHAPE@YЗначение двойной точности координаты y объекта.
  • SHAPE@ZЗначение двойной точности координаты z объекта.
  • SHAPE@MЗначение двойной точности m для объекта.
  • SHAPE@JSON Строка Esri JSON, представляющая геометрию.
  • SHAPE@WKBСтандартное двоичное (well-known binary, WKB) представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде непрерывного потока байтов.
  • SHAPE@WKTСтандартное текстовое (well-known text, WKT) представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде текстовой строки.
  • SHAPE@Объект geometry (геометрия) для пространственного объекта.

Полигональные, полилинейные или мультиточечные объекты можно создать только с помощью токена 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

Связанные разделы