Классы пространственных объектов в базе геоданных в 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, состоят из базовой таблицы и таблиц пространственного индекса, описанных здесь.
-
Базовая таблица
Базовая таблица - это таблица СУБД, хранящая атрибуты и поддерживающая хранение пространственных данных, благодаря добавлению в нее пространственного столбца. Именем базовой таблицы является имя класса пространственных объектов. На диаграмме вверху базовой таблицей является таблица 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>