Путевой лист (Network Analyst)

Сводка

Создает пошаговый путевой лист на основе слоя сетевого анализа с маршрутами. Путевой лист можно записать в файл в виде текста, а также в формате XML и HTML. Если указать соответствующий стиль, путевой лист можно записать в другом формате.

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

  • Этот инструмент рассчитывает слой сетевого анализа, если у того еще нет корректного результата, поэтому ему не нужно рассчитывать слой сетевого анализа до создания путевого листа.

Синтаксис

arcpy.na.Directions(in_network_analysis_layer, file_type, out_directions_file, report_units, {report_time}, {time_attribute}, {language}, {style_name}, {stylesheet})
ParameterОбъяснениеТип данных
in_network_analysis_layer

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

Network Analyst Layer
file_type

Формат выходного файла путевого листа. Этот параметр игнорируется, если параметр stylesheet содержит значение.

  • XMLВ качестве выходных данных создается HTML-файл. Кроме строк направлений и сведений о расстоянии и времени для маршрутов, файл содержит данные о типах маневров и углах поворота для каждого направления.
  • TEXTВыходной путевой лист создается в формате простого текстового файла, в который будут записаны строки путевого листа и, может быть, данные о времени в пути на маршруте.
  • HTMLВыходной файл направлений создается как простой HTML-файл, содержащий строки направлений, а также данные о расстоянии и, возможно, времени для маршрутов.
String
out_directions_file

Если вы определите таблицу стилей для параметра stylesheet, убедитесь, что суффикс файла для out_directions_file соответствует типу файла, создаваемого заданным стилем.

File
report_units

Задает линейные единицы измерения, в которых выражаются данные о расстояниях в файле путевого листа. Например, даже если импеданс задан в метрах, направления можно задавать в милях.

  • FeetФуты
  • YardsЯрды
  • MilesМили
  • MetersМетры
  • KilometersКилометры
  • NauticalMilesМорские мили
String
report_time
(Дополнительный)
  • NO_REPORT_TIMEНе сообщать время в пути в файле путевого листа.
  • REPORT_TIMEСообщать время в пути в файле путевого листа. Используется по умолчанию.
Boolean
time_attribute
(Дополнительный)

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

String
language
(Дополнительный)

Выберите язык для создания путевого листа.

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

String
style_name
(Дополнительный)

Выберите имя стиля форматирования для направлений.

  • NA DesktopПошаговый путевой лист, доступный для печати
  • NA NavigationПошаговый путевой лист, созданный для автомобильного навигационного устройства.
  • NA CampusПошаговый пешеходный путевой лист, созданный для пешеходных маршрутов.
String
stylesheet
(Дополнительный)

Стиль для создания форматированного выходного файла (например, PDF, Word или HTML). Суффикс файла в параметре выходного файла путевого листа должен совпадать с типом файла, создаваемого заданным стилем. Инструмент Путевой лист заменяет параметр типа выходного файла, если этот параметр содержит значение.

Подсказка:

Если вы хотите быстро приступить к созданию собственных текстовых и HTML-стилей, скопируйте и отредактируйте стили, используемые в Network Analyst. Вы можете найти их в следующем каталоге: <ArcGIS installation directory>\ArcGIS\ArcGIS Pro\Resources\NetworkAnalyst\Directions\Styles. Файл таблицы стилей: Dir2PHTML.xsl; файл таблицы стилей для текста: Dir2PlainText.xsl.

File

Производные выходные данные

NameОбъяснениеТип данных
output_layer

Обновленный слой сетевого анализа с маршрутами.

Слой Network Analyst

Пример кода

Directions, пример 1 (окно Python)

Выполнение инструмента Directions со всеми параметрами.

arcpy.na.Directions("Route", "TEXT", "C:/Data/Route_Directions.txt", "Miles",
                    "REPORT_TIME", "Minutes")
Directions, пример 2 (рабочий процесс)

В следующем автономным скрипте Python показано, как с помощью функции Directions можно создавать направления движения в виде HTML-файла для маршрута.

# Name: Directions_Workflow.py
# Description: Generate driving directions in an html file for a route that
#              visits the store locations in the best sequence in order to
#              minimize the total travel time
# Requirements: Network Analyst Extension

#Import system modules
import arcpy
from arcpy import env
import os

try:
    #Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    #Set environment settings
    output_dir = "C:/Data"
    #The NA layer's data will be saved to the workspace specified here
    env.workspace = os.path.join(output_dir, "Output.gdb")
    env.overwriteOutput = True

    #Set inputs and outputs
    input_gdb = "C:/Data/SanFrancisco.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    layer_name = "StoreRoute"
    travel_mode = "Driving Time"
    start_location = os.path.join(input_gdb, "Analysis", "DistributionCenter")
    store_locations = os.path.join(input_gdb, "Analysis", "Stores")
    output_directions = os.path.join(output_dir,
                                                layer_name + "_Directions.html")
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    #Create a new route layer. The route starts at the distribution center and
    #visits the stores in the best order to yield the shortest travel time.
    result_object = arcpy.na.MakeRouteAnalysisLayer(network, layer_name,
                                        travel_mode, "PRESERVE_FIRST",
                                        time_of_day="8:00 AM")

    #Get the layer object from the result object. The route layer can
    #now be referenced using the layer object.
    layer_object = result_object.getOutput(0)

    #Get the names of all the sublayers within the route layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    #Stores the layer names that we will use later
    stops_layer_name = sublayer_names["Stops"]

    #Load the distribution center as the start location using default field
    #mappings and search tolerance
    arcpy.na.AddLocations(layer_object, stops_layer_name, start_location, "",
                                                                            "")

    #Load the store locations as stops. Make sure the store locations are
    #appended to the Stops sublayer so the distribution center you just loaded
    #isn't overwritten. Map the ServiceTime field from the input data to the
    #Attr_[impedance] property in the Stops sublayer so that the time it takes to
    #service each store is included in the total travel time for the route.
    #Figure out what the impedance attrbute is
    solver_props = arcpy.na.GetSolverProperties(layer_object)
    impedance = solver_props.impedance
    #Handle field mappings
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                            stops_layer_name)
    field_mappings["Name"].mappedFieldName = "Name"
    field_mappings["Attr_" + impedance].mappedFieldName = "ServiceTime"
    arcpy.na.AddLocations(layer_object, stops_layer_name, store_locations,
                          field_mappings, "", append="APPEND",
                          exclude_restricted_elements = "EXCLUDE")

    #Generate driving directions in an HTML file
    arcpy.na.Directions(layer_object, "HTML", output_directions, "Miles",
                        "REPORT_TIME", impedance)

    #Save the solved na layer as a layer file on disk
    layer_object.saveACopy(output_layer_file)

    print("Script completed successfully")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))

Информация о лицензиях

  • Basic: Требуется Network Analyst
  • Standard: Требуется Network Analyst
  • Advanced: Требуется Network Analyst

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