Skip To Content

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

Доступно с лицензией Network Analyst.

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

Папка

ShortestRoute

Назначение

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

Сервисы

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

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

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

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

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

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

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

Данные

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

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

ArcGIS Network Analyst

Примечание

  • Демонстрирует, как повторно использовать существующий слой сетевого анализа маршрута при каждом выполнении задачи.
  • Демонстрирует, как использовать инструмент-скрипт и модуль 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

Набор сетевых данных

Папка ArcGIS Network Analyst содержит файловую базу геоданных SanFrancisco.gdb. В наборе данных объектов Транспорт содержится набор сетевых данных Streets_ND. Этот набор сетевых данных моделирует сеть улиц города Сан-Франциско. В нем предоставляется ряд атрибутов сети, включая TravelTime, который указывает время на пересечение каждого сегмента улиц в минутах, и Meters, который указывает длину каждого сегмента улиц.

Набор инструментов и документ карты

Набором инструментов для сервиса геообработки является ShortestRouteService.tbx.

Документ карты, ShortestRouteService.mxd включен для удаления второстепенных действий в этом рабочем процессе, таких как добавление слоев, вписание экстентов карты в изучаемую область.

ShortestRouteService содержит инструмент-скрипт и модель. Инструмент-скрипт Изменить время начала маршрута является частью модели Вычисление кратчайшего пути.

Модель

Обзор модели

Модель Вычисление кратчайшего пути проиллюстрирована ниже.

Имеются три входных параметра: Начальное время, который является необязательным и представляет время отъезда от первой входной остановки; Входные остановки, которые представляет оцифрованные пользователем точки для прокладки маршрута, и Тип файла для инструкций по направлению движения, который указывает, в каком формате следует сохранить выходные инструкции по направлению движения: HTML или TXT.

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

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

Использование существующего слоя сетевого анализа

Слой сетевого анализа не создается в модели Вычисление кратчайшего пути. Модель просто предполагает, что слой уже существует. Благодаря такому решению модель и сопутствующие задачи геообработки, опубликованные на ее основе, повторно используют один слой сетевого анализа вместо создания нового слоя для каждого расчета. Это позволяет избежать ненужной обработки.

Модель ссылается на инструмент-скрипт Изменить время начала маршрута, который использует Python, а также на модуль ArcGIS Network Analyst (arcpy.na) для получения доступа к существующему слою сетевого анализ маршрута и изменения этого маршрута в соответствии с введенными пользователем значениями параметров. Если точнее, скрипт передает слой сетевого анализа в arcpy.na.GetSolverProperties, а получает обратно объект RouteSolverProperties. На основе этого объекта устанавливается свойство timeOfDay слоя сетевого анализа.

Хотя это не рекомендуется, можно избежать добавления инструмента-скрипта путем запуска модели с инструментом Создать слой маршрута и предоставления параметра этого инструмента Время начала в качестве параметра модели. Однако после публикации модели в качестве задачи на сервере новый слой сетевого анализа будет создаваться по каждому клиентскому запросу. При таком подходе серверы должны будут выполнять большие объемы дополнительной обработки. Инструмент-скрипт и модуль ArcGIS Network Analyst позволяют изменять свойства существующего слоя сетевого анализа, чтобы можно было создать только один слой, который потом бы использовался этим сервисом.

Прежние версии:

Модуль Network Analyst появился в версии ArcGIS 10.1. Единственным способом изменения свойств слоя сетевого анализа оставалось создание нового слоя в модели с помощью одного из нескольких инструментов геообработки для создания слоя (например, Создать слой маршрута) и предоставление одного или нескольких параметров анализа из инструмента в качестве параметров модели.

Слой маршрута, использованный в качестве входной переменной в модели Вычисление кратчайшего пути создавался путем добавления набора сетевых данных Streets_ND в ShortestRouteService.mxd и использования инструмента Создать слой маршрута. В этом примере были заданы следующие параметры инструмента при создании слоя маршрута. Для параметров, не упомянутых в таблице, использовались значения по умолчанию.

Параметр

Значение

Входная сеть анализа

Streets_ND

Имя выходного слоя

Route

Атрибут импеданса

TravelTime

Время начала

Накопители

Meters; TravelTime

Правила разворотов

ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY

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

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

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

Инструмент-скрипт Изменить время начала маршрута позволяет воспользоваться преимуществами динамического времени в пути из набора сетевых данных путем определения времени начала маршрута. Если не задать дату и время механизм расчета найдет кратчайший маршрут в зависимости от сетевого стоимостного атрибута, созданного на основе общего времени в пути. Однако если дата и время указаны, механизм расчета использует стоимостной атрибут, основанный на историческом времени в пути, что позволяет, как показывает практика, прокладывать более точные маршруты.

Инструмент Добавить местоположения добавляет на слой маршрута оцифрованные пользователем точки в качестве остановок. Параметр Входные положения для этого инструмента определяется посредством параметра модели Входные остановки. Типом данных этого параметра является набор объектов. Схема и символы для набора объектов наследуются из файла InputStops.lyr, который содержится в папке ToolData.

Схема набора объектов Входные остановки содержит текстовое поле Имя. Это поле может использоваться для предоставления названий остановок в создаваемый путевой лист путем сопоставления свойства Имя с полем имени в Соответствии полей, как показано ниже. Если значение поля имени не определено пользователем, в качестве названий остановок используются значения по умолчанию: Местоположение 1, Местоположение 2 и т. д.

Так как тот же слой маршрута используется для каждого запуска модели, любые существующие остановки должны удаляться перед добавлением новых остановок. Чтобы удалить существующие остановки, следует снять отметку Присоединить к существующим положениям, как показано ниже.

Опция Исключить части сети с ограничениями включена, так что при добавлении остановок, они не размещаются на гранях, которые невозможно пересечь. Это предотвращает сбои во время расчетов.

Добавление остановок
Добавление остановок

Инструмент Расчет вычисляет кратчайший путь на основе сетевого атрибута TravelTime, настройки Время начала и других опций, указанных на слое маршрута. Вычисленный маршрут заносится на подслой Маршруты в выходном слое маршрута.

Слои сетевого анализа (например, слой маршрута) не являются поддерживаемыми типами данных выходных параметров у клиентов ArcGIS for Server. Поэтому инструмент Выбрать данные используется для получения подслоя Маршруты из слоя сетевого анализа.

Инструмент Путевой лист создает путевой лист и выводит его в текстовый, XML- или HTML-файл в зависимости от предпочтений пользователя. Однако опция XML исключается из списка при запуске результирующей задачи из ArcGIS Server. Это опция удаляется путем снятия отметки XML в Редакторе сервисов, в разделе Тип файла для путевого листа, при публикации сервиса. Переменная SolveSucceeded, производная из инструмента Расчет используется в качестве предварительного условия для инструмента Путевой лист. Это означает, что файл путевого листа создается только в том случае, если инструмент Расчет может найти маршрут между входными точками.

Описание элемента

Документируя описание элемента модели геообработки, вы также документируете результирующий сервис и его параметры, так как мастер публикации копирует текст в описание элемента используемого сервиса. Описание или документирование сервиса является обязательной процедурой, призванной помочь пользователям понять, как можно успешно взаимодействовать с сервисом и находить кратчайшие пути. Модель и инструмент-скрипт в этом примере имеют документацию; ее можно просмотреть, щелкнув правой кнопкой мыши модель геообработки в окне Таблица содержания и выбрав пункт Описание элемента.

Публикация

Сервис геообработки публикуется, как описано в приведенных ниже пошаговых инструкциях. Для успешной публикации сервиса издатели должны иметь возможность копирования данных на ArcGIS Server.

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

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

  10. Так как анализ маршрута на этой изучаемой территории является быстрой процедурой, сделайте сервис синхронным, щелкнув вкладку Параметры и установив отметку Синхронный. При публикации сервиса для расчета размещения-распределения или матрицы источник-назначение, задайте для этого свойства значение Асинхронный и рассмотрите возможность увеличения значения параметра Максимальное время, в течение которого клиент может использовать сервис, который находится на вкладке Слияние сервисов.
  11. Измените значение параметра Уровень сообщений на Предупреждение, чтобы любые ошибки или предупреждения возвращались во время выполнения задачи.
  12. Удалите XML как формат файла путевого листа, щелкнув Тип файла для путевого листа и сняв отметку XML.
  13. Щелкните АнализироватьАнализировать (Analyze) для просмотра любых предупреждений или сообщений об ошибках в окне Издатель.

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

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

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

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

  15. Щелкните ОК.

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

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

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

Связанные разделы