Записи

Запись Feature, которая получается при чтении из таблицы, во многом повторяет словарь Python dict. В ней содержатся пары (Имя столбца: Значение). Причем значение приводится к типу столбца. Например, если это числовое поле int, а его значение 42, то запись будет содержать число 42, а не строку “42”.

Прочитанная запись никак не ссылается на таблицу и является копией. Присвоенная к переменной запись будет доступна после продвижения итератора или даже после закрытия таблицы. Но поэтому и изменения, внесенные в эту запись-копию, никак не повлияют на значения в таблице.

Атрибуты

Доступ атрибутам осуществляется по имени или номеру. Так же как для словаря, если атрибут с заданным именем не существует, то вызывается исключение KeyError. Если атрибут с заданным номером не существует, то вызывается исключение IndexError.

feature = next(table.items())
try:
    value = feature['attr_name']
except KeyError as e:
    print(f'Поймано исключение: {e}')
>>> Поймано исключение: "Key 'unknown_key' not found"

Можно задать значение по умолчанию при чтении атрибута, который может не существовать. Если его не задать, то значение по умолчанию считается равным None.

value = feature.get('attr_name', 0.0)

Проверка существования атрибута с помощью ключевого слова in так же, как в словаре:

if 'attr_name' in feature:
    ...

Геометрический атрибут

Доступ к специальному атрибуту Геометрия axipy.da.Geometry производится через свойство axipy.da.Feature.geometry.

Или можно использовать специальное наименование GEOMETRY_ATTR, представляющее имя геометрического атрибута:

geometry = feature.geometry
# эквивалентно
geom = feature[GEOMETRY_ATTR]

Проверка существования has_geometry():

if feature.has_geometry():
    ...
# эквивалентно
if GEOMETRY_ATTR in feature:
    ...

Стиль для геометрического атрибута

Стиль axipy.da.Style может содержаться в виде атрибута. Доступ к нему производится по специальному наименованию `STYLE_ATTR или свойствам axipy.da.Feature.style и has_style().

style = feature.style
# эквивалентно
style = feature[STYLE_ATTR]
feature.has_style()
# эквивалентно
STYLE_ATTR in feature

Идентификаторы записей

Записи имеют свойство axipy.da.Feature.id. Это значение зависит от типа данных. При этом не гарантируется порядок, начальное значение или отсутствие разрывов между соседними записями. Также идентификатор необязательно является числом.