Пользовательские путевые листы
Пользовательские путевые листы позволяют вам изменять текст пошаговых путевых листов после того, как они изначально были созданы во время операции расчета. Существующие путевые листы маршрута можно обновить или удалить, а также добавить новые точки в маршрут. Это позволит вам изменить итоговые путевые листы без необходимости обновления используемого набора сетевых данных.
Примерами применения пользовательских путевых листов могут быть:
Добавление события в маршрут при въезде или выезде с платной дороги или при переходе с наземной улицы на линию метро.
Изменение текста маневра в маршруте для подчеркивания острых углов поворотов.
Предупреждение водителя через каждые 120 минут вождения.
Упрощение или расширение инструкции по маршруту для конкретного приложения.

Для реализации пользовательских путевых листов создайте класс Python, который наследуется от класса arcpy.nax.DirectionsCustomizer, и связывания класса Python с определенным набором сетевых данных.
При реализации алгоритма настройщика путевых листов существует несколько объектов, которые можно использовать для сбора информации о сети и путевом листе, например DirectionPoint, DirectionsName, ReferenceLandmark и другие.
Пользовательский класс путевых листов
Чтобы создать алгоритм настройщика путевых листов, задайте класс, который наследуется от класса arcpy.nax.DirectionsCustomizer и реализует метод customize. Также можно использовать класс для реализации методов __init__ и attach.
Пользовательский методы путевых листов
В подразделах ниже описаны методы, которые можно использовать для настройки путевых листов во время расчета.
Initializer
Встраивание метода (__init__) является необязательным. Это стандартный инициализатор объекта Python, который можно использовать по мере необходимости.
Attach
Встраивание метода attach является необязательным. Этот метод можно использовать для оценки и проверки набора сетевых данных, чтобы убедиться, что он соответствует требованиям кода пользовательских путевых листов, с помощью объекта сетевого запроса, передаваемого в этот метод. Если набор сетевых данных корректен, метод attach возвращает True. В противном случае он возвращает False. Если возвращается False, настройщик путевых листов не будет связан с набором сетевых данных и никакие другие методы класса вызываться не будут.
Для временных настройщиков путевых листов метод attach вызывается, когда в скрипте назначается свойство directionsCustomizer для объекта набора сетевых данных.
Для существующих пользовательских путевых листов метод attach вызывается внутри кода основного набора сетевых данных при открытии набора сетевых данных.
Примечание:
Набор сетевых данных может быть открыт несколько раз в зависимости от количества потоков, используемых приложением для доступа к нему.
Настройка
Требуется встраивание метода customize. Этот метод будет вызываться после создания исходных путевых листов и там, где их можно изменить.
Объект arcpy.nax.DirectionsQuery, передаваемый в этот метод, можно использовать для перебора соединений и ребер, чтобы получить связанные с ними точки путевых листов.
Существующие точки маршрута можно обновить, например, изменив отображаемый текст. Можно создать новые точки маршрута и добавить их в список элементов точек путевого листа. Либо существующие точки маршрута можно удалить.
Примечание:
При создании точки маршрута должны быть установлены как минимум свойства
displayTextиdirectionPointType.Свойства
azimuth,arrivalTimeиexitNumberустанавливаются внутренне и не могут быть установлены в настройщике путевых листов.
У этих элементов есть различные свойства, которые могут оказаться полезными при настройке путевых листов маршрута. Объект self.networkQuery можно использовать для получения информации из набора сетевых данных.
Маршрут состоит из остановок, ребер и соединений. Эти классы объектов используются для создания путевых листов маршрута. Путевой лист состоит классов объектов точек и линий маршрута. Путевые листы создаются путем анализа остановок, ребер и соединений, чтобы найти места, где происходит что-то, о чем следует проинформировать пользователя. Затем в этих местах создаются точки маршрута и связываются с соответствующим элементом. Обычно точки маршрута связаны с соединениями. В настоящее время точки маршрута связываются с ребрами только при обнаружении ориентира. Затем линии маршрута создаются путем сложения ребер между точками маршурта.
Примечание:
С одним и тем же объектом может быть связано несколько точек маршрута.
Примеры
Пример 1. Приведенный ниже код представляет собой простой пример класса пользовательских путевых листов, который добавляет число в начало каждого маневра маршрута.
import arcpy
class DirectionsIndexer(arcpy.nax.DirectionsCustomizer):
"""Defines a directions customizer that adds and index number to directions."""
def customize(self, directions_query: arcpy.nax.DirectionsQuery):
"""Add an index number to each directions maneuver."""
index = 1
for junction in directions_query.junctions:
for point in junction.directionPoints:
point.displayText = f"{index} -> {point.displayText}"
index += 1
Пример 2: В приведенном ниже коде показан класс пользовательских путевых листов с реализованными дополнительными методами.
import arcpy
class DirectionsIndexer(arcpy.nax.DirectionsCustomizer):
"""Defines a directions customizer that adds and index number to directions."""
def __init__(self):
"""Example initializer."""
super().__init__()
# Do additional custom initialization
def attach(self, network_query: arcpy.nax.NetworkQuery) -> bool:
# Do additional validation checks before returning Boolean
return True
def customize(self, directions_query: arcpy.nax.DirectionsQuery):
"""Add an index number to each directions maneuver."""
index = 1
for junction in directions_query.junctions:
for point in junction.directionPoints:
point.displayText = f"{index} -> {point.displayText}"
index += 1
Пример 3: В приведенном ниже коде показан класс пользовательских путевых листов, который добавляет новые точки маршрута с настраиваемым сообщением, предупреждающим водителя, когда он находится за рулем более двух часов.
import arcpy
class LongDriveAlert(arcpy.nax.DirectionsCustomizer):
"""Defines a directions customizer that reports an alert after a long drive."""
def customize(self, directions_query: arcpy.nax.DirectionsQuery) -> None:
"""Customize directions.
If a traversed junction's accumulated time is over the alert interval, add an alert as a directions point.
Enhance the existing directions text to show the time elapsed since the beginning of the trip.
"""
alert_interval = 120 # This assumes that the travel mode's time attribute unit is minutes.
# Loop through the traversed junctions and get the accumulated time at each junction.
# If the accumulated time is over the alert interval, add a directions point with an alert message.
i = 1
for junction in directions_query.junctions:
elapsed_time = junction.accumulatedTime
if elapsed_time > alert_interval * i:
# Create a new directions point at the junction.
point = arcpy.nax.DirectionPoint(junction)
point.displayText = f"You have driven for over 2 hours. Consider taking a break."
point.directionPointType = arcpy.nax.DirectionPointType.Event
# Update the junction direction points to add the new break reminder.
junction.directionPoints.append(point)
i += 1
else:
for point in junction.directionPoints:
# For existing directions, report the elapsed time at each direction point.
point.displayText = f"{point.displayText} (Time elapsed: {elapsed_time:.2f} minutes)"
Пример 4: В приведенном ниже коде показан класс пользовательских путевых листов, который проверяет тип точки маршрута для определения поворотов налево и добавляет дополнительный текст предупреждения к инструкциям путевого листа.
import arcpy
class LeftTurnsHighlighter(arcpy.nax.DirectionsCustomizer):
"""Add warning text for left turn maneuvers."""
def __init__(self) -> None:
"""Initialize customizer.
Set left_turn_maneuver_types in initialization so it is set only once
when the network dataset object is constructed and when the
customizer instance is initialized.
"""
super().__init__()
self.left_turn_manuever_types = [
arcpy.nax.DirectionPointType.ManeuverForkLeft,
arcpy.nax.DirectionPointType.ManeuverRampLeft,
arcpy.nax.DirectionPointType.ManeuverUTurnLeft,
arcpy.nax.DirectionPointType.ManeuverBearLeft,
arcpy.nax.DirectionPointType.ManeuverTurnLeft,
arcpy.nax.DirectionPointType.ManeuverSharpLeft,
arcpy.nax.DirectionPointType.ManeuverTurnLeftLeft,
arcpy.nax.DirectionPointType.ManeuverTurnLeftRight,
arcpy.nax.DirectionPointType.ManeuverTurnRightLeft
]
def customize(self, directions_query: arcpy.nax.DirectionsQuery) -> None:
"""Alter directions text to highlight left turns with warning text."""
for junction in directions_query.junctions:
for point in junction.directionPoints:
if point.directionPointType in self.left_turn_manuever_types:
point.displayText = f"{point.displayText} (LEFT TURN WARNING!)"
Связывание настройщика путевых листов с набором сетевых данных
Существует два способа развернуть настройщик путевых листов, чтобы он был связан с набором сетевых данных и чтобы логика настройки вызывалась во время операции расчета: временный и постоянный.
Подсказка:
Создайте пользовательский класс пользовательских путевых листов и протестируйте его в качестве временного настройщика путевых листов. Затем запустите скрипт в режиме отладки в редакторе, например, Visual Studio Code. Как только скрипт заработает должным образом, при необходимости вы можете сделать его настройщиком постоянных путевых листов. Проверьте настройщик сохраненных путевых листов, чтобы убедиться, что все работает правильно.
Временный настройщик путевых листов
Временные настройщики путевых листов связаны только с объектом набора сетевых данных, созданным в скрипте; они не сохраняются постоянно в наборе сетевых данных. Временные настройщики путевых листов конфигурируются с помощью свойства directionsCustomizer объекта набора сетевых данных в сценарии, выполняющем операцию расчета.
Временный настройщик путевых листов можно использовать для приложений, в которых настройщик путевых листов должен вызываться из скрипта Python, например, из автономного скрипта Python, инструмента-скрипта Python, пользовательского сервиса геообработки или веб-инструмента. Они также могут быть полезны для разработки и отладки настройщиков постоянных путевых листов.
Конфигурация временного настройщика путевых листов
Чтобы отладить временный настройщик путевых листов, создайте объект настройщика путевых листов и примените свойство directionsCustomizer объекта набора сетевых данных, чтобы связать с ним объект настройщика путевых листов.
В приведенном ниже примере показано, как создать экземпляр объекта настраиваемых путевых листов и связать его с объектом набора сетевых данных. Чтобы вызвать пользовательские путевые листы во время расчета, создайте экземпляр объекта расчета маршрута, используя объект набора сетевых данных.
# Instantiate a directions customizer object that adds an index number
# to each directions maneuver's display text
add_numbers_customizer = DirectionsIndexer()
# Create a network dataset object
network_dataset = arcpy.nax.NetworkDataset(
r"C:\Data\Tutorial\SanFrancisco.gdb\Transportation\Streets_ND")
# Attach the custom directions object to the network dataset
network_dataset.directionsCustomizer = add_numbers_customizer
# Instantiate a route analysis
route = arcpy.nax.Route(network_dataset)
Постоянный настройщик путевых листов
Постоянные настройщики путевых листов хранят ссылку на класс настройщика путевых листов как часть схемы набора сетевых данных, которая хранится в базе геоданных. Эти настройщики путевых листов будут вызываться всякий раз, когда выполняется операция расчета с использованием этого набора сетевых данных. Такой вариант называется постоянным, поскольку ссылка является частью набора сетевых данных. Они настраиваются с использованием метода updateNetworkDatasetSchema объекта набора сетевых данных.
При открытии сети с сохраненным настройщиком путевых листов класс настройщика путевых листов загружается и кэшируется. Этот кэш сохраняется в течение всего срока работы приложения. Это означает, что любые изменения, внесенные в сохраняемый класс, не будут прочитаны до тех пор, пока приложение, открывшее набор сетевых данных, не будет закрыто и перезапущено. Это относится как к ArcGIS Pro, так и к ArcGIS Server.
Важно отметить, что для постоянных настройщиков путевых листов схема набора сетевых данных содержит только ссылку на настройщик путевых листов, а не код класса. Эта ссылка позволяет набору сетевых данных при доступе к нему неявно найти и загрузить соответствующий настройщик путевых листов. Модуль Python, содержащий код класса, должен находиться в папке site-packages активной среды ArcGIS Pro Python, чтобы набор сетевых данных мог его найти.
Более подробно о средах Python
Примечание:
Если скрипт настройки должен использовать сторонние пакеты Python, которые не включены в среду ArcGIS Pro Python по умолчанию, рекомендуется клонировать среду Python по умолчанию перед установкой дополнительных пакетов. Следуйте инструкциям в разделе Менеджер пакетов, чтобы создать клон среды ArcGIS Pro Python по умолчанию, добавить пакеты и активировать среду. Файл Python пользовательской оценки должен храниться в каталоге site-packages активной среды Python, в данном случае — клона среды ArcGIS Pro Python по умолчанию.
Это также относится к ArcGIS Server. Если вам необходимо развернуть сохраненную настройку на сайте ArcGIS Server и использовать дополнительные сторонние пакеты, которые не включены в среду ArcGIS Server Python по умолчанию, следуйте инструкциям в разделе Развертывание пользовательских пакетов Python для ArcGIS Server, чтобы клонировать среду Python по умолчанию и добавить пакеты, а затем активируйте клонированную среду. При развертывании сохраненной настройки в ArcGIS Server ее необходимо скопировать в каталог site-packages активной среды Python на ArcGIS Server.
Используйте постоянный настройщик путевых листов, когда вам нужно вызвать настройщик путевых листов при выполнении операции расчета вне скрипта Python, например, в ArcGIS Pro или ArcGIS Server. Например, чтобы создать слой сетевого анализа в ArcGIS Pro, выполните расчет для слоя и сгенерируйте путевые листы с помощью настройки. Другим примером является использование постоянного настройщика путевых листов, когда вы хотите использовать стандартные сервисы маршрутизации, опубликованные на основе набора сетевых данных, но хотите еще настроить вывод путевых листов.
Если уровень сетевого анализа, использующий набор сетевых данных с постоянным настройщиком путевых листов, публикуется как сервис, то пакет настраиваемых путевых листов необходимо вручную скопировать в каталог пакетов сайта среды ArcGIS Server Python. Кроме того, когда в сервисе используется настройщик путевых листов, любой внешний ресурс, который он использует (например, файлы), должен быть доступен пользователю ArcGIS Server, поскольку это зависит от того, как настроен сервер.
Конфигурация постоянного настройщика путевых листов
Используйте метод updateNetworkDatasetSchema для объекта набора сетевых данных, чтобы постоянно обновлять схему набора сетевых данных, передавая словарь, определяющий путь к классу настройщика путевых листов. Этот путь использует точечную нотацию для определения имени папки (в каталоге site-packages), имени файла, в котором находится класс, и имени класса.
В приведенном ниже примере показано, как обновить набор сетевых данных с помощью сохраненного класса пользовательских путевых листов. Класс в этом примере называется DirectionsIndexer, а его код находится в модуле Python с именем direction_customization.py в папке с именем na_customizers, которая находится в папке site-packages для ArcGIS Pro активной среды Python.
import arcpy
# Create a network dataset object
network_dataset = arcpy.nax.NetworkDataset(
r"C:\Data\Tutorial\SanFrancisco_Persisted.gdb\Transportation\Streets_ND")
# Create a dictionary referencing the custom directions class to use
my_custom_directions = {"class": "na_customizers.direction_customization.DirectionsIndexer"}
# Update the network dataset to use the custom directions class
network_dataset.updateNetworkDatasetSchema(
custom_directions=my_custom_directions
)
Когда этот набор сетевых данных используется в сетевом анализе, будет создан объект класса настройщика путевых листов, и набор сетевых данных вызовет объект настройщика путевых листов после создания начальных путевых листов при их настройке. При создании объекта настройщика путевых листов сеть найдет и загрузит указанный класс внутри пакета и модуль из папки пакетов сайта активной среды ArcGIS Pro. Если пакет, модуль или класс не будет найден, настройщик путевых листов не будет использоваться. Расчет и создание путевого листа завершится появлением предупреждающего сообщения о том, что возникла проблема с использованием настройщика путевых листов.
Если набор сетевых данных содержит постоянный настройщик путевых листов, он будет указан в разделе Итоговая информация панели Общие и на странице Путевые листы диалогового окна Свойства набора сетевых данных. Если при загрузке указанного класса возникла проблема, появится сообщение об ошибке или предупреждение.
Жизненный цикл объекта
Когда набор сетевых данных изначально создается и имеет постоянный настройщик путевых листов, он создает экземпляр объекта настройщика путевых листов, на который ссылаются на протяжении всего его существования. Срок службы может варьироваться в зависимости от используемой платформы (например, ArcGIS Pro, ArcGIS Server или Python).
Поскольку конкретный экземпляр объекта настройщика путевых листов может использоваться для нескольких операций расчета, важно управлять состоянием этого объекта, в частности, сбрасывать переменные в начале метода Customize перед повторением текущих путевых листов по мере необходимости. Например, если настройщик путевых листов содержит переменную экземпляра, которая обновляется при переборе путевых листов, сбросьте ее в начале метода Customize; в противном случае он может начаться со значения из предыдущей операции решения.
В контексте ArcGIS Server каждый процесс SOC (во время запуска и во время перезапуска) создаст новый объект набора сетевых данных, а также создаст новый экземпляр объекта настройщика путевых листов. Этот экземпляр объекта настройщика путевых листов будет использоваться на протяжении всего жизненного цикла процесса SOC, только метод Customize будет запускаться для каждого запроса.
Ограничения
Следующие ограничения применяются к пользовательским путевым листам:
Пользовательские инструкции доступны только в ArcGIS Pro и ArcGIS Server.
Пользовательские путевые листы могут быть вызваны только для файловой или корпоративной базы геоданных.
Из соображений производительности настройщики путевых листов не поддерживают использование ключевых слов в качестве аргументов.
Создание и использование временного настройщика путевых листов
Ниже приведены разделы, посвященные созданию и использованию временного настройщика путевых листов. Каждый пример кода иллюстрирует определенный компонент полного рабочего процесса. Есть следующие компоненты рабочего процесса:
Последний пример кода показывает, как соединить все компоненты вместе.
Следующие примеры кода созданы на основе руководства по сетевому анализу, которое можно загрузить со страницы загрузки данных.
Расчет анализа маршрутов
В приведенном ниже примере кода показан рабочий процесс для расчета анализа маршрута с использованием объекта механизма расчета arcpy.nax и печати пошаговых путевых листов.
Примечание:
Путь к базе геоданных в приведенном ниже коде необходимо обновить, чтобы отразить расположение данных в вашей системе.
import arcpy
# Create a network dataset object
network_dataset = arcpy.nax.NetworkDataset(
r"C:\Data\Tutorial\SanFrancisco.gdb\Transportation\Streets_ND")
# Instantiate a route analysis
route = arcpy.nax.Route(network_dataset)
route.returnDirections = True
# Insert stops for the route
with route.insertCursor(
arcpy.nax.RouteInputDataType.Stops,
["NAME", "SHAPE@XY"]
) as cursor:
cursor.insertRow(["Stop1", (-122.501, 37.757)])
cursor.insertRow(["Stop2", (-122.445, 37.767)])
# Solve the route
result = route.solve()
# Print the directions
if result.solveSucceeded:
for row in result.searchCursor(
arcpy.nax.RouteOutputDataType.DirectionPoints, ["DisplayText"]
):
print(row[0])
Определение класса настройщика путевых листов
В приведенном ниже примере кода показано определение класса настройщика путевых листов. В этом примере добавляется число в начале каждого маневра в путевом листе. Например, без настройки первым шагом будет Start at Stop1, с настройкой первым шагом будет 1 -> Start at Stop1.
import arcpy
class DirectionsIndexer(arcpy.nax.DirectionsCustomizer):
"""Defines a directions customizer that adds an index number to directions."""
def customize(self, directions_query: arcpy.nax.DirectionsQuery):
"""Add an index number to each directions maneuver."""
index = 1
for junction in directions_query.junctions:
for point in junction.directionPoints:
point.displayText = f"{index} -> {point.displayText}"
index += 1
Связывание настройщика путевых листов с набором сетевых данных
В приведенном ниже примере кода показано создание экземпляра класса настройщика путевых листов и его связывание с объектом набора сетевых данных. Выполните этот рабочий процесс до вызова расчета маршрута (route.solve()).
# Instantiate a directions customizer object that adds an index number
# to each directions maneuver's display text
add_numbers_customizer = DirectionsIndexer()
# Attach the custom directions object to the network dataset
network_dataset.directionsCustomizer = add_numbers_customizer
Сборка всех компонентов
В приведенном ниже примере кода показано, как объединить все компоненты в полный рабочий процесс, который определяет и использует временный настройщик путевых листов для рабочего процесса анализа маршрута.
import arcpy
class DirectionsIndexer(arcpy.nax.DirectionsCustomizer):
"""Defines a directions customizer that adds an index number to directions."""
def customize(self, directions_query: arcpy.nax.DirectionsQuery):
"""Add an index number to each directions maneuver."""
index = 1
for junction in directions_query.junctions:
for point in junction.directionPoints:
point.displayText = f"{index} -> {point.displayText}"
index += 1
# Create a network dataset object
network_dataset = arcpy.nax.NetworkDataset(
r"C:\Data\Tutorial\SanFrancisco.gdb\Transportation\Streets_ND")
# Instantiate a directions customizer object that adds an index number
# to each directions maneuver's display text
add_numbers_customizer = DirectionsIndexer()
# Attach the custom directions object to the network dataset
network_dataset.directionsCustomizer = add_numbers_customizer
# Instantiate a route analysis
route = arcpy.nax.Route(network_dataset)
route.returnDirections = True
# Insert stops for the route
with route.insertCursor(
arcpy.nax.RouteInputDataType.Stops,
["NAME", "SHAPE@XY"]
) as cursor:
cursor.insertRow(["Stop1", (-122.501, 37.757)])
cursor.insertRow(["Stop2", (-122.445, 37.767)])
# Solve the route
result = route.solve()
# Print the directions
if result.solveSucceeded:
for row in result.searchCursor(
arcpy.nax.RouteOutputDataType.DirectionPoints, ["DisplayText"]
):
print(row[0])
Создание и использование постоянного настройщика путевых листов
Ниже приведены разделы, посвященные созданию и использованию постоянного настройщика путевых листов. Рабочий процесс создает модуль Python, содержащий класс настройщика путевых листов, сохраняет модуль Python в каталоге site-packages активной среды Python, обновляет набор сетевых данных для использования настройщика путевых листов и тестирует его, выполнив анализ маршрута. Есть следующие компоненты рабочего процесса:
Следующие примеры кода созданы на основе руководства по сетевому анализу, которое можно загрузить со страницы загрузки данных.
Клонирование среды Python по умолчанию (дополнительно)
Этот шаг не является обязательным. Клонировать среду Python по умолчанию необходимо только в том случае, если скрипт настройки должен использовать сторонние библиотекиPython , которые не включены в среду ArcGIS Pro Python по умолчанию.
Более подробно о клонировании среды
Определение класса настройщика путевых листов
В приведенном ниже примере кода показано определение класса настройщика путевых листов. В этом примере добавляется число в начале каждого маневра в путевом листе.
import arcpy
class DirectionsIndexer(arcpy.nax.DirectionsCustomizer):
"""Defines a directions customizer that adds an index number to directions."""
def customize(self, directions_query: arcpy.nax.DirectionsQuery):
"""Add an index number to each directions maneuver."""
index = 1
for junction in directions_query.junctions:
for point in junction.directionPoints:
point.displayText = f"{index} -> {point.displayText}"
index += 1
В активной среде ArcGIS Pro Python найдите папку site-packages. В ней создайте папку с именем na_customizers. Сохраните приведенный выше код, задающий класс настройщика путевых листов, в папку na_customizers как direction_customization.py.
Обновление схемы набора сетевых данных
Копирование Network Analyst\Tutorial\SanFrancisco.gdb из данных для обучения в SanFrancisco_Persisted.gdb.
Используйте приведенный ниже код в автономном сценарии, чтобы навсегда обновить набор сетевых данных в SanFrancisco_Persisted.gdb с помощью сохраненного класса пользовательских путевых листов.
import arcpy
# Check out the ArcGIS Network Analyst extension
arcpy.CheckOutExtension("network")
# Create a network dataset object
network_dataset = arcpy.nax.NetworkDataset(
r"C:\Data\Tutorial\SanFrancisco_Persisted.gdb\Transportation\Streets_ND")
# Create a dictionary referencing the custom directions class to use
my_custom_directions = {"class": "na_customizers.direction_customization.DirectionsIndexer"}
# Update the network dataset to use the custom directions class
network_dataset.updateNetworkDatasetSchema(
custom_directions=my_custom_directions
)
Расчет маршрута
В ArcGIS Pro используйте набор сетевых данных из SanFrancisco_Persisted.gdb для расчета маршрута. Рассчитайте второй маршрут, используя SanFrancisco.gdb и те же остановки, и сравните путевые листы выходного маршрута. Путевые листы в маршруте SanFrancisco_Persisted.gdb должны иметь номер перед каждым из путевых листов из-за настройщика путевых листов. Например, при использовании SanFrancisco.gdb первым шагом будет Start at Stop1, а при использовании SanFrancisco_Persisted.gdb первым шагом будет 1 -> Start at Stop1.
Подробнее о расчетах в анализе путевых листов в ArcGIS Pro
Развертывание пользовательских путевых листов для их использования в сервисах маршрутизации, размещенных на сайте ArcGIS GIS Server
Вы можете опубликовать два типа сервисов маршрутизации: стандартные сервисы маршрутизации и пользовательские сервисы маршрутизации.
Стандартные сервисы маршрутизации — это картографические сервисы и сервисы геообработки, которые предоставляют готовые возможности, доступные в дополнительном модуле ArcGIS Network Analyst. Вы можете опубликовать стандартные сервисы маршрутизации на сайте ArcGIS GIS Server, используя набор сетевых данных, и получите набор точек доступа сервиса маршрутизации с предзаданными параметрами и схемой для входных данных. Эти сервисы маршрутизации обеспечивают полную функциональность и интеграцию с приложениями Esri, такими как ArcGIS Pro и Map Viewer.
Подробные сведения о публикации стандартных сервисов маршрутизации
Пользовательские сервисы маршрутизации — это сервисы геообработки с настраиваемыми возможностями. Пользовательские сервисы маршрутизации позволяют вам выполнять рабочий процесс, который может содержать несколько механизмов расчета сетевого анализа или других инструментов геообработки. Он также позволяет задать пользовательские параметры и входную схему в соответствии с потребностями приложения.
Подробнее о публикации пользовательских сервисов маршрутизации
Примечание:
Как стандартные, так и пользовательские сервисы маршрутизации могут вызывать пользовательские путевые листы. Эта возможность была представлена в ArcGIS GIS Server 11.2
Вызов пользовательских путевых листов со стандартными сервисами маршрутизации
Для вызова пользовательских путевых листов со стандартными сервисами маршрутизации выполните следующие действия:
Создайте постоянный настройщик путевых листов и свяжите его с набором сетевых данных.
Протестируйте настройщик путевых листов в ArcGIS Pro, чтобы убедиться, что он вызывается при расчете маршрута.
Скопируйте набор сетевых данных в один и тот же каталог на всех компьютерах, участвующих в сайте ArcGIS Server, который будет использоваться для размещения сервисов маршрутизации.
Скопируйте папку и файл настройки на все компьютеры, участвующие в сайте ArcGIS Server. Поместите папку и файл в папку site-packages активной среды ArcGIS Server Python. Путь на компьютере сервера по умолчанию:
<install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\envs\arcgispro-py3\Lib\site-packages. При копировании из папки site-packages среды ArcGIS Pro Python в ArcGIS Server сохраняйте ту же структуру папок для кода настройки. Например, если код настройки находится в файлеdirection_customization.pyв папкеna_customizers, скопируйте папкуna_customizersв директорию site-packages ArcGIS Server.Опубликуйте стандартные сервисы маршрутизации.
При использовании сервисов маршрутизации применяются настройки.
Вызов пользовательских путевых листов с пользовательскими сервисами маршрутизации
Для вызова пользовательских путевых листов с пользовательскими сервисами маршрутизации выполните следующие действия:
Создайте инструмент-скрипт, выполнив действия из раздела Публикация пользовательских сервисов маршрутизации.
Свяжите временный настройщик с набором сетевых данных в инструменте-скрипте.
Опубликуйте сервис, выполнив действия из раздела Публикация пользовательских сервисов маршрутизации.
При использовании сервисов маршрутизации применяются настройки.