Table - Абстрактный класс таблицы

class axioma.core.dp.Table

Абстрактный класс таблицы

Унаследован от:

От него наследуются:

  • EditableTable

  • SelectionTable

    Table()

    Конструктор класса

    Table(table)

    Конструктор класса. Создать копию таблицы.

    Параметры:table (Table) – таблица
    allFeatures()

    Запрашиваются все записи таблицы. При выполнении данного запроса все записи загружаются в память. Если необходимо использовать более гибкий механизм с последовательной частичной загрузкой рекомендуется использовать selectToFeatureList()

    Тип результата:list [Feature]
    Пример последовательного анализа всех записей таблицы:
    features = table.allFeatures()
    for f in features:
            print("id", f.id(), f.getAttribute('Страна'))
    
    attributeNames()

    Список имен атрибутов

    Тип результата:list [str]
    contentType()

    Тип контента. Используется при перваоначальной организауии слоев внутри карты. Ка пример, слой с точечными объектами должен располагаться всше слоя с польгональными, а растровый слой размещается снизу по списку.

    Тип результата:ContentType
    coordSystem()

    Координатная система таблицы. Если несколько, берется первая попавшаяся

    Результат:координатная система таблицы, либо None
    Тип результата:CoordSystem
    dataReset()

    [signal] Изменились данные таблицы

    featureIdComparator()

    Получение функтора сравнения двух идентификаторов записей в этой таблице. Используется для сортировки записей.

    Результат:функтор сравнения двух идентификаторов
    Тип результата:VariantComparator
    hasDataChangeConnection()

    Имеет ли кто-то подписку на сигнал изменения данных

    Результат:True, если имеет, иначе - False
    Тип результата:bool
    saveSchemaToJson()

    Сохранение схемы таблицы в формате JSON-представления. Пример см. modifyTableSchema()

    Тип результата:dict [ QJsonValue ]
    schemaChanged()

    [signal] Изменилась схема таблицы

    selectFeaturesById(ids, attribute_names=list(), range=PageRange())

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

    Параметры:
    • ids (list [QVariant]) – идентификаторы запрашиваемых записей
    • attribute_names (list [str]) – имена запрашиваемых атрибутов записей
    • range (PageRange) – диапазон записей
    Результат:

    Список записей

    Тип результата:

    list [Feature]

    Пример использования:
    # Восстановление; получение записей с полным количеством атрибутов
    
    # ...
    # features - записи с усеченным набором атрибутов
    # ...
    
    ids = [feature.id() for feature in features]
    full_features = table.selectFeaturesById(ids, table.attributeNames())
    
    selectFeaturesInMbr(rect, attribute_names=list(), geom_attr_name=str(), range=PageRange())

    Получить записи в прямоугольнике. Сравнение производится с ограничивающим прямоугольником объекта. Для более точного соотвествия необходимо произвести дополнительную проверку.

    Параметры:
    • rect (GeoRect) – географический прямоугольник, в границах которого выбираются объекты (записи)
    • attribute_names (list [str]) – имена запрашиваемых атрибутов записей
    • geom_attr_name (str) – имя атрибута с геометрией; если пустая строка, будет выполнена попытка найти атрибут; если несколько - берется первый попавшийся, если нет - возвращается пустой список записей
    • range (PageRange) – диапазон записей
    Результат:

    Список записей

    Тип результата:

    list [Feature]

    Пример использования:
    # ...
    # coord_system - Долгота-Широта
    # ...
    
    georect = GeoRect(QRectF(-180, 0, 90, 90), coord_system)
    features = table.selectFeaturesInMbr(georect, table.attributeNames())
    
    selectToFeatureList(query, range=PageRange())

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

    Параметры:
    • query (TableQuery) – запрос к таблице
    • range (PageRange) – диапазон записей. Может использоваться как ограничитель записей при загрузке порциями (см. пример)
    Результат:

    Список записей

    Тип результата:

    list [Feature]

    Пример использования:
    # Запросим последовательно порциями по 10 записей
    count = table.count(QuerySelectAll())
    print('Общее количество записей =', count)
    part_count = 10
    start_record = 0
    while start_record < count:
            print('--- Запрашиваем от {} до {}'.format(start_record+1, start_record+part_count))
            features = table.selectToFeatureList(QuerySelectAll(table.tableSchema().attributeNames()), PageRange(start_record, part_count))
            start_record = start_record + part_count
            for f in features:
                    print('ID =', f.id())
    
    sourceOfChanges()

    Определяет таблицу, данные из которой являются источником изменений в текущей таблице

    Тип результата:Table
    sourceTable()

    Изначальная таблица

    Тип результата:Table
    tableSchema()

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

    Тип результата:TableSchema