Типы пространственных данных SQL Server и ArcGIS

Базы геоданных поддерживают хранение векторных данных с использованием типов geometry и geography компании Microsoft в Microsoft SQL Server. Эти типы встроены в SQL Server автоматически, их не нужно устанавливать отдельно. Также можно использовать ArcGIS для доступа к таблицам базы данных, содержащим поля geometry или geography.

Используйте тип хранения geometry с ArcGIS, если выполняется следующее:

  • Система координат, которую вы хотите использовать, не является географической системой координат, либо не определена в словаре данных SQL Server.
  • Вам необходимо хранить z- или m-значения вместе с геометрией.

Используйте тип хранения geography с ArcGIS, если выполняется любое условие:

  • Система координат, которую вы хотите использовать, определена в словаре данных SQL Server.
  • Данные охватывают обширные пространственные экстенты, и вам нужно использовать вычисления площадей и длин в SQL.
  • Необходимо использовать интерполяцию дуги ортодромии для пространственных SQL-запросов.

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

Для указания пространственных типов используйте ключевые слова конфигурации

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

  • Если большинство пользователей в основном будет использовать geography для их пространственных данных, измените параметр конфигурации GEOMETRY_STORAGE в ключевом слове конфигурации DEFAULTS на GEOGRAPHY. Все классы объектов, созданные в базе геоданных, будут использовать тип geography по умолчанию. Инструкции см. в Изменение ключевых слов конфигурации.
  • Если в типе geography будет храниться только часть данных, задайте ключевое слово конфигурации, которое назначает параметр конфигурации GEOMETRY_STORAGE как GEOGRAPHY при создании классов объектов. Указанное ключевое слово—GEOGRAPHY—либо вы можете создать пользовательское ключевое слово.

Выберите ключевое слово geometry или geography, когда вы создаете классы объектов в базе данных SQL Server (не в базе геоданных).

Зарегистрируйте существующую пространственную таблицу в базе геоданных

Если вы создавали в базе геоданных таблицы, содержащие пространственные поля в базе данных SQL Server, используя стороннее приложение или SQL, вы можете зарегистрировать эти таблицы в базе геоданных, чтобы получить доступ к ее функциям, таким как классы отношений, топология, инженерные сети, наборы кадастровых данных, а также иметь возможность использовать подтипы, значения по умолчанию, домены и правила проверки. Для этого таблицы должны отвечать следующим требованиям:

  • Владельцем таблицы должен быть пользователь, который ее регистрирует.
  • Таблица должна иметь только одно пространственное поле типа geometry или geography.
  • Все пространственные объекты в поле должны быть одного пространственного типа: точки, линии, полигоны, мультиточки, полилинии, мультиполигоны.

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

  • Все пространственные объекты в поле должны иметь одинаковый идентификатор пространственной привязки (SRID).
  • SRID, указываемый в момент регистрации, должен присутствовать в системной таблице SDE_spatial_references. Если его нет, при регистрации необходимо задать проекцию.
  • Если таблица содержит первичный ключ, он должен быть кластеризованным.
Примечание:

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

Создайте пространственный индекс

Для создания пространственного индекса таблицы в SQL Server таблица должна иметь первичный ключ.

В ArcGIS

Если вы используете ArcGIS для создания класса объектов с полем geometry или geography, ArcGIS по умолчанию создает кластеризованный первичный ключ в поле ObjectID бизнес-таблицы. Затем, ArcGIS создает пространственный индекс, используя настройки SQL Server по умолчанию. Когда класс пространственных объектов регистрируется как традиционно версионный, кластеризованный первичный ключ создается по полям ObjectID и идентификатора состояний в таблице Adds, затем строится пространственный индекс.

ArcGIS вычисляет ограничивающий прямоугольник класса пространственных объектов с полями пространственных данных типа geometry или geography как экстент данных, которые нужно проиндексировать. Все пространственные объекты вне этого диапазона, не индексируются, но по-прежнему будут возвращаться при пространственных запросах. Если экстент класса пространственных объектов не задан, ограничивающий прямоугольник определяется максимальным диапазоном координат системы пространственной привязки класса пространственных объектов. Вы можете задать или пересчитать экстент классов пространственных объектов в диалоговом окне Свойства класса пространственных объектов. Если класс объектов находится в базе геоданных, при каждом сбросе и перестроении пространственного индекса ограничивающий прямоугольник корректируется в соответствии с последним экстентом.

Вне ArcGIS

Если пространственные таблицы созданы не в ArcGIS, например, с помощью SQL, необходимо создать первичный ключ таблицы и затем пространственный индекс, используя SQL. Обратитесь к документации Microsoft SQL Server за конкретными инструкциями и примерами.

ArcGIS добавляет поле для хранения дополнительных элементов геометрии

Типы geometry и geography не могут хранить все типы геометрических элементов, которые должны поддерживать базы геоданных. Поэтому при создании или регистрации класса объектов, который использует тип хранения geometry или geography с базой геоданных SQL Server, ArcGIS добавляет в бизнес-таблицу поле для хранения этих дополнительных элементов геометрии. Имя поля - gdb_geomattr_data. Дополнительные элементы геометрии включают:

  • Параметрические объекты, например, дуги окружности и кривые Безье, созданные с помощью расширенных инструментов редактирования
  • PointID
  • Объекты-мультипатчи
  • Патчи поверхности из Дополнительный модуль ArcGIS Spatial Analyst

Когда ArcGIS определяет, что у источника данных есть эти дополнительные элементы геометрии, то простое представление геометрии хранится в поле shape, а неизмененные данные (включая дополнительные элементы) хранятся в столбце gdb_geomattr_data.

Если вы регистрируете таблицу или вид, который содержит поле с именем gdb_geomattr_data, то данные в поле должны быть геометрическими элементами, которые связаны с объектом.

Единицы типа SQL Server geography в ArcGIS

Измерения для данных типа geography, как правило, выполняются в метрах. Единицы измерения указываются в таблице sys.spatial_ref_system, проверьте используемые единицы по значению EPSG, относящемуся к вашим данным.