Упражнение 6. Краткое руководство по настройке стандартного компоновщика для работы на основе пользовательских запросов
Схематические представления можно создавать практически из любых данных, к которым можно подключиться по интерфейсу ADO или ODBC (данные могут находиться и не в базе геоданных). Стандартный компоновщик обычно используют для создания схематических представлений на основе объектов ГИС, выделенных на карте посредством операций выборки или трассировки, однако его можно настроить и для создания схем из данных, не хранящихся в базе геоданных, или из непространственных табличных данных. Поскольку такая настройка предполагает создание запросов SQL непосредственно к источнику данных, необходимо уметь их писать и хорошо знать свойства и структуру данных, с которыми вы будете работать. В этом упражнении вы научитесь создавать и настраивать шаблон схематического представления для создания схем на основе табличных, непространственных данных. Данные, с которыми вы будете работать, находятся в учебной базе данных Brazil.gdb в директории C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data. Для настройки шаблона схематического представления будет использоваться набор схематических данных SchematicBuilderSamples, созданный в упражнении 1.
Данное упражнение иллюстрировано снимками экрана, на которых показаны параметры настройки, созданные в ходе выполнения предыдущих упражнений. Однако выполнение предыдущих упражнений не является обязательным требованием для выполнения этого упражнения. Шаги, описанные в этом упражнении, не требуют выполнения предыдущих упражнений.
Изучение используемых исходных данных
Первый этап настройки состоит в исследовании данных и подключении к ним, что затем позволит создать запросы для их использования.
- Откройте приложение ArcCatalog.
- Перейдите к папке C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data.
-
Дважды щелкните базу геоданных Brazil.gdb, чтобы открыть ее содержание.
На закладке Содержание (Contents) окна Каталог (Catalog) вы увидите три таблицы с префиксом ISP_. Это значит Inside Plant (Внутри завода). Записи этих таблиц описывают внутренние структуры нескольких газоперерабатывающих заводов. Сами газоперерабатывающие заводы — это реальные объекты, которые являются частью геометрической сети. Их можно найти в классе пространственных объектов pug_PUG_gas_plants, входящем в набор классов объектов трубопроводы (pipelines).
-
Дважды щелкните набор классов пространственных объектов трубопроводы, чтобы открыть классы объектов геометрической сети.
- Выберите класс пространственных объектов pug_PUG_gas_plants и щелкните закладку Предварительный просмотр (Preview).
- Для просмотра данных выберите Таблица (Table) в ниспадающем списке в нижней части закладки Предварительный просмотр (Preview).
-
Прокрутите окно так, чтобы одновременно были видны поля NAME и PLANT_NMBER.
Примечание:
Чтобы видеть оба поля одновременно, вам может понадобиться изменить ширину столбцов.
Только для трех газоперерабатывающих заводов есть данные в обоих полях PLANT_NUMBER и NAME. Идея здесь состоит в том, чтобы конечный пользователь ArcMap мог создавать схему для одного из этих заводов по полю Name (plant_number ему знать необязательно). Однако как вы скоро увидите, для запроса записей из таблиц с префиксом ISP_ необходимо иметь значение PLANT_NUMBER. Так что в данном классе пространственных объектов важны оба эти поля.
-
Выберите таблицу ISP_EQUIPMENTS из дерева Каталога.
Таблица будет выведена в закладке Предварительный просмотр (Preview).
-
Прокрутите окно закладки Предварительный просмотр (Preview) так, чтобы одновременно были видны столбцы NUMBER_ и PLANT_NUMBER.
В столбце NUMBER_ содержится уникальный номер каждой записи. Столбец PLANT_NUMBER показывает, к какому газоперерабатывающему заводу относится каждая запись. Основной принцип, которому вы будете следовать при настройке, заключается в том, что если пользователь хочет увидеть схему для завода Aracaui (plant_number = 101), то необходимо выполнить запрос, чтобы получить все записи ISP_EQUIPMENTS, имеющие значение PLANT_NUMBER 101.
-
Выберите в дереве Каталога и откройте таблицу ISP_VALVES.
Эта таблица имеет приблизительно ту же структуру, что и предыдущая, со столбцами NUMBER_ и PLANT_NUMBER.
-
Теперь щелкните в дереве Каталога таблицу ISP_PIPES.
Эта таблица является ключевой в данном приложении пользовательского запроса. Эта таблица обеспечивает связь между записями таблиц ISP_EQUIPMENTS и ISP_VALVES.
-
Прокрутите окно закладки Предварительный просмотр (Preview) так, чтобы одновременно были видны столбцы FROM_NODE_NUM и TO_NODE_NUM.
Для каждой строки таблицы (отдельной трубы внутри завода) эти столбцы показывают, откуда выходит и куда подсоединена труба, на основе значений в столбцах, соответствующих значению из столбца Number_ в таблице ISP_EQUIPMENTS или таблице ISP_VALVES.
Подключение к внешней базе данных
-
Отредактируйте набор схематических данных SchematicBuilderSamples, хранящийся в базе геоданных C:\ArcGIS\ArcTutor\Schematics\TutorialSchematicDB. Для этого перейдите к этой базе данных в ArcCatalog, щелкните правой кнопкой мыши набор данных и выберите в меню опцию Редактировать (Edit) .
Примечание:
Данное упражнение иллюстрировано снимками экрана, на которых показаны параметры настройки, созданные в ходе выполнения предыдущих упражнений. Однако выполнение предыдущих упражнений не является обязательным требованием для выполнения этого упражнения. Шаги, описанные в этом упражнении, не требуют выполнения предыдущих упражнений.
-
Теперь необходимо создать новый источник данных, указывающий на данные из базы Brazil.gdb, которые мы только что рассмотрели. Этот источник данных будет использоваться во всех остальных настройках:
-
Щелкните правой кнопкой мыши папку Источники данных (Data Sources) в дереве Редактора набора схематических данных и выберите Новый источник данных (New Data Source).
Закладка Свойства (Properties) теперь содержит информацию о новом источнике данных. Оставьте имя по умолчанию. Поскольку Brazil.gdb — файловая база геоданных, Тип (Type) также указан верно.
-
Нажмите кнопку Обзор файловых баз геоданных ESRI (Browse for ESRI File Geodatabase) в конце текстового поля Файл БГД (GDB File).
Откроется диалоговое окно Подключение файловой БГД ESRI (ESRI File GDB Connection).
- Перейдите к базе данных brazil.gdb в директории C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data и выберите ее.
- Щелкните кнопку Выбрать (Select), чтобы закрыть диалоговое окно.
- Щелкните OK в закладке Свойства (Properties).
Вы успешно подключились к другой базе данных.
-
Щелкните правой кнопкой мыши папку Источники данных (Data Sources) в дереве Редактора набора схематических данных и выберите Новый источник данных (New Data Source).
Создание шаблона схематического представления с использованием стандартного компоновщика
На втором этапе создается шаблон схематического представления, который будет использоваться для создания схем из табличных данных.
-
Щелкните правой кнопкой мыши пункт SchematicBuilderSamples в дереве редактора набора данных, затем выберите пункт меню Новый шаблон схематического представления (New Schematic Diagram Template).
В правой части окна Редактор для нового шаблона схематического представления автоматически появляется закладка Свойства (Properties).
- Введите DiagramsFromCustomQueries в поле Имя (Name).
- В разделе Компоновщик схемы (Schematic Builder) выберите Стандартный компоновщик (Standard Builder).
-
Щелкните ОК.
В дереве Редактора наборов данных теперь есть шаблон схемы DiagramsFromCustomQueries. В правой части окна Редактор появились три новые закладки: Связи (Associations), Компоновки (Layouts) и Правила (Rules).
- Щелкните шаблон DiagramsFromCustomQueries в дереве Редактора наборов схематических данных, чтобы начать его настройку.
-
Нажмите кнопку Редактор Запроса/Идентификатора (Query/Identifier Editor). в разделе Запрос (Query) закладки Свойства (Properties).
Откроется диалоговое окно Редактор Запроса/Идентификатора (Query/Identifier Editor):
Примечание:Если в вашем проекте вы работаете с данными, которые не нужно фильтровать, дополнительная настройка шаблона схемы не требуется, и вы можете заняться классами пространственных объектов схемы. Поскольку в этом примере данные фильтруются, необходимо задать фильтр на уровне шаблона схемы.
-
В ниспадающем списке Источник данных (Data Source) выберите элемент NewDataSource, созданный выше в разделе Подключение к внешней базе данных (Connecting to an external database).
Появится список всех таблиц, имеющихся в этом источнике данных. Теперь нужно получить список имен и номеров газоперерабатывающих заводов.
-
Прокрутите список таблиц, пока не появится pug_PUG_gas_plants. Дважды щелкните этот элемент.
Система добавила запрос в раздел запросов. Этот запрос возвращает все столбцы таблицы. Вам нужно, чтобы конечный пользователь ArcMap получил только список имен. Поэтому в разделе идентификатора укажите следующее.
-
В списке Поля (Fields) в нижней части формы дважды щелкните элемент NAME, чтобы добавить его в список Идентификатор (Identifier).
- Щелкните OK, чтобы закрыть форму.
-
Добавьте атрибут для получения номера завода. (Он будет использован для фильтрации данных при написании запросов для классов объектов схемы.) Щелкните правой кнопкой мыши элемент DiagramsFromCustomQueries в дереве Редактора набора схематических данных и выберите во всплывающем меню Новый атрибут (New Attribute).
Откроется закладка Новый атрибут (New Attribute) в правой части окна редактора. В модуле Schematics имеется много типов атрибутов. В данном случае нужно просто получить поле из уже созданного запроса. Тип (Type) для Поле (Field) оказывается выбранным по умолчанию.
- Введите PlantNum в поле Имя (Name).
- Прокрутите список Поля (Fields), пока не увидите PLANT_NUMBER. Дважды щелкните этот элемент, чтобы добавить его к списку Идентификатор (Identifier).
-
Щелкните OK, чтобы завершить определение атрибута.
- Щелкните Сохранить (Save) на панели инструментов Редактор набора схематических данных (Schematic Dataset Editor).
Создание классов объектов схемы
-
Щелкните правой кнопкой мыши шаблон DiagramsFromCustomQueries в дереве Редактора набора схематических данных и выберите пункт меню Новый класс объектов схемы (New Schematic Feature Class).
В правой части окна Редактор автоматически появится закладка Свойства (Properties) для нового класса объектов схемы.
- Введите ISP_Equipments в поле Имя (Name).
-
Щелкните ОК.
-
Щелкните правой кнопкой мыши шаблон DiagramsFromCustomQueries в дереве Редактора набора схематических данных и выберите пункт меню Новый класс объектов схемы (New Schematic Feature Class).
В правой части окна Редактор автоматически появится закладка Свойства (Properties) для нового класса объектов схемы.
- Введите ISP_Valves в поле Имя (Name).
-
Щелкните ОК.
-
Щелкните правой кнопкой мыши шаблон DiagramsFromCustomQueries в дереве Редактора набора схематических данных и выберите пункт меню Новый класс объектов схемы (New Schematic Feature Class).
В правой части окна Редактор автоматически появится закладка Свойства (Properties) для нового класса объектов схемы.
- Введите ISP_Pipes в поле Имя (Name).
-
В ниспадающем списке Тип (Type) выберите Связь (Link).
Записи о трубах представляют собой связи между клапанами и оборудованием.
-
Щелкните ОК.
- Щелкните Сохранить (Save) на панели инструментов Редактор набора схематических данных (Schematic Dataset Editor).
Настройка классов объектов схемы ISP_Equipments
-
Щелкните мышью элемент ISP_Equipments в дереве Редактора набора схематических данных (Schematic Dataset Editor).
Откроется закладка Свойства (Properties) для данного класса объектов схемы.
-
В разделе Запрос (Query) в ниспадающем списке Режим оценки (Evaluation Mode) выберите Запрос при создании или обновлении (Query on Generate/Update).
Кнопка Редактор Запроса/Идентификатора (Query/Identifier Editor) становится активной:
-
Нажмите кнопку Редактор Запроса/Идентификатора (Edit Query/Identifier ). .
Откроется диалоговое окно Редактор Запроса/Идентификатора (Query/Identifier Editor).
-
В выпадающем списке Источник данных (Data Source) выберите элемент NewDataSource.
-
Дважды щелкните элемент ISP_EQUIPMENTS в списке Таблицы (Tables).
Запрос будет автоматически добавлен в раздел Запрос (Query).
-
Однако на этот раз вам придется изменить запрос, чтобы он правильно фильтровал записи на основе номера завода, выбранного пользователем при создании схемы. Измените строку запроса, добавив в конец автоматически созданной строки следующий текст: where plant_number = ?
После того, как вы это введете, автоматически откроется новый раздел Параметры (Parameters). В нем вы можете задать атрибут, который будет вставляться в запрос вместо вопросительного знака. Поскольку в конфигурации есть только один атрибут, он уже выбран.
- Осталось изменить только одну настройку. Флажок Текстовый (Is Text) по умолчанию установлен. Однако в вашем случае данные относятся к числовому типу, поэтому флажок надо снять. Щелкните флажок Текстовый (Is Text), чтобы снять его.
-
Теперь, если хотите, вы можете протестировать запрос. Введите действительное значение PlantNum в поле Тестовое значение (Test Value) (например, 101 — это завод Aracaiu), и нажмите кнопку Показать результаты (Show Results).
Если запрос работает корректно, вы увидите только записи с этим номером.
-
Дважды щелкните элемент NUMBER_ в списке Поля (Fields), чтобы добавить его к списку Идентификатор (Identifier).
Каждый объект схемы в схематическом представлении должен иметь уникальный идентификатор. В данном случае известно, что поле NUMBER_ является уникальным в пространстве всех таблиц, используемых для получения данных. В ваших собственных разработках следите за тем, чтобы идентификаторы были уникальными. Иногда это требует творческого подхода.
- Щелкните OK, чтобы завершить определение.
Настройка классов объектов схемы ISP_Valves
-
Щелкните элемент ISP_Valves в дереве Редактора набора схематических данных (Schematic Dataset Editor).
Откроется закладка Свойства (Properties) данного класса объектов схемы.
- В разделе Запрос (Query) в ниспадающем списке Режим оценки (Evaluation Mode) выберите Запрос при создании или обновлении (Query on Generate/Update).
-
Щелкните кнопку Редактор Запроса/Идентификатора (Edit Query/Identifier). на закладке Свойства (Properties).
Откроется диалоговое окно Редактор Запроса/Идентификатора (Query/Identifier Editor).
- В выпадающем списке Источник данных (Data Source) выберите NewDataSource.
-
Дважды щелкните элемент ISP_VALVES в списке Таблицы (Tables).
Запрос будет автоматически добавлен в раздел Запрос (Query).
-
Нужно изменить запрос так, чтобы он правильно фильтровал записи на основе номера завода, выбранного пользователем при создании схем. Измените строку запроса, добавив в конец автоматически созданной строки следующий текст: where plant_number = ?
После того, как вы его введете, автоматически откроется новый раздел Параметры (Parameters). В нем вы можете задать атрибут, который будет вставляться в запрос вместо вопросительного знака. Поскольку в конфигурации есть только один атрибут, он уже выбран.
- Осталось изменить только одну настройку. Флажок Текстовый (Is Text) по умолчанию установлен. Однако в вашем случае данные относятся к числовому типу, поэтому флажок надо снять. Щелкните флажок Текстовый (Is Text), чтобы снять его.
-
Теперь, если хотите, вы можете протестировать запрос. Введите действительное значение PlantNum в поле Тестовое значение (Test Value) (например, 101 — это завод Aracaiu) и нажмите кнопку Показать результаты (Show Results).
Если запрос работает корректно, вы увидите только записи с этим номером.
-
Дважды щелкните элемент NUMBER_ списка Поля (Fields), чтобы добавить его к списку Идентификатор (Identifier).
Каждый объект схемы в схематическом представлении должен иметь уникальный идентификатор. В данном случае известно, что поле NUMBER_ является уникальным в пространстве всех таблиц, используемых для получения данных. В ваших собственных разработках следите за тем, чтобы идентификаторы были уникальными. Иногда это требует творческого подхода.
-
Щелкните OK, чтобы завершить определение.
Диалоговое окно Запрос/Идентификатор (Query/Identifier) закроется, и закладка Свойства (Properties) для класса объектов схемы ISP_Valves примет следующий вид:
Настройка классов объектов схемы ISP_Pipes
На последнем шаге настройки классов объектов нужно проделать практически те же действия, меняются только имена классов объектов и имена таблиц, из которых запрашиваются данные. Конфигурация запросов тоже не изменится, хотя потребуется определить несколько атрибутов, показывающих, какие поля используются для связи между узлами.
-
Щелкните мышью элемент ISP_Pipes в дереве Редактора набора схематических данных (Schematic Dataset Editor).
Откроется закладка Свойства (Properties) данного класса объектов схемы.
- В разделе Запрос (Query) в ниспадающем списке Режим оценки (Evaluation Mode) выберите Запрос при создании или обновлении (Query on Generate/Update).
-
Щелкните кнопку Редактор Запроса/Идентификатора (Edit Query/Identifier). на закладке Свойства (Properties).
Откроется диалоговое окно Редактор Запроса/Идентификатора (Query/Identifier Editor).
- В ниспадающем списке Источник данных (Data Source) выберите NewDataSource.
-
Дважды щелкните элемент ISP_PIPES в списке Таблицы (Tables).
Запрос будет автоматически добавлен в раздел Запрос (Query).
-
Нужно изменить запрос так, чтобы он правильно фильтровал записи на основе номера завода, выбранного пользователем при создании схем. Измените строку запроса, добавив в конец автоматически созданной строки следующий текст: where plant_number = ?
После того, как вы его введете, автоматически откроется новый раздел Параметры (Parameters). В нем вы можете задать атрибут, который будет вставляться в запрос вместо вопросительного знака. Поскольку в конфигурации есть только один атрибут, он уже выбран.
- Осталось изменить только одну настройку. Флажок Текстовый (Is Text) по умолчанию установлен. Однако в вашем случае данные относятся к числовому типу, поэтому флажок надо снять. Щелкните флажок Текстовый (Is Text), чтобы снять его.
-
Теперь, если хотите, вы можете протестировать запрос. Введите действительное значение PlantNum в поле Тестовое значение (Test Value) (например, 101 — это завод Aracaiu) и нажмите кнопку Показать результаты (Show Results).
Если запрос работает корректно, вы увидите только записи с этим номером.
-
Дважды щелкните элемент OBJECTID в списке Поля (Fields), чтобы добавить его к списку Идентификатор (Identifier).
Каждый объект схемы в схематическом представлении должен иметь уникальный идентификатор. В данном случае известно, что поле OBJECTID является уникальным в пространстве всех таблиц, используемых для получения данных. В ваших собственных разработках следите за тем, чтобы идентификаторы были уникальными. В некоторых случаях это требует творческого подхода.
-
Щелкните OK, чтобы завершить эту часть определения ISP_Pipes.
Диалоговое окно Запрос/Идентификатор (Query/Identifier) закроется, и закладка Свойства (Properties) для класса объектов схемы ISP_Pipes примет следующий вид:
-
В дереве Редактора набора схематических данных щелкните правой кнопкой мыши запись ISP_Pipes и выберите Новый атрибут (New Attribute).
Откроется закладка Свойства (Properties) для нового атрибута.
-
В выпадающем списке Имя (Name) выберите стандартный атрибут OriginNode.
В этом списке содержатся стандартные, уже определенные в системе атрибуты. Каждый атрибут определенным образом влияет на функциональность системы. Атрибут OriginNode указывает на узел, который является начальной (исходной) точкой для связи.
- Дважды щелкните элемент FROM_NODE_NUM в списке Поля (Fields), чтобы добавить его к списку Идентификатор (Identifier); это поле в таблице ISP_PIPES, в котором хранится информация о начальной точке связи для каждой трубы.
-
Щелкните OK, чтобы завершить настройку атрибута.
-
В дереве Редактора набора данных щелкните правой кнопкой мыши запись ISP_Pipes и выберите Новый атрибут (New Attribute).
Откроется закладка Свойства (Properties) для нового атрибута.
-
В ниспадающем списке Имя (Name) выберите стандартный атрибут ExtremityNode.
Атрибут ExtremityNode указывает на узел, который является конечной (крайней) точкой для связи.
- Дважды щелкните элемент TO_NODE_NUM_ в списке Поля (Fields), чтобы добавить его к списку Идентификатор (Identifier); это поле в таблице ISP_PIPES, в котором хранится информация о конечной точке связи для каждой трубы.
-
Щелкните OK, чтобы завершить настройку атрибута.
- Нажмите кнопку Сохранить (Save) на панели инструментов редактора.
- Закройте редактор схематических данных.
Создание схематического представления на основе пользовательского запроса
В этом разделе вы создадите ваше первое схематическое представление на основе вновь созданного шаблона схемы DiagramsFromCustomQueries.
- Запустить ArcMap с пустым документом карты.
-
Щелкните кнопку Создать новое схематическое представление (Generate New Schematic Diagram) на панели инструментов Schematic.
Откроется диалоговое окно Новое схематическое представление (New Schematic Diagram).
- Нажмите кнопку обзора справа поля Набор схематических данных или папка схемы (Schematic Dataset or Folder), чтобы открыть диалоговое окно Выбор набора схематических данных или папки схемы (Select schematic dataset or schematic folder).
- Найдите и выберите базу геоданных TutorialSchematicDB, которая была создана в упражнении 1 по пути C:\ArcGIS\ArcTutor\Schematics.
-
Дважды щелкните эту базу геоданных и выберите набор схематических данных SchematicBuilderSamples.
- Щелкните кнопку Добавить (Add).
-
Убедитесь, что в ниспадающем списке Шаблон схематического представления (Schematic Diagram Template) выбран шаблон схематического представления DiagramsFromCustomQueries.
В разделе Имя схематического представления (Schematic Diagram Name) уже выбрано значение ARACAIU, так как оно первое в алфавитном списке.
-
Щелкните стрелку ниспадающего списка Имя схематического представления (Schematic Diagram Name), чтобы убедиться, что в списке содержатся названия всех заводов из таблицы pug_PUG_gas_plants.
Как вы помните, цель работы заключалась в том, чтобы пользователь работал с более понятными для него названиями заводов, а не их номерами. Поэтому нужно было использовать атрибут PlantNum.
-
Убедитесь, что элемент ARACAIU по-прежнему выбран.
-
Щелкните OK, чтобы создать схему.
Поскольку в табличных записях не было координат, система Schematics автоматически разместила все узлы в точке с координатами 0,0. Если в данных есть координаты x и y, то можно создать предопределенные атрибуты для каждого класса пространственных объектов-узлов, чтобы для начального положения схемы использовались координаты x и y данных, а не 0,0. В любом случае, пользователь теперь может начать сеанс редактирования схемы и применять к ней различные алгоритмы и т.д.