Типы пространственных данных ArcGIS и Microsoft
Базы геоданных поддерживают хранение векторных данных с использованием типов geometry и georaphy Microsoft. Эти типы встроены в SQL Server, их не нужно устанавливать отдельно. Вам понадобится использовать эти типы данных при обращении к вашим пространственным данным через SQL.
Тип geometry Microsoft похож на существующие типы пространственных данных ГИС: он использует системы координат в произвольной плоскости, такие как заданные проекции.
Тип geography Microsoft используется для данных на сфероиде, которые хранятся с координатами широты и долготы.
Эти два типа отличаются тем, как производятся пространственные расчеты. Более подробную информацию о типах пространственных данных Microsoft можно найти в документации SQL Server.
Для указания пространственных типов Microsoft используют ключевые слова конфигурации
По умолчанию, в базе геоданных в SQL Server используется тип geometry Microsoft. Если вы хотите использовать тип geography Microsoft для хранения данных в базах геоданных в локальных базах данных SQL Server, вы должны либо (1) изменить значение параметра GEOMETRY STORAGE в ключевом слове конфигурации DEFAULTS в таблице SDE dbtune на GEOGRAPHY, либо (2) указать ключевое слово конфигурации, которое обозначает значение GEOGRAPHY параметра GEOMETRY STORAGE, при создании классов пространственных объектов.
Параметр GEOMETRY_STORAGE в ключевом слове DEFAULTS следует изменять только в том случае, если большинство ваших пользователей будет использовать большую часть времени тип данных geography. Если лишь часть ваших данных будет храниться в типе geography, укажите отдельное ключевое слово при создании класса пространственных объектов. Вы можете использовать уже имеющееся ключевое слово GEOGRAPHY или создать собственное пользовательское ключевое слово.
Регистрация существующей пространственной таблицы в базе геоданных
Если вы создали таблицы, содержащие столбцы типа geometry или geography Microsoft, используя стороннее приложение или SQL, вы можете зарегистрировать эти таблицы в базе геоданных, чтобы получить доступ к ее функциональности, такой как классы отношений, топология, геометрические сети, наборы кадастровых данных, наборы данных terrains или наборы схематических данных, а также иметь возможность использовать подтипы, значения по умолчанию, домены и правила проверки. Для этого таблицы должны отвечать определенным требованиям:
- Владельцем таблицы должен быть пользователь, который ее регистрирует.
- Таблица должна иметь только один столбец типа geometry или geography.
- Все пространственные объекты в столбце должны быть одного пространственного типа: либо точки, линии, полигоны, мультиточки, строки, либо мультиполигоны.
Добавление в столбец пространственных объектов другого типа в SQL после регистрации таблицы в базе геоданных не поддерживается, и результатом будет непредсказуемое поведение класса пространственных объектов.
- Все пространственные объекты в столбце должны иметь одинаковый идентификатор пространственной привязки (SRID).
- SRID, указываемый в момент регистрации, должен присутствовать в системной таблице SDE_spatial_references. Если его нет, при регистрации необходимо задать проекцию.
- Если таблица содержит первичный ключ, она должна быть кластеризована.
См. в разделе Регистрация таблицы в базе геоданных инструкции по регистрации таблицы в базе геоданных из ArcGIS for Desktop.
Создание пространственного индекса
Для создания пространственного индекса таблицы в SQL Server таблица должна иметь первичный ключ.
...в ArcGIS
При создании в ArcGIS класса пространственных объектов со столбцом geometry или geography ArcGIS по умолчанию создает кластеризованный первичный ключ по столбцу идентификатора строк (ObjectID) бизнес-таблицы и затем строит пространственный индекс на основе значений параметра B_MS_SPINDEX ключевого слова конфигурации в таблице SDE_dbtune, использованного при создании класса пространственных объектов. Когда класс пространственных объектов регистрируется как версионный, кластеризованный первичный ключ создается по столбцам идентификатора строк и идентификатора состояний в таблице Adds, а пространственный индекс строится на основе значений, заданных для A_MS_SPINDEX в ключевом слове конфигурации, использованном при создании класса пространственных объектов. Оба этих параметра имеют по умолчанию следующее значение:
GRIDS = (MEDIUM, MEDIUM, MEDIUM, MEDIUM), CELLS_PER_OBJECT = 16
О том, как задавать значения в таблице SDE_dbtune, см. Изменение содержания таблицы DBTUNE.
Кроме того, при создании класса пространственных объектов со столбцом пространственных данных типа geometry или geography в ArcGIS, ограничивающий прямоугольник класса пространственных объектов вычисляется как экстент данных, которые нужно проиндексировать. Все пространственные объекты, находящиеся вне этого диапазона, не будут индексированы, но по-прежнему будут возвращаться при пространственных запросах. Если экстент класса пространственных объектов не задан, ограничивающий прямоугольник будет определяться максимальным диапазоном координат системы пространственной привязки класса пространственных объектов. При каждом переключении слоя из режима ввода/вывода только для загрузки в нормальный режим ввода/вывода, ограничивающий прямоугольник корректируется в соответствии с последним экстентом. В качестве альтернативы вы можете задать или пересчитать экстент классов пространственных объектов на закладке Экстент пространственных объектов (Feature Extent) диалогового окна Свойства класса пространственных объектов (Feature Class Properties).
...вне ArcGIS
Если пространственные таблицы, созданы не в ArcGIS - например с помощью SQL, - необходимо создать первичный ключ таблицы и затем пространственный индекс, используя SQL. Ниже показан синтаксис SQL для создания пространственного индекса в таблице, содержащей столбец типа geometry или geography:
CREATE SPATIAL INDEX <index_name>
ON <table> (<spatial column>)
USING GEOMETRY_GRID
WITH (
BOUNDING_BOX = minx,miny,maxx,maxy),
GRIDS = (low|medium|high, low|medium|high, low|medium|high, low|medium|high),
CELLS_PER_OBJECT = n,
<other regular btree index options like filegroups, fill factors, etc>
)
Известные ограничения использования типа geography SQL Server в многопользовательской базе геоданных
Ниже перечислены особенности, о которых следует помнить при хранении данных типа geography SQL Server в многопользовательской базе геоданных:
- Данная версия ArcGIS не поддерживает хранение z- или m-значений данных типа geography. Поэтому, если вы переносите в базу геоданных существующие данные, такие как шейп-файл или класс пространственных объектов, из другой базы геоданных и хотите хранить их как данные типа geography, входящий набор данных не должны иметь иметь атрибуты 3D (z) или атрибуты измерений (m).
Перед тем, как импортировать данные, атрибуты z и m необходимо выключить. Или импортируйте данные с атрибутами 3D или измерения в классы пространственных объектов с типом хранения geometry или двоичным типом со сжатием.
- Измерения для данных типа geography, как правило, выполняются в метрах. Единица измерения указана в sys.spatial_ref_system; проверьте используемые единицы по значению EPSG, относящемуся к вашим данным.
- В этой версии ArcGIS отдельные объекты и все части составного объекта должны находиться в одном полушарии.