ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

Запросы отношений

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

  • Найдите UUID исходного элемента (например, набора классов объектов).
  • Определите все отношения с UUID, соответствующим данному UUID.
  • Для каждого целевого UUID определите соответствующий элемент и тип с помощью таблицы GDB_ItemTypes.

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

--Queries a dbo-schema geodatabase in SQL Server
DECLARE @ORIGIN nvarchar(max);
DECLARE @ORIGIN_TYPE nvarchar(max);
SET @ORIGIN = 'Montgomery.Sasha.Landbase';
SET @ORIGIN_TYPE = 'Feature Dataset';
SELECT
 DEST_ITEMS.Name AS "Name"
 DEST_TYPES.Name AS "Type"
FROM
 -- Get the unique ID of the origin item.
 ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @ORIGIN) AS src_items
 INNER JOIN
 (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @ORIGIN_TYPE) AS src_types
 ON src_items.Type = src_types.UUID)
 --Get the UUIDs of related items.
 INNER JOIN
 dbo.GDB_ITEMRELATIONSHIPS AS relationships
 ON src_items.UUID = relationships.OriginID) 
 -- Resolve the names of the destination items.
 INNER JOIN
 dbo.GDB_ITEMS AS dest_items
 ON relationships.DestID = dest_items.UUID)
 -- Get the types as human-readable strings.
 INNER JOIN
 dbo.GDB_ITEMTYPES AS dest_types
 ON dest_items.Type = dest_types.UUID

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

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

--Queries a dbo-schema geodatabase in SQL Server
DECLARE @DEST nvarchar(max);
DECLARE @DEST_TYPE nvarchar(max);
SET @DEST = 'Angle';
SET @DEST_TYPE = 'Range Domain';
SELECT
 SRC_ITEMS.Name AS "Name",
 SRC_TYPES.Name AS "Type"
FROM
 -- Get the unique ID of the destination item.
 ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @DEST) AS dest_items
 INNER JOIN
 (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @DEST_TYPE) AS dest_types
 ON dest_items.Type = dest_types.UUID)
 -- Get the UUIDs of related items.
 INNER JOIN
 dbo.GDB_ITEMRELATIONSHIPS AS relationships
 ON dest_items.UUID = relationships.DestID)
 -- Resolve the names of the origin items.
 INNER JOIN
 dbo.GDB_ITEMS AS src_items
 ON relationships.OriginID = src_items.UUID)
 -- Get the types as human-readable strings.
 INNER JOIN
 dbo.GDB_ITEMTYPES AS src_types
 ON src_items.Type = src_types.UUID

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2021 Esri. | Конфиденциальность | Правовая информация