CosmeticTable - Таблица с данными косметического слоя.

class axipy.CosmeticTable

Базовые классы: Table

Объект данных косметического слоя axipy.render.CosmeticLayer

Свойства:

can_redo

Возможен ли откат на один шаг вперед.

can_undo

Возможен ли откат на один шаг назад.

coordsystem

Система координат таблицы.

data_changed

Сигнал об изменении данных таблицы.

destroyed

Сигнал оповещения об удалении объекта.

hotlink

Наименование атрибута таблицы для хранения гиперссылки.

is_editable

Признак того, что таблица является редактируемой.

is_modified

Таблица содержит несохраненные изменения.

is_spatial

Признак того, что объект данных является пространственным.

is_temporary

Признак того, что таблица является временной.

name

Название объекта данных.

properties

Дополнительные свойства объекта данных.

provider

Провайдер изначального источника данных.

schema

Схема таблицы.

schema_changed

Сигнал об изменении схемы таблицы.

supported_operations

Доступные операции.

Методы:

close()

Пытается закрыть таблицу.

commit()

Сохраняет изменения в таблице.

count([bbox])

Возвращает количество записей, удовлетворяющих параметрам.

get_bounds()

Возвращает область, в которую попадают все данные таблицы.

insert(features)

Вставляет записи в таблицу.

items([bbox, ids])

Запрашивает записи, удовлетворяющие параметрам.

itemsByIds(ids)

Запрашивает записи по списку list с идентификаторами записей, либо перечень идентификаторов в виде списка.

itemsInObject(obj)

Запрашивает записи с фильтром по геометрическому объекту.

itemsInRect(bbox)

Запрашивает записи с фильтром по ограничивающему прямоугольнику.

redo([steps])

Производит откат вперед на заданное количество шагов.

remove(ids)

Удаляет записи из таблицы.

rollback()

Отменяет несохраненные изменения в таблице.

undo([steps])

Производит откат вперед на заданное количество шагов.

update(features)

Обновляет записи в таблице.

property can_redo: bool

Возможен ли откат на один шаг вперед.

property can_undo: bool

Возможен ли откат на один шаг назад.

close()

Пытается закрыть таблицу.

Исключение:

RuntimeError – Ошибка закрытия таблицы.

Примечание

Объект данных не всегда может быть сразу закрыт. Например, для таблиц используется транзакционная модель редактирования и перед закрытием необходимо сохранить или отменить изменения, если они есть. См. Table.is_modified.

commit()

Сохраняет изменения в таблице.

Если таблица не содержит несохраненные изменения, то команда игнорируется.

Исключение:

RuntimeError – Невозможно сохранить изменения.

property coordsystem: Optional[CoordSystem]

Система координат таблицы.

count(bbox: Union[Rect, QRectF, tuple] = None) int

Возвращает количество записей, удовлетворяющих параметрам.

Данный метод является наиболее предпочтительным для оценки количества записей. При этом используется наиболее оптимальный вариант выполнения запроса для каждого конкретного провайдера данных.

Параметры:

bbox – Ограничивающий прямоугольник.

Результат:

Количество записей.

property data_changed: SignalInstance

Сигнал об изменении данных таблицы. Испускается когда были изменены данные таблицы. В качестве параметра передается дополнительная информация в виде dict.

Доступные параметры

Наименование

Значение

Описание

operation

insert

Произведена вставка данных

operation

update

Данные были обновлены

operation

remove

Данные были удалены

operation

unknown

Тип операции не определен

ids

list

Перечень затронутых идентификаторов, если он доступен

Пример подписки на изменение таблицы.
table = provider_manager.openfile(filepath)
table.data_changed.connect(lambda info: print(f'Таблица была изменена {info}'))
property destroyed: SignalInstance

Сигнал оповещения об удалении объекта.

get_bounds() Rect

Возвращает область, в которую попадают все данные таблицы.

Наименование атрибута таблицы для хранения гиперссылки.

Возможны следующие варианты

Значение

Описание

axioma://world.tab

Открывает файл или рабочее пространство в аксиоме

addlayer://world

Добавляет слой world в текущую карту

exec://gimp

Запускает на выполнение программу gimp

https://axioma-gis.ru/

Открывает ссылку в браузере

Если префикс отсутствует, то производится попытка запустить по ассоциации.

См.также

axipy.render.VectorLayer.hotlink.

insert(features: Union[Feature, Iterable[Feature]])

Вставляет записи в таблицу.

Параметры:

features – Записи для вставки.

property is_editable: bool

Признак того, что таблица является редактируемой.

property is_modified: bool

Таблица содержит несохраненные изменения.

property is_spatial: bool

Признак того, что объект данных является пространственным.

property is_temporary: bool

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

items(bbox: Union[Rect, QRectF, tuple] = None, ids: List[int] = None) Iterator[Feature]

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

Параметры:
  • bbox – Ограничивающий прямоугольник.

  • ids – Список идентификаторов.

Результат:

Итератор по записям.

itemsByIds(ids: List[int]) Iterator[Feature]

Запрашивает записи по списку list с идентификаторами записей, либо перечень идентификаторов в виде списка. Идентификаторы несохраненных записей имеют отрицательные значения.

Параметры:

ids – Список идентификаторов.

Результат:

Итератор по записям.

Пример
table_world = provider_manager.openfile(filepath)
# Пример запроса по списку идентификаторов.
items = table_world.itemsByIds([11, 27, 41, 163, 203])
for f in items:
    print('Feature id={}. Страна={}'.format(f.id, f['Страна']))
# Просмотр идентификаторов всех записей, включая несохраненные
for f in table_world.items():
    print(f.id, f['Страна'])
# Получение несохраненных записей совместно с сохраненными
items_new = table_world.itemsByIds([-1, -12, 27])
for f in items_new:
    print('Feature id={}. Страна={}'.format(f.id, f['Страна']))
itemsInObject(obj: Geometry) Iterator[Feature]

Запрашивает записи с фильтром по геометрическому объекту.

Параметры:

obj – Геометрия. Если для нее не задана СК, используется СК таблицы.

Результат:

Итератор по записям.

Пример запроса по полигону
table_world = provider_manager.openfile(filepath)
v = 2000000
polygon = Polygon((-v, -v), (-v, v), (v, v), (v, -v))
items = table_world.itemsInObject(polygon)
for f in items:
    print('Feature id={}. Страна={}'.format(f.id, f['Страна']))
itemsInRect(bbox: Union[Rect, QRectF, tuple]) Iterator[Feature]

Запрашивает записи с фильтром по ограничивающему прямоугольнику.

Параметры:

bbox – Ограничивающий прямоугольник.

Результат:

Итератор по записям.

Пример запроса (таблица в проекции Робинсона)
table_world = provider_manager.openfile(filepath)
v = 2000000
items = table_world.itemsInRect(Rect(-v, -v, v, v))
for f in items:
    print('Feature id={}. Страна={}'.format(f.id, f['Страна']))
property name: str

Название объекта данных.

property properties: dict

Дополнительные свойства объекта данных.

property provider: str

Провайдер изначального источника данных.

redo(steps: int = 1)

Производит откат вперед на заданное количество шагов. При этом возвращается состояние до последней отмены.

Параметры:

steps – Количество шагов.

remove(ids: Union[int, Iterator[int]])

Удаляет записи из таблицы.

Параметры:

ids – Идентификаторы записей для удаления.

rollback()

Отменяет несохраненные изменения в таблице.

Если таблица не содержит несохраненные изменения, то команда игнорируется.

property schema: Schema

Схема таблицы.

property schema_changed: SignalInstance

Сигнал об изменении схемы таблицы. Испускается когда была изменена структура таблицы.

property supported_operations: SupportedOperations

Доступные операции.

Пример использования
flags = table.supported_operations
assert flags == SupportedOperations.ReadWrite
assert flags & SupportedOperations.Insert
assert SupportedOperations.Write in flags
undo(steps: int = 1)

Производит откат вперед на заданное количество шагов. При этом возвращается состояние до последней отмены.

Параметры:

steps – Количество шагов.

update(features: Union[Feature, Iterable[Feature]])

Обновляет записи в таблице.

Параметры:

features – Записи для обновления.

При обновлении проверяется Feature.id. Если запись с таким идентификатором не найдена, то она пропускается.

Пример использования
modified_feature = Feature({'attr_name': 'new_value'}, id=1)
table.update(modified_feature)
table.commit()

См.также

Feature.id, commit(), is_modified.