Пример сервиса геообработки: Кратчайший путь по сети улиц

Уровень сложности: Средний Требования к данным: ArcGIS Tutorial Data for Desktop Путь к данным: C:\arcgis\ArcTutor\GP Service Examples\Network Analyst\ShortestRoute Задача: В этом разделе показано, как создавать, публиковать и использовать сервис геообработки, предназначенный для поиска кратчайшего пути по сети улиц в определенное время дня и создания путевого листа.

Папка

ShortestRoute

Цель

Показывает кратчайший путь на определенное время дня между двумя точками на сети улиц и создает путевой лист в текстовом или HTML-файле.

Сервисы

ShortestRouteService (сервис геообработки)

Задачи геообработки

Вычисление кратчайшего пути

Входные данные

  • Две и более оцифрованные точки
  • Дата и время начала
  • Выбор публикации путевого листа в HTML- или текстовом формате

Выходные данные

  • Линейный объект, представляющий кратчайший путь между заданными пользователем точками для определенного времени начала
  • HTML- или текстовый файл, содержащий путевой лист

Данные

Используется набор сетевых данных по улицам для города Сан-Франциско, который предоставляется в папке ToolData

Дополнительные модули

Дополнительный модуль Дополнительный модуль ArcGIS Network Analyst extension

Примечание

  • Демонстрирует, как повторно использовать существующий слой сетевого анализа маршрута при каждом выполнении задачи.
  • Демонстрирует, Как использовать инструмент-скрипт и модуль ArcGIS Network Analyst для изменения значения начального времени на слое анализа.
  • Этот пример можно использовать в качестве руководства по работе со следующими механизмами решения из дополнительного модуля Network Analyst: размещение-распределение, матрица источник-назначение и ближайший пункт обслуживания. Их рабочие процессы практически идентичны. (Руководствуйтесь этим разделом при публикации сервиса геообработки, который использует решение задачи выбора маршрута транспорта или механизмы расчета зоны обслуживания.)

Об этом примере

Соответствующая папка

Данные для этого руководства можно загрузить с сайта 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.

Содержимое папки ShortestRoute
Содержимое папки 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

Значения параметров, использованные в инструменте Создать слой маршрута (Make Route Layer)

Настройки диалогового окна инструмента Создать слой маршрута

Процессы модели

Инструмент-скрипт Изменить время начала маршрута (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).

Публикация

Сервис геообработки публикуется, как описано в приведенных ниже пошаговых инструкциях.

Шаги:
  1. Откройте ShortestRouteService.mxd. Местом по умолчанию для руководств является C:\arcgis\ArcTutor\GP Service Examples\ArcGIS Network Analyst\ShortestRoute.
  2. Запустите модель геообработки Вычисление кратчайшего пути (Calculate Shortest Route).
    1. В окне Каталог (Catalog) разверните ShortestRouteService.tbx и дважды щелкните модель Вычисление кратчайшего пути (Calculate Shortest Route).
    2. В диалоговом окне инструмента Вычисление кратчайшего пути (Calculate Shortest Route) щелкните символ рядом с пунктом Остановки (Stops) и щелкните место на карте, чтобы добавить остановку.
    3. Щелкните ОК, чтобы создать маршрут и путевой лист.
  3. Откройте окно Результаты (Results), щелкнув Геообработка > Результаты.
  4. В окне Результаты (Results), разверните пункт Текущий сеанс (Current Session).
  5. Щелкните правой кнопкой мыши пункт CalculateShortestRoute (вслед за которым следует время и дата запуска модели) и выберите Общий доступ как (Share As) > Сервис геообработки (Geoprocessing Service).
  6. В диалоговом окне Использовать совместно как сервис (Share as Service) щелкните кнопку Далее (Next).
  7. Выберите в раскрывающемся списке подключение к ArcGIS for Server с функциями издателя или выполните подключение с помощью кнопки, расположенной справа от раскрывающегося списка.
  8. Щелкните Далее (Next).
  9. Выберите публикацию сервиса в корневую папку или укажите другую папку, затем нажмите кнопку Продолжить (Continue).

    Появится диалоговое окно Редактор сервисов (Service Editor). В качестве описания сервиса копируется текст из описания элемента модели геообработки и инструмента-скрипта. Он доступен для редактирования в разделе Описание элемента (Item Description) диалогового окна, а также в разделах непосредственно над ним (Route_Directions, Start Time и т. д.).

  10. Так как анализ маршрута на этой изучаемой территории является быстрой процедурой, сделайте сервис синхронным, щелкнув закладку Параметры (Parameters) и установив отметку Синхронный (Synchronous). При публикации сервиса для расчета размещения-распределения или матрицы источник-назначение, задайте для этого свойства значение Асинхронный (Asynchronous) и рассмотрите возможность увеличения значения параметра Максимальное время, в течение которого клиент может использовать сервис (The maximum time a client can use a service), который находится на закладке Слияние сервисов.
  11. Измените значение параметра Уровень сообщений (Message Level) на Предупреждение (Warning), чтобы любые ошибки или предупреждения возвращались во время выполнения задачи.
  12. Удалите XML как формат файла путевого листа, щелкнув Тип файла для путевого листа (File Type for Directions) и сняв отметку XML.
  13. Щелкните Анализировать Анализировать (Analyze) для просмотра любых предупреждений или сообщений об ошибках в окне Издатель (Publisher).

    Если не настроено хранилище данных, появится предупреждение о том, что данные будут скопированы на сервер.

    Щелкните любое другое сообщение об ошибке правой кнопкой мыши в окне Издатель (Publisher), чтобы получить справку по решению той или иной неполадки.

  14. Щелкните Опубликовать (Publish) Опубликовать в диалоговом окне Редактор сервисов (Service Editor).

    Может незамедлительно появиться диалоговое окно, информирующее о копировании Streets_ND на сервер. В этом случае щелкните OK. После успешной публикации сервиса отображается диалоговое окно Успешно (Succeeded).

  15. Нажмите ОК.

Использование

Шаги:
  1. Откройте пустой документ карты и добавьте класс объектов Улицы (Streets) из данных руководства (C:/arcgis/ArcTutor/GP Service Examples/ArcGIS Network Analyst/SanFrancisco/Transportation/Streets). Кроме того, можно добавить слой базовой карты из ArcGIS Online и удалить слой объектов Улицы (Streets).
  2. Создайте пользовательское подключение к ArcGIS for Server из окна Каталог (Catalog), если таковое еще не существует.
  3. Разверните пользовательское подключение, затем разверните сервис CalculateShortestRoute.
  4. Дважды щелкните задачу Вычисление кратчайшего пути (Calculate Shortest Route), чтобы открыть ее.
  5. Добавьте, по меньшей мере, две точки для создания остановок. Кроме того, можно указать имена для каждой остановки в таблице атрибутов применительно к тому слою, который отображается в таблице содержания: CalculateShortestRoute::Stops.
  6. Укажите дату и время начала маршрута от первой остановки. Выберите, следует ли выводить путевой лист в текстовом формате или в формате HTML. Щелкните OK, чтобы запустить задачу.

    ArcGIS for Server получает запрос, выполняет расчет анализа, возвращает слой с именем Маршруты (Routes) и сохраняет файл путевого листа во временной папке. Вы можете увидеть путевой лист в окне Результаты (Results): разверните Текущий сеанс (Current Session) > CalculateShortestRoute и дважды щелкните Путевой лист маршрута (Route Directions): RouteDirections. (Можете щелкнуть правой кнопкой мыши Путевой лист маршрута (Route Directions): RouteDirections и выбрать Копировать местоположение (Copy Location), чтобы найти файл на вашем компьютере.

Связанные темы

9/11/2013