Классы пространственных объектов в базе геоданных в SQL Server

Класс объектов – это набор географических объектов с одинаковым типом геометрии (точка, линия, полигон, мультиточка, аннотация, размер или мультипатч). Например, можно сохранить точки для всех железнодорожных станций вдоль линии железной дороги в одном классе объектов. В другом классе объектов можно сохранить линии, которые изображают все железнодорожные пути.

Этот раздел содержит описание способов отображения класса объектов в окне каталога, в системе управления базами данных (СУБД), а также в XML-документе.

Классы пространственных объектов в ArcGIS for Desktop

В программном обеспечении ArcGIS for Desktop можно создать семь типов классов объектов: точка, мультиточка, линия, полигон, аннотация, размер или мультипатч.

Определить тип класса объектов в дереве каталога можно по его значку. В следующей таблице представлен значок для каждого типа класса объектов.

Значок класса объектов

Тип класса объектов

Значок класса объектов точек или мультиточек

Точка или мультиточка

Значок класса объектов линий

Линия

Значок класса объектов полигонов

Полигон

Значок класса объектов аннотаций

Аннотация

Значок класса объектов размеров

Размер

Значок класса объектов мультипатчей

Мультипатч

В Microsoft SQL Server, имя класса объектов, отображающееся в дереве Каталога, включает имя базы данных, в которой он находится, имя пользователя, которому принадлежит этот класс, и собственно имя класса объектов.

Например, класс объектов parcels, принадлежащий пользователю sasha, в базе геоданных geodata обозначается в дереве Каталога как geodata.SASHA.PARCELS.

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

Классы пространственных объектов, хранимые в базе данных Microsoft SQL Server

Классы пространственных объектов в базах данных SQL Server используют один из трех типов хранения геометрии: двоичный, Microsoft geometry или Microsoft geography.

Все классы объектов имеют базовую таблицу (также называемую бизнес-таблицей), в которой хранится информация атрибутов, идентификатор объекта и поле Форма (Shape). Поля Идентификатор объекта (Object ID) и Форма (Shape) могут иметь различные имена, но должны присутствовать в базовой таблице класса объектов.

Классам объектов аннотаций и размеров в базовых таблицах соответствуют дополнительные требуемые поля. Список этих полей см. в разделах Управление свойствами класса объектов аннотаций и Свойства объекта размера.

ПримечаниеПримечание:

После загрузки данных или создания базы геоданных, в вашей базе данных появляется несколько i-таблиц и хранимых процедур. Эти хранимые процедуры и i-таблицы используются для создания идентификаторов объектов для классов пространственных объектов. В имени i-таблицы содержится номер. Этот номер соответствует идентификатору registration_id класса пространственных объектов в таблице SDE_table_registry. Редактирование этих таблиц или хранимых процедур не поддерживается и очень не рекомендуется.

Классы пространственных объектов, хранящиеся с использованием типа geometry или geography Microsoft в базе данных SQL Server.

Базы геоданных, хранящиеся в базе данных SQL Server, по умолчанию используют для хранения пространственных объектов тип хранения geometry Microsoft. Может также использоваться тип хранения geography Microsoft. Классы пространственных объектов, хранящиеся в одном из этих типов, имеют базовую таблицу. Базовая таблица содержит столбец типа GEOMETRY или GEOGRAPHY, в котором хранится геометрия класса пространственных объектов; связанной таблицы объектов нет.

Базовая таблица - это таблица СУБД, хранящая атрибуты и поддерживающая хранение пространственных данных, благодаря добавлению в нее пространственного столбца. Именем базовой таблицы является имя класса пространственных объектов.

Таблицы классов пространственных объектов, хранящихся в типе geometry или geography, имеют также связанные системные таблицы (GDB_ITEMS, SDE_spatial_references, SDE_table_registry, SDE_column_registry, SDE_geometry_columns и SDE_layers) и связанные представления.

View a diagram of a feature class using SQL Server geometry or geography storage..

ПримечаниеПримечание:

Для открытия файла необходим Adobe Acrobat Reader.

Пунктирные линии указывают на неявные отношения между столбцами; сплошные линии указывают на явные отношения между столбцами.

Представления, используемые для классов объектов типа geometry или geography, ST_SPATIAL_REFERENCE_SYSTEMS и ST_GEOMETRY_COLUMNS, не показаны на диаграмме, потому что основаны на системных таблицах SDE_spatial_references и SDE_geometry_columns, уже включенных в диаграмму.

Если класс пространственных объектов поддерживает хранение примитивов САПР, для него создается боковая таблица для хранения данных САПР, например, кривых. Все классы объектов, создаваемые в ArcGIS for Desktop, поддерживают хранение примитивов САПР. При импорте или регистрации данных в ArcSDE с помощью команд администрирования ArcSDE, вы указываете, могут ли храниться в итоговом классе пространственных объектов данные САПР. На диаграмме класса объектов показана также таблица САПР, SDE_geometry42. 42 в имени таблицы - это ссылка на идентификатор layer_id класса объектов в таблице SDE_layers.

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

Классы пространственных объектов, хранящиеся в двоичном формате в базе данных SQL Server.

Классы пространственных объектов, хранящиеся в двоичном формате - либо сжатом двоичном ArcSDE, либо в хорошо известном двоичном представлении геометрии OGC (OGC well-known binary representation of geometry), — в базе геоданных в SQL Server, состоят из базовой таблицы и таблиц пространственного индекса, описанных здесь.

Базовая, f- и s-таблицы для класса пространственных объектов в SQL Server
  • Базовая таблица

    Базовая таблица - это таблица СУБД, хранящая атрибуты и поддерживающая хранение пространственных данных, благодаря добавлению в нее пространственного столбца. Именем базовой таблицы является имя класса пространственных объектов. На диаграмме вверху базовой таблицей является таблица PARCELS.

    В двоичной схеме пространственный столбец в базовой таблице (в примере вверху поле SHAPE в таблице PARCELS) содержит идентификатор объекта, который обеспечивает однозначную ссылку на пространственные данные. Идентификатор объекта соединяет базовую таблицу с таблицами объектов и пространственного индекса.

    Для поддержки отношения между записями в базовой таблице и таблице объектов, в базовой таблице, поддерживающей хранение пространственных данных, задается триггер базы данных.

    Все неверсионные базовые таблицы классов пространственных объектов имеют триггер удаления-обновления и триггер вставки. Триггер вставки обеспечивает отсутствие дубликатов значений в пространственном столбце базовой таблицы, а триггер удаления-обновления управляет активностью в пространственном столбце в базовой таблице и таблицах объектов и пространственного индекса.

    Эти триггеры автоматически удаляются, когда класс пространственных объектов, автономный или входящий в набор данных объектов, становится версионным. Они создаются заново, когда класс пространственных объектов исключается из версионных. Если вы редактируете один из этих триггеров, и затем делаете класс пространственных объектов версионным, триггер удаляется.

  • Таблица объектов (F<layer_id>)

    В таблице объектов хранятся геометрические формы для каждого объекта. Таблица идентифицируется номером в столбце Layer_ID таблицы SDE_layers. Отношение между базовой таблицей и таблицей объектов устанавливается с помощью идентификатора объекта (Feature ID, или FID). Данный ключ, управляемый ArcGIS, является уникальным для пространственного столбца.

    Определение таблицы объектов

    Имя поля

    Тип поля

    Описание

    Null?

    fid

    int

    Первичный ключ; уникальный идентификатор, который соединяет таблицу объектов с базовой таблицей.

    NOT NULL

    numofpts

    int

    Число точек, определяющих пространственный объект

    NOT NULL

    примитив

    smallint

    Тип геометрии, хранящийся в пространственном столбце (например, точка, линия или строка)

    NOT NULL

    eminx

    float

    Минимальное х-значение в объекте; вместе с eminy, emaxx и emaxy определяет конверт объекта

    NOT NULL

    eminy

    float

    Минимальное y-значение в объекте; вместе с eminx, emaxx и emaxy определяет конверт объекта

    NOT NULL

    emaxx

    float

    Максимальное x-значение в объекте; вместе с eminx, eminy и emaxy определяет конверт объекта

    NOT NULL

    emaxy

    float

    Максимальное y-значение в объекте; вместе с eminx, eminy и emaxx определяет конверт объекта

    NOT NULL

    eminz

    float

    Минимальное z-значение в трехмерном объекте

    emaxz

    float

    Максимальное z-значение в трехмерном объекте

    min_measure

    float

    Минимальное значение измерения в объекте

    max_measure

    float

    Максимальное значение измерения в объекте

    площадь

    float

    Площадь геометрии

    NOT NULL

    len

    float

    Длина периметра геометрии

    NOT NULL

    точки

    varbinarymax

    Содержит поток байтов координат точек, которые определяют геометрию

    При вставке или обновлении объектов, значения в таких столбцах, как extents и numofpts, автоматически пересчитываются.

  • Таблица пространственного индекса (S<layer_id>)

    Пространственный индекс двоичной реализации - это таблица пространственного индекса. В ней хранятся ссылки на геометрию, основанные на простой, регулярной сетке. Эта таблица идентифицируется номером в столбце Layer_ID таблицы SDE_layers.

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

    Определение таблицы пространственного индекса

    Имя поля

    Тип поля

    Описание

    Null?

    sp_fid

    int

    Первичный ключ; уникальный идентификатор, который соединяет таблицу пространственного индекса с базовой таблицей.

    NOT NULL

    gx

    bigint

    х-значение сетки пространственного индекса

    NOT NULL

    gy

    bigint

    y-значение сетки пространственного индекса

    NOT NULL

    eminx

    bigint

    Минимальное x-значение в объекте; вместе с eminy, emaxx и emaxy определяет конверт объекта

    NOT NULL

    eminy

    bigint

    Минимальное y-значение в объекте; вместе с eminx, emaxx и emaxy определяет конверт объекта

    NOT NULL

    emaxx

    bigint

    Максимальное x-значение в объекте; вместе с eminx, eminy и emaxy определяет конверт объекта

    NOT NULL

    emaxy

    bigint

    Максимальное y-значение в объекте; вместе с eminx, eminy и emaxx определяет конверт объекта

    NOT NULL

    Все базовые таблицы классов пространственных объектов имеют триггер УДАЛЕНИЕ-ОБНОВЛЕНИЕ и триггер ВСТАВКА. Триггер ВСТАВКА обеспечивает отсутствие дубликатов значений в пространственном столбце базовой таблицы, а триггер УДАЛЕНИЕ-ОБНОВЛЕНИЕ управляет активностью в пространственном столбце в базовой таблице и в таблицах объектов и пространственного индекса. Эти триггеры автоматически удаляются, когда класс пространственных объектов, автономный или входящий в набор данных объектов, становится версионным. Они создаются заново, когда класс пространственных объектов исключается из версионных. Если вы редактируете один из этих триггеров, и затем регистрируете класс пространственных объектов в качестве версионного, триггер удаляется. Между базовой таблицей и таблицей объектов важно поддерживать ссылочную целостность. Вы не должны редактировать записи таблицы объектов или таблицы пространственного индекса. В базовую таблицу и таблицы объектов и пространственного индекса добавлены несколько индексов и ограничений, предназначенных для обеспечения ссылочной целостности. Однако, эти индексы и ограничения удаляются, когда класс пространственных объектов переводится в режим ввода/вывода только для загрузки, состояние, которое позволяет быстро вставить данные в класс пространственных объектов.

    Когда класс пространственных объектов возвращается обратно в обычный режим ввода/вывода - состояние, которое позволяет пользователям осуществлять запросы класса пространственных объектов через ArcGIS - вновь создаются индексы и активируются ограничения. Перевод в обычный режим ввода/вывода невозможен, если нельзя построить уникальные индексы по пространственному столбцу базовой таблицы или столбцу FID таблицы объектов. Он невозможен и в том случае, если в пространственном столбце базовой таблицы есть значение, отсутствующее в столбце FID таблицы объектов. В этом случае, ссылка на конфликтующую запись базовой таблицы загружается в таблицу SDE_EXCEPTIONS.

  • Системные таблицы, связанные с классами пространственных объектов

    Системная таблица GDB_ITEMS базы данных является первичной таблицей для отслеживания наборов данных (таких как классы пространственных объектов или каталоги растров) в базе геоданных.

    View a diagram of a feature class using binary storage in SQL Server..

    ПримечаниеПримечание:

    Для открытия файла необходим Adobe Acrobat Reader.

    Пунктирные линии указывают на неявные отношения между столбцами; сплошные линии указывают на явные отношения между столбцами.

    В базе данных все поля имени в GDB_ITEMS, SDE_table_registry, SDE_column_registry и SDE_layers содержат одинаковое значение, но чтобы не слишком загромождать диаграмму, неявное отношение между этими полями не показано. Аналогично, поля владельца во всех этих таблицах содержат одинаковое значение, хотя это отношение на диаграмме не показано.

Классы пространственных объектов в XML-документе

Классы объектов определены в элементах DataElement. Тип тегов DataElement для класса объектов настроен со значением esri:DEFeatureClass. В элементе DataElement класса объектов находятся другие элементы, которые определяют класс объектов, такие как элементы Поле (Field), Домен (Domain), Ключевое слово конфигурации (ConfigurationKeyword) и Пространственная привязка (SpatialReference).

Ниже перечислена лишь малая часть содержимого XML-документа для класса объектов Участки (Parcels).

<DataElement xsi:type="esri:DEFeatureClass">
  <CatalogPath>/V=dbo.DEFAULT/FC=geodata.SASHA.Parcels</CatalogPath>
  <Name>geodata.SASHA.Parcels</Name>
  <DatasetType>esriDTFeatureClass</DatasetType>
  <DSID>22</DSID>
  <Versioned>false</Versioned>
  <CanVersion>true</CanVersion>
  <ConfigurationKeyword/>
  <HasOID>true</HasOID>
  <OIDFieldName>objectid</OIDFieldName>
  <Fields xsi:type="esri:Fields">
    <FieldArray xsi:type="esri:ArrayOfField">
      <Field xsi:type="esri:Field">
        <Name>objectid</Name>
        <Type>esriFieldTypeOID</Type>
        <IsNullable>false</IsNullable>
        <Length>4</Length>
        <Precision>10</Precision>
        <Scale>0</Scale>
        <Required>true</Required>
        <Editable>false</Editable>
        <AliasName>OBJECTID</AliasName>
        <ModelName>OBJECTID</ModelName>
      </Field>

Все остальные элементы, определяющие класс объектов

</DataElement>
9/11/2013