Skip to main content

applyTravelMode

Краткая информация

Предоставляет доступ к свойствам слоя сетевого анализа матрицы "стоимости" достижения цели (OD). Функция GetSolverProperties используется для получения объекта ODCostMatrixSolverProperties из слоя сетевого анализа матрицы стоимости.

Обсуждение

Объект ODCostMatrixSolverProperties предоставляет доступ для чтения и записи ко всем свойствам слоя сетевого анализа матрицы стоимости. Этот объект можно использовать для изменения нужных свойств анализа слоя матрицы "стоимости" достижения цели, а соответствующий слой можно повторно рассчитать для получения необходимых результатов. Новый слой матрицы стоимости можно создать с помощью инструмента геообработки Создать слой анализа матрицы Источник-Назначение. Получение объекта ODCostMatrixSolverProperties из нового слоя матрицы стоимости OD позволяет повторно использовать существующий слой для последующего анализа, а не создавать слой для каждого анализа, что может замедлять работу.

После изменения свойств объекта ODCostMatrixSolverProperties соответствующий слой можно немедленно использовать с другими функциями и инструментами геообработки. Обновлять слой для внесения изменения не требуется.

Синтаксис

applyTravelMode()

Свойства

Имя Объяснение Тип данных

accumulators

(Чтение / Запись)

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

String

attributeParameters

(Чтение / Запись)

Дает возможность получать или задавать параметризированные атрибуты для использования их в анализе. Это свойство возвращает словарь Python. Ключом в словаре является кортеж двух значений – имени атрибута и имени параметра. Значение каждого элемента в словаре является значением параметра.

Параметризованные сетевые атрибуты используются для моделирования некоторого динамического аспекта значения атрибута. Например, туннель с ограничением высоты 12 футов может быть смоделирован с использованием параметра. В этом случае высоту транспорта в футах нужно указать как значение параметра. Если транспортное средство выше 12 футов (3,7 м), то это ограничение будет оценено как True, ограничивающее, таким образом, проезд по туннелю. Подобным образом у моста может быть параметр, указывающий ограничение по весу.

Попытка изменить непосредственно свойство attributeParameters не приведет к обновлению значений. Вместо этого следует всегда использовать для установки значений этого свойства новый объект словаря. Различие между этими подходами проиллюстрировано следующими двумя блоками кода.

Не стоит изменять свойство attributeParameters на месте; этот метод кодировки не будет работать.

solverProps.attributeParameters[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"

Измените свойство attributeParameters, используя новый объект словаря.

params = solverProps.attributeParameters
params[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"
solverProps.attributeParameters = params

Если слой сетевого анализа не имеет параметризованных атрибутов, это свойство вернет значение None.

Dictionary

defaultCutoff

(Чтение / Запись)

Дает возможность получать или задавать значение импеданса по умолчанию, при котором следует прекратить поиск пунктов назначения для данного исходного пункта. Значение None указывает, что не следует применять никакого предельного значения.

Double

defaultTargetDestinationCount

(Чтение / Запись)

Дает возможность получать или задавать количество пунктов назначения, которые следует искать для каждого исходного пункта. Значение None указывает, что следует вести поиск всех пунктов назначения.

Integer

ignoreInvalidLocations

(Чтение / Запись)

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

  • SKIP—Недопустимые входные местоположения будут проигнорированы, поэтому анализ будет успешным с использованием только действительных местоположений. Это значение также можно указать с помощью логического значения True.

  • HALT—Недействительные местоположения не будут проигнорированы и приведут к сбою анализа. Это значение также можно указать с помощью логического значения False.

String

impedance

(Чтение / Запись)

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

String

outputPathShape

(Чтение / Запись)

Указывает необходимость построения прямой линии между каждой парой пунктов в выходной матрице Источник-Назначение. Список возможных значений следующий:

  • NO_LINES—Между парой пунктов источник-назначение не создается никаких геометрических форм. Это удобно при большом количестве исходных и конечных пунктов, когда необходимо получить только табличные данные (без линий маршрутов).

  • STRAIGHT_LINES—Между каждой парой пунктов источник-назначение создается одна прямая линия.

String

restrictions

(Чтение / Запись)

Дает возможность получать или задавать список атрибутов ограничения, применяемых в ходе данного анализа. Пустой список, [], означает, что в ходе анализа не применяются никакие атрибуты ограничения.

String

solverName

(Только для чтения)

Возвращает имя механизма расчета, на который ссылается слой сетевого анализа, использованный для получения данного объекта свойств механизма расчета. Это свойство всегда возвращает строковое значение OD Cost Matrix Solver (Механизм расчета матрицы Источник-Назначение), если доступ к нему осуществляется из объекта ODCostMatrixSolverProperties.

String

timeOfDay

(Чтение / Запись)

Дает возможность получать или задавать время и дату отправления из исходного пункта. Значение None (Нет) указывает на то, что дата и время не применяются.

Вместо конкретной даты может быть задан день недели, при помощи следующих условных дат:

  • Today—12/30/1899

  • Sunday—12/31/1899

  • Monday—1/1/1900

  • Tuesday—1/2/1900

  • Wednesday—1/3/1900

  • Thursday—1/4/1900

  • Friday—1/5/1900

  • Saturday—1/6/1900

К примеру, если маршрут из каждого исходного пункта должен начинаться в 8:00 утра в среду, следует указать значение datetime.datetime(1900, 1, 3, 8,0,0).

Параметр timeZoneUsage определяет, соответствует ли время и дата зоне UTC или часовому поясу, в котором находятся заказы.

DateTime

timeZoneUsage

(Чтение / Запись)

Указывает часовой пояс параметра timeOfDay.

  • GEO_LOCAL—Значение параметра timeOfDay относится к часовому поясу, в котором находятся начальные точки.

  • UTC—Значения параметра timeOfDay определяются в формате Всемирного координированного времени (UTC). Используйте эту опцию, если хотите провести анализ для конкретного времени, например текущего, но не знаете, в каком часовом поясе будут находиться начальные точки.

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

String

travelMode

(Только для чтения)

Доступ к режиму движения устанавливается для слоя сетевого анализа как объект arcpy.na.TravelMode.

Object

useHierarchy

(Чтение / Запись)

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

  • USE_HIERARCHY—Для анализа используется атрибут иерархии. Применение иерархии приводит при расчете к предпочтению ребер высшего порядка по сравнению с ребрами низшего порядка. Расчеты с иерархией выполняются быстрее, и они могут использоваться для моделирования предпочтений водителя, который скорее выберет для проезда автостраду, нежели местную дорогу – даже если это приведет к увеличению длины пути. Эта опция применима только в том случае, если в наборе сетевых данных, на который ссылается слой сетевых данных Network Analyst имеется атрибут иерархии. Для выбора этой опции также может использоваться значение True.

  • NO_HIERARCHY—Для анализа атрибут иерархии не используется. Расчет без применения иерархии дает точный маршрут для набора сетевых данных. Для выбора этой опции также может использоваться значение False.

String

uTurns

(Чтение / Запись)

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

  • ALLOW_UTURNS—Развороты разрешены в соединениях с любым количеством смежных ребер.

  • NO_UTURNS—Развороты запрещены во всех соединениях, вне зависимости от их валентности. Обратите внимание, что развороты разрешены в сетевых местоположениях, даже если выбрана эта настройка; однако вы также можете настроить свойство CurbApproach отдельных сетевых местоположений, чтобы запретить развороты и там.

  • ALLOW_DEAD_ENDS_ONLY—Развороты запрещены во всех соединениях, кроме тех, у которых имеется только одно смежное ребро (тупик).

  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY—Развороты запрещены в соединениях с ровно двумя смежными ребрами, но разрешены на перекрестках (в соединениях с тремя смежными ребрами или более) и в тупиках (соединениях с ровно одним смежным ребром). Часто сети имеют избыточные соединения в середине сегмента дороги. Эта опция позволяет запретить развороты транспортных средств в таких местах.

String

Методы

applyTravelMode(travel_mode)

Обновляет свойства анализа слоя network analyst на основе объекта режима передвижения. После этого обновленный слой network analyst может быть рассчитан для завершения анализа.

Имя Объяснение Тип данных

travel_mode

Переменная, ссылающаяся на объект режима передвижения, который был получен на основе слоя сетевых данных. Список объектов режима передвижения можно получить, вызвав функцию arcpy.na.GetTravelModes.

Object

Пример кода

ODCostMatrixSolverProperties, пример 1 (автономный скрипт)

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

# Name: ODSolverProperties_Workflow.py
# Description: Finds the full matrix of distribution centers and stores and then
#              a second solve that only finds the closest distribution center
# Requirements: Network Analyst extension

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

try:
    # Set environment settings
    output_dir = r"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 local variables
    input_gdb = "C:/Data/SanFrancisco.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    layer_name = "StoresToDCs"
    travel_mode = "Driving Time"
    in_origins = os.path.join(input_gdb, "Analysis/Stores")
    in_destinations = os.path.join(input_gdb, "Analysis/CentralDepots")
    full_matrix = os.path.join(output_dir, "Output.gdb", "full_matrix")
    closest_DC = os.path.join(output_dir, "Output.gdb", "closest_DC")

    # Create a new Origin Destination layer.
    result_object = arcpy.na.MakeODCostMatrixAnalysisLayer(network,
                                        layer_name, travel_mode)

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

    # Get the names of all the sublayers within the Origin Destination layer.
    sub_layer_names = arcpy.na.GetNAClassNames(layer_object)
    # Store the layer names that we will use later
    origins_layer_name = sub_layer_names["Origins"]
    destination_layer_name = sub_layer_names["Destinations"]
    lines_layer_name = sub_layer_names["ODLines"]

    # Load the stores locations as origins.
    arcpy.na.AddLocations(layer_object, origins_layer_name, in_origins,
                          "", "")

    # Load the distribution center location as destinations
    arcpy.na.AddLocations(layer_object, destination_layer_name, in_destinations,
                          "", "")

    # Solve the origin destination layer
    arcpy.na.Solve(layer_object)

    # Save the resulting line sublayer
    arcpy.management.CopyFeatures(lines_layer_name, full_matrix)

    # Get the solver properties object from the origin destination layer
    solverProps = arcpy.na.GetSolverProperties(layer_object)

    # Update the destination count to 1
    solverProps.defaultTargetDestinationCount = 1

    # Solve the origin destination layer
    arcpy.na.Solve(layer_object)

    # Save the resulting line sublayer
    arcpy.management.CopyFeatures(lines_layer_name, closest_DC)

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback
    import sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))
ApplyTravelMode, пример 2 (окно Python)

В этом скрипте показано, как использовать режим передвижения TruckingTime для существующего слоя.

#Get the OD cost matrix layer object from a layer named "OD Matrix" in
#the map
doc = arcpy.mp.ArcGISProject('current')
map_obj = doc.listMaps()[0]
od_layer = map_obj.listLayers('OD Matrix')[0]

#Get the Trucking Time travel mode from the network dataset
desc = arcpy.Describe(od_layer)
travel_modes = arcpy.na.GetTravelModes(desc.network.catalogPath)
trucking_mode = travel_modes["Trucking Time"]

#Apply the travel mode to the analysis layer
solver_properties = arcpy.na.GetSolverProperties(od_layer)
solver_properties.applyTravelMode(trucking_mode)