Пространственные индексы в базе геоданных

ArcGIS AllSource использует пространственные индексы для повышения производительности выполнения пространственных запросов к классам пространственных объектов. Идентификация пространственного объекта, выбор объектов путем указания или растягивания рамки, а также перемещение и масштабирование – все эти действия требуют, чтобы ArcGIS AllSource использовал пространственный индекс для определения местоположения объектов.

Примечание:

Если вы откроете таблицу атрибутов в ArcGIS AllSource, рядом с именем индексируемых полей будут видны звездочки (*).

Если вы будете создавать пустой класс пространственных объектов или импортировать из ArcGIS AllSource данные для создания в базе геоданных класса пространственных объектов, для этого класса объектов будет создан пространственный индекс. Пространственный индекс используется при запрашивании и редактировании данных.

Примечание:

Исключением из этого является Db2. Когда вы создаете пустые классы объектов в базах геоданных в Db2, пространственные индексы не создаются.

Типы пространственных индексов

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

  • Пространственный индекс, основанный на сетке
    • Файловые базы геоданных
    • Базы геоданных в Db2
    • Базы геоданных в Oracle, когда класс пространственных объектов содержит столбец Esri ST_Geometry
  • Пространственный индекс R-tree
    • Мобильные базы геоданных
    • Базы геоданных в Oracle, которые содержат классы пространственных объектов с типом данных Oracle Spatial (SDO_Geometry)
  • Индекс упрощенного дерева поиска (GiST)
    • Базы геоданных в PostgreSQL
  • Модифицированный пространственный индекс B-tree
    • Базы геоданных в Microsoft SQL Server, содержащие классы пространственных объектов, которые используют пространственный столбец Geometry или Geography Пространственный индекс для столбца Geometry хранит также координаты ограничивающего прямоугольника. Для получения информации об ограничивающем прямоугольнике см. документацию Microsoft SQL Server.

Управление пространственным индексом в ArcGIS

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

Пространственные индексы в файловых базах геоданных

Ниже описываются пространственные индексы в файловых базах геоданных:

  • Когда вы создаете классы пространственных объектов, ArcGIS AllSource создает пространственные индексы.
  • При копировании классов пространственных объектов из базы геоданных в файловую базу геоданных, пространственный индекс копируется вместе с исходными данными, если исходный класс пространственных объектов использует индекс на основе сетки. Если же у исходных данных индекс другого типа, в выходной файловой базе геоданных пространственный индекс будет перестроен.
  • Сжатые классы пространственных объектов файловых баз геоданных не используют тот же самый тип пространственного индекса, который используется несжатыми классами пространственных объектов. При сжатии класса пространственных объектов файловой базы геоданных автоматически происходит его переиндексация. Данный индекс не может быть изменен. При отмене сжатия класса пространственных объектов тот пространственный индекс, который был у сжатого ранее класса пространственных объектов, автоматически устанавливается заново.

Пространственные индексы в мобильный базах геоданных

Ниже описываются пространственные индексы в файловых базах геоданных:

  • Когда вы создаете классы пространственных объектов, ArcGIS AllSource создает пространственные индексы.
  • При сохранении изменений объектов в классе без пространственного индекса этот индекс создан не будет.
  • При копировании классов пространственных объектов из базы геоданных в мобильную базу геоданных ArcGIS AllSource создает пространственный индекс для соответствующего класса пространственных объектов в мобильной базе геоданных на основе скопированных объектов.

Пространственные индексы в многопользовательских базах геоданных

В следующих таблицах показано, как ArcGIS AllSource управляет пространственными индексами классов объектов в базе геоданных во всех поддерживаемых системах управления базами данных:

  • Db2
    • При создании классов пространственных объектов ArcGIS AllSource не создает пространственные индексы.
    • При сохранении изменений объектов в классе без пространственного индекса этот индекс будет создан.
    • При копировании классов пространственных объектов из базы геоданных в базу геоданных в Db2 пространственный индекс копируется вместе с исходными данными, если исходный класс пространственных объектов использует индекс на основе сетки. Если исходные данные используют любой другой тип индекса, ArcGIS AllSource создает пространственный индекс в целевой базе геоданных в Db2 на основе скопированных объектов.
  • Oracle
    • Когда вы создаете классы пространственных объектов, ArcGIS AllSource создает пространственные индексы.
    • При сохранении изменений объектов в классе без пространственного индекса этот индекс будет создан.
    • Если вы скопируете класс пространственных объектов из базы геоданных в базу геоданных в Oracle и при этом будете использовать для данного класса объектов тип Esri ST_Geometry, пространственный индекс будет скопирован вместе с исходными данными, если исходный класс пространственных объектов будет использовать индекс на основе сетки. Если исходные данные используют любой другой тип индекса, ArcGIS AllSource создаст пространственный индекс в целевой базе геоданных в Oracle на основе скопированных объектов.
  • PostgreSQL
    • Когда вы создаете классы пространственных объектов, ArcGIS AllSource создает пространственные индексы.
    • При сохранении изменений объектов в классе без пространственного индекса этот индекс будет создан.
    • Если вы скопируете класс пространственных объектов из базы геоданных в базу геоданных в PostgreSQL, ArcGIS AllSource создаст пространственный индекс для соответствующего класса пространственных объектов в PostgreSQL на основе скопированных объектов.
  • SQL Server
    • Когда вы создаете классы пространственных объектов, ArcGIS AllSource создает пространственные индексы.
    • При сохранении изменений объектов в классе без пространственного индекса этот индекс создан не будет.
    • Если вы скопируете класс пространственных объектов из базы геоданных в базу геоданных в SQL Server, ArcGIS AllSource создаст пространственный индекс для соответствующего класса пространственных объектов в SQL Server на основе скопированных объектов.
  • SAP HANA не использует пространственные индексы для выполнения запросов; следовательно, ArcGIS AllSource не создает и не поддерживает их.

Когда обновляется пространственный индекс?

Для классов объектов SQL Server с пространственным типом Geometry пространственный индекс использует ограничивающий прямоугольник, который нужно обновлять вручную при вставке и удалении объектов. Чтобы определить, когда именно необходимо пересчитать пространственный индекс для класса пространственных объектов в SQL Server, используйте операцию Проверить в диалоговом окне Свойства класса пространственных объектов.

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