Записи
Запись 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.Geometry
производится через свойство axipy.Feature.geometry
.
Или можно использовать специальное наименование
GEOMETRY_ATTR
, представляющее имя геометрического
атрибута:
geometry = feature.geometry
# эквивалентно
geom = feature[GEOMETRY_ATTR]
Проверка существования has_geometry()
:
if feature.has_geometry():
...
# эквивалентно
if GEOMETRY_ATTR in feature:
...
Стиль для геометрического атрибута
Стиль axipy.Style
может содержаться в виде атрибута. Доступ к нему
производится по специальному наименованию `STYLE_ATTR
или свойствам
axipy.Feature.style
и has_style()
.
style = feature.style
# эквивалентно
style = feature[STYLE_ATTR]
feature.has_style()
# эквивалентно
STYLE_ATTR in feature
Идентификаторы записей
Записи имеют свойство axipy.Feature.id
. Это значение зависит от типа
данных. При этом не гарантируется порядок, начальное значение или отсутствие
разрывов между соседними записями. Также идентификатор необязательно
является числом.