Пример сервиса геообработки: кратчайший путь по сети улиц
Папка |
ShortestRoute |
Цель |
Показывает кратчайший путь на определенное время дня между двумя точками на сети улиц и создает путевой лист в текстовом или HTML-файле. |
Сервисы |
ShortestRouteService (сервис геообработки) |
Задачи геообработки |
Вычисление кратчайшего пути |
Входные данные |
|
Выходные данные |
|
Данные |
Используется набор сетевых данных по улицам для города Сан-Франциско, который предоставляется в папке ToolData |
Дополнительные модули |
|
Примечание |
|
Соответствующая папка
Данные для этого руководства можно загрузить с сайта ArcGIS.com. Распакуйте данные в папку C:\arcgis\ArcTutor. Модель и некоторые сопутствующие данные хранятся в папке C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute. Набор сетевых данных, на которых имеется ссылка в слое сетевого анализа модели, хранится в базе геоданных SanFrancisco, которая размещена в папке C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute.
Об этом примере
Сервис ShortestRouteService, созданный в этом примере, показывает, как публиковать задачи геообработки, которые рассчитывают кратчайший путь по сети улиц между заданными пользователем точками и создают файл, содержащий путевой лист.
Набор сетевых данных Сан-Франциско, используемый в этом примере, настраивается с использованием данных исторического трафика, которые позволяют находить кратчайший путь на автомобиле в заданное время дня и в заданный день недели. Это означает, что можно найти кратчайший путь из точки А в точку Б в 8:00, 10:00, 22:25 и т. д. Форма маршрута может меняться, как и его продолжительность, однако в любом случае вычисляется кратчайший маршрут на заданное время.
Данные
Набор сетевых данных для этого примера взят из C:\arcgis\ArcTutor\GP Service Examples\ArcGIS Network Analyst\SanFrancisco.gdb. Документ карты, набор инструментов и другие вспомогательные данные сохраняются в C:\arcgis\ArcTutor\GP Service Examples\ArcGIS Network Analyst\ShortestRoute.
Сетевой набор данных (Network dataset)
Папка ArcGIS Network Analyst содержит файловую базу геоданных SanFrancisco.gdb. В наборе данных объектов Транспорт (Transportation) содержится набор сетевых данных Streets_ND. Этот набор сетевых данных моделирует сеть улиц города Сан-Франциско. В нем предоставляется ряд атрибутов сети, включая TravelTime, который указывает время на пересечение каждого сегмента улиц в минутах, и Meters, который указывает длину каждого сегмента улиц.
Набор инструментов и документ карты
Набором инструментов для сервиса геообработки является ShortestRouteService.tbx.
Документ карты, ShortestRouteService.mxd включен для удаления второстепенных действий в этом рабочем процессе, таких как добавление слоев, вписание экстентов карты в изучаемую область.
ShortestRouteService содержит инструмент-скрипт и модель. Инструмент-скрипт Изменить время начала маршрута (Change Route Start Time) является частью модели Вычисление кратчайшего пути (Calculate Shortest Route).
Модель
Обзор модели
Модель Вычисление кратчайшего пути (Calculate Shortest Route) проиллюстрирована ниже.
Имеются три входных параметра: Начальное время (Start Time), который является необязательным и представляет время отъезда от первой остановки; на входе (Input Stops), который представляет оцифрованные пользователем точки для прокладки маршрута, и Тип файла для инструкций по направлению движения (File Type for Directions), который указывает, в каком формате следует сохранить выходные инструкции по направлению движения: HTML или TXT.
В модели используется инструмент-скрипт для определения начального времени маршрута в существующем уровне сетевого анализа, добавляются остановки в слой анализа маршрута, выполняется поиск кратчайшего пути и создается форма маршрута и путевой лист. Результирующий маршрут проходит по остановкам в порядке их оцифровки.
Использование существующего слоя сетевого анализа
Слой сетевого анализа не создается в модели Вычисление кратчайшего пути (Calculate Shortest Route). Модель просто предполагает, что слой уже существует. Благодаря такому решению модель и сопутствующие задачи геообработки, опубликованные на ее основе, повторно используют один слой сетевого анализа вместо создания нового слоя для каждого расчета. Это позволяет избежать ненужной обработки.
Модель ссылается на инструмент-скрипт Изменить время начала маршрута (Change Route Start Time), который использует Python, а также на модуль ArcGIS Network Analyst (arcpy.na) для получения доступа к существующему слою сетевого анализ маршрута и изменения этого маршрута в соответствии с введенными пользователем значениями параметров. Если точнее, скрипт передает слой сетевого анализа в arcpy.na.GetSolverProperties, а получает обратно объект RouteSolverProperties. На основе этого объекта устанавливается свойство timeOfDay слоя сетевого анализа.
Хотя это не рекомендуется, можно избежать добавления инструмента-скрипта путем запуска модели с инструментом Создать слой маршрута (Make Route Layer) и предоставления параметра этого инструмента Время начала (Start Time) в качестве параметра модели. Однако после публикации модели в качестве задачи на сервере новый слой сетевого анализа будет создаваться по каждому клиентскому запросу. При таком подходе серверы должны будут выполнять большие объемы дополнительной обработки. Инструмент-скрипт и модуль ArcGIS Network Analyst позволяют изменять свойства существующего слоя сетевого анализа, чтобы можно было создать только один слой, который потом бы использовался этим сервисом.
Модуль Network Analyst появился в версии ArcGIS 10.1. Единственным способом изменения свойств слоя сетевого анализа оставалось создание нового слоя в модели с помощью одного из нескольких инструментов геообработки для создания слоя (например, Создать слой маршрута (Make Route Layer)) и предоставление одного или нескольких параметров анализа из инструмента в качестве параметров модели.
Слой маршрута, использованный в качестве входной переменной в модели Вычисление кратчайшего пути (Calculate Shortest Route) создавался путем добавления набора сетевых данных Streets_ND в ShortestRouteService.mxd и использования инструмента Создать слой маршрута (Make Route Layer). В этом примере были заданы следующие параметры инструмента при создании слоя маршрута. Для параметров, не упомянутых в таблице, использовались значения по умолчанию.
Параметр |
Значение |
Входная сеть анализа |
Streets_ND |
Имя выходного слоя |
Маршрут (Route) |
Атрибут импеданса |
TravelTime |
Время начала | |
Накопители |
Meters; TravelTime |
Правила разворотов |
ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY |
Процессы модели
Инструмент-скрипт Изменить время начала маршрута (Change Route Start Time) позволяет воспользоваться преимуществами динамического времени в пути из набора сетевых данных путем определения времени начала маршрута. Если не задать дату и время механизм расчета найдет кратчайший маршрут в зависимости от сетевого стоимостного атрибута, созданного на основе общего времени в пути. Однако если дата и время указаны, механизм расчета использует стоимостной атрибут, основанный на историческом времени в пути, что позволяет, как показывает практика, прокладывать более точные маршруты.
Инструмент Добавить местоположения (Add Locations) добавляет на слой маршрута оцифрованные пользователем точки в качестве остановок. Параметр Входные положения (Input Locations) для этого инструмента определяется посредством параметра модели Остановки на входе (Input Stops). Типом данных этого параметра является набор объектов. Схема и символы для набора объектов наследуются из файла InputStops.lyr, который содержится в папке ToolData.
Схема набора объектов Остановки на входе (Input Stops) содержит текстовое поле Имя (Name). Это поле может использоваться для предоставления названий остановок в создаваемый путевой лист путем сопоставления свойства Имя (Name) с полем имени в Соответствии полей (Field mappings), как показано ниже. Если значение поля имени не определено пользователем, в качестве названий остановок используются значения по умолчанию: Местоположение 1, Местоположение 2 и т. д.
Так как тот же слой маршрута используется для каждого запуска модели, любые существующие остановки должны удаляться перед добавлением новых остановок. Чтобы удалить существующие остановки, следует снять отметку Присоединить к существующим положениям (Append to existing locations), как показано ниже.
Опция Исключить части сети с ограничениями (Exclude Restricted Portions of the Network) включена, так что при добавлении остановок, они не размещаются на гранях, которые невозможно пересечь. Это предотвращает сбои во время расчетов.
Инструмент Расчет (Solve) вычисляет кратчайший путь на основе сетевого атрибута TravelTime, настройки Время начала (Start Time) и других опций, указанных на слое маршрута. Вычисленный маршрут заносится на подслой Маршруты (Routes) в выходном слое маршрута.
Слои сетевого анализа (например, слой маршрута) не являются поддерживаемыми типами данных выходных параметров у клиентов ArcGIS for Server. Поэтому инструмент Выбрать данные (Select Data) используется для получения подслоя Маршруты (Routes) из слоя сетевого анализа.
Инструмент Путевой лист (Directions) создает путевой лист и выводит его в текстовый, XML- или HTML-файл в зависимости от предпочтений пользователя. Однако опция XML исключается из списка при запуске результирующей задачи из ArcGIS for Server. Это опция удаляется путем снятия отметки XML в редакторе сервисов (раздел Тип файла для путевого листа (File Type for Directions) при публикации сервиса. Переменная SolveSucceeded, производная из инструмента Расчет (Solve) используется в качестве предварительного условия для инструмента Путевой лист (Directions). Это означает, что файл путевого листа создается только в том случае, если инструмент Расчет (Solve) может найти маршрут между входными точками.
Описание элемента
Документируя описание элемента модели геообработки, вы также документируете результирующий сервис и его параметры, так как мастер публикации копирует текст в описание элемента используемого сервиса. Описание или документирование сервиса является обязательной процедурой, призванная помочь пользователям понять, как можно успешно взаимодействовать с сервисом и находить кратчайшие пути. Модель и инструмент-скрипт в этом примере имеют документацию; ее можно просмотреть, щелкнув правой кнопкой мыши модель геообработки в окне Таблица содержания (Table Of Contents) и выбрав пункт Описание элемента (Item Description).
Публикация
Сервис геообработки публикуется, как описано в приведенных ниже пошаговых инструкциях.
- Откройте ShortestRouteService.mxd. Местом по умолчанию для руководств является C:\arcgis\ArcTutor\GP Service Examples\ArcGIS Network Analyst\ShortestRoute.
- Запустите модель геообработки Вычисление кратчайшего пути (Calculate Shortest Route).
- В окне Каталог (Catalog) разверните ShortestRouteService.tbx и дважды щелкните модель Вычисление кратчайшего пути (Calculate Shortest Route).
- В диалоговом окне инструмента Вычисление кратчайшего пути (Calculate Shortest Route) щелкните символ рядом с пунктом Остановки (Stops) и щелкните место на карте, чтобы добавить остановку.
- Щелкните ОК, чтобы создать маршрут и путевой лист.
- Откройте окно Результаты (Results), щелкнув Геообработка > Результаты.
- В окне Результаты (Results), разверните пункт Текущий сеанс (Current Session).
- Щелкните правой кнопкой мыши пункт CalculateShortestRoute (вслед за которым следует время и дата запуска модели) и выберите Общий доступ как (Share As) > Сервис геообработки (Geoprocessing Service).
- В диалоговом окне Опубликовать как сервис (Share as Service) щелкните кнопку Далее (Next).
- Выберите в раскрывающемся списке подключение к ArcGIS for Server с функциями издателя или выполните подключение с помощью кнопки, расположенной справа от раскрывающегося списка.
- Щелкните Далее (Next).
- Выберите публикацию сервиса в корневую папку или укажите другую папку, затем нажмите кнопку Продолжить (Continue).
Появится диалоговое окно Редактор сервисов (Service Editor). В качестве описания сервиса копируется текст из описания элемента модели геообработки и инструмента-скрипта. Он доступен для редактирования в разделе Описание элемента (Item Description) диалогового окна, а также в разделах непосредственно над ним (Route_Directions, Start Time и т. д.).
- Так как анализ маршрута на этой изучаемой территории является быстрой процедурой, сделайте сервис синхронным, щелкнув закладку Параметры (Parameters) и установив отметку Синхронный (Synchronous). При публикации сервиса для расчета размещения-распределения или матрицы источник-назначение, задайте для этого свойства значение Асинхронный (Asynchronous) и рассмотрите возможность увеличения значения параметра Максимальное время, в течение которого клиент может использовать сервис (The maximum time a client can use a service), который находится на закладке Слияние сервисов.
- Измените значение параметра Уровень сообщений (Message Level) на Предупреждение (Warning), чтобы любые ошибки или предупреждения возвращались во время выполнения задачи.
- Удалите XML как формат файла путевого листа, щелкнув Тип файла для путевого листа (File Type for Directions) и сняв отметку XML.
- Щелкните Анализировать для просмотра любых предупреждений или сообщений об ошибках в окне Издатель (Publisher).
Если не настроено хранилище данных, появится предупреждение о том, что данные будут скопированы на сервер.
Щелкните любое другое сообщение об ошибке правой кнопкой мыши в окне Издатель (Publisher), чтобы получить справку по решению той или иной неполадки.
- Щелкните Опубликовать (Publish) в диалоговом окне Редактор сервисов (Service Editor).
Может незамедлительно появиться диалоговое окно, информирующее о копировании Streets_ND на сервер. В этом случае щелкните OK. После успешной публикации сервиса отображается диалоговое окно Успешно (Succeeded).
- Нажмите ОК.
Использование
- Откройте пустой документ карты и добавьте класс объектов Улицы (Streets) из данных руководства (C:/arcgis/ArcTutor/GP Service Examples/ArcGIS Network Analyst/SanFrancisco/Transportation/Streets). Кроме того, можно добавить слой базовой карты из ArcGIS Online и удалить слой объектов Улицы (Streets).
- Создайте пользовательское подключение к ArcGIS for Server из окна Каталог (Catalog), если таковое еще не существует.
- Разверните пользовательское подключение, затем разверните сервис CalculateShortestRoute.
- Дважды щелкните задачу Вычисление кратчайшего пути (Calculate Shortest Route), чтобы открыть ее.
- Добавьте, по меньшей мере, две точки для создания остановок. Кроме того, можно указать имена для каждой остановки в таблице атрибутов применительно к тому слою, который отображается в таблице содержания: CalculateShortestRoute::Stops.
- Укажите дату и время начала маршрута от первой остановки. Выберите, следует ли выводить путевой лист в текстовом формате или в формате HTML. Щелкните OK, чтобы запустить задачу.
ArcGIS for Server получает запрос, выполняет расчет анализа, возвращает слой с именем Маршруты (Routes) и сохраняет файл путевого листа во временной папке. Доступ к инструкциям по направлению движения можно получить в окне Результаты (Results): разверните Текущий сеанс (Current Session) > CalculateShortestRoute и дважды щелкните пункт Route Directions: RouteDirections. (Можно щелкнуть правой кнопкой мыши Route Directions: RouteDirections и выбрать пункт Копировать местоположение (Copy Location), чтобы найти место, где этот файл хранится на компьютере.)