Объект Layer

Объект Layer представляет слой карты или рабочий слой темы. Для доступа к геометриям слоя следует использовать метод Layer::OpenFeatureset, создающий объект Featureset - набор геометрий слоя.

Для создания нового слоя карты необходимо выполнить следующую последовательность действий:

Создать объект Layer с помощью метода Map::CreateLayer.

Создать тип геометрий слоя с помощью метода Layer::CreateFeatureType.

Установить свойства созданного типа геометрий.

Добавить тип геометрий в коллекцию Layer::FeatureTypes с помощью метода Append.

Повторить шаги 2 - 4 для каждого типа геометрий в слое.

Добавить объект Layer в коллекцию Map::Layers с помощью метода Append.

Для создания нового рабочего слоя темы необходимо выполнить следующую последовательность действий:

Создать объект Layer с помощью метода Theme::CreateLayer.

Создать тип геометрий слоя с помощью метода Layer::CreateFeatureType.

Установить свойства созданного типа геометрий.

Добавить тип геометрий в коллекцию Layer::FeatureTypes с помощью метода Append.

Повторить шаги 2 - 4 для каждого типа геометрий в слое.

Добавить объект Layer в коллекцию Theme::Layers с помощью метода Append.

При успешном добавлении слоя в коллекцию Map::Layers или Theme::Layers, ему присваивается внутренний номер. Кроме того, присваиваются внутренние номера типам геометрий слоя. Непрерывность последовательности внутренних номеров не гарантируется. Присвоенные внутренние номера не изменяются между сеансами доступа к ГБД. Изменения внутренних номеров может произойти при реорганизации ГБД с помощью метода GDBEngine::CompactGDB с режимом gdbCompactNoKeepISN.

Для доступа к слоям в коллекциях Map::Layers и Theme::Layers следует использовать метод Item. Аргументом метода может быть строка - имя слоя, или целое - внутренний номер слоя.

Для доступа к типам геометрий в коллекции Layer::FeatureTypes следует использовать метод Item. Аргументом метода может быть строка - имя типа геометрий, или целое - внутренний номер типа геометрий. Пока объект Layer не добавлен в коллекцию Map::Layers, доступ к типам геометрий может быть только по имени.

Наличие рабочих слоев темы позволяет организовать для темы собственное множество геометрий. Типы геометрий рабочих слоев не могут быть связаны с таблицами ГБД/внешних БД.

Учитывая особенности реализации рабочих слоев в данной версии ядра ГИС, не следует создавать рабочие слои с количеством геометрий, сопоставимым с количеством геометрий в слоях карт – это может привести к снижению производительности ядра ГИС. В данной версии ядра ГИС предполагается, что геометрии рабочих слоев используются главным образом для реализации пространственных критериев фильтрации геометрий в теме.

Модификация как геометрий рабочего слоя, так и его структуры, осуществляются вне механизма транзакций ГБД. Сохранение всех модификаций геометрий рабочего слоя и его структуры в ГБД осуществляется при каталогизации темы в ГБД путем ее добавления в коллекцию GeoDatabase::Themes или при обновлении каталогизированной темы с помощью метода Theme::Update.