Skip to main content

applyTravelMode

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

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

Обсуждение

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

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

Синтаксис

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

defaultBreaks

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

Дает возможность получать или задавать значения импеданса, определяющие экстент области обслуживания для расчета. Для создания концентрических областей можно использовать несколько полигональных границ. Например, чтобы определить области обслуживания для одного пункта обслуживания со временами 2, 3 и 5 минут, следует указать значение [2, 3, 5].

Double

excludeSources

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

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

String

ignoreInvalidLocations

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

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

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

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

String

impedance

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

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

String

includeNetworkSourceFields

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

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

  • LINES_SOURCE_FIELDS—Добавляет к линиям областей обслуживания поля SourceID, SourceOID, FromPosition и ToPosition для хранения сведений об исходных пространственных элементах, используемых в анализе. Это помогает объединять результаты линий области обслуживания с исходными данными. Для выбора этого варианта также служит значение True.

  • NO_LINES_SOURCE_FIELDS—Не добавляет к линиям областей обслуживания поля SourceID, SourceOID, FromPosition и ToPosition. Для выбора этого варианта также служит значение False.

String

lineOverlap

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

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

  • OVERLAP—Включать отдельные линейные объекты для каждого пункта обслуживания, если пункты обслуживания имеют совпадающие области обслуживания. Для выбора этого варианта также служит значение True.

  • NON_OVERLAP—Включать каждую линию области обслуживания один раз и связывать её с ближайшим пунктом обслуживания (имеющим наименьший импеданс). Для выбора этого варианта также служит значение False.

String

lineType

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

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

  • NO_LINES—Не создавать линии.

  • TRUE_LINES—Линии создаются без измерений.

  • TRUE_LINES_WITH_MEASURES—Линии создаются с измерениями. Значения размеров генерируются на основе значений импеданса для каждой границы; при этом промежуточные значения интерполируются. Не используйте этот параметр, если вам необходимо ускорить расчеты.

String

polygonMerge

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

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

  • NO_MERGE—Создает отдельные полигоны для каждого пункта обслуживания. Полигоны могут накладываться друг на друга.

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

  • MERGE—Объединяет полигоны нескольких пунктов обслуживания с общими граничными значениями.

String

polygonNesting

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

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

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

  • DISKS—Создавать сплошные полигоны от пункта до границы. Например, при создании 5- и 10-минутных областей обслуживания 10-минутная область будет включать 5-минутную. Этот параметр можно использовать для определения всей области между пунктом обслуживания и граничным значением. Для выбора этого варианта также служит значение False.

String

polygonType

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

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

  • SIMPLE_POLYS—Создание генерализированных полигонов, которые генерируются быстрее и достаточно точны, если не учитывать особые требования.

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

  • NO_POLYS—Выключает создание полигонов в случаях, когда желательно использовать линейное отображение областей обслуживания.

String

restrictions

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

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

String

solverName

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

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

String

splitLinesAtBreaks

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

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

  • SPLIT—Делить каждую линию между двумя границами на две линии – по одной для каждой области. Это удобно, если вы хотите разграничить линии разных полигонов; иначе, для повышения быстродействия, используйте опцию NO_SPLIT.

  • NO_SPLIT—Линии не делятся на границах областей обслуживания.

String

timeOfDay

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

Дает возможность получать или задавать время отправления или прибытия в пункты обслуживания. Интерпретация этого значения зависит от того, какое направление движения задано – от пункта обслуживания или к нему. Оно представляет собой время отправления, когда свойство travelDirection имеет значение TRAVEL_FROM, и время прибытия, когда свойство travelDirection имеет значение TRAVEL_TO. Значение 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, 5, 8,0,0).

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

DateTime

timeZoneUsage

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

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

  • GEO_LOCAL—Значение параметра timeOfDay относится к часовому поясу или поясам, в которых находятся пункты обслуживания. Поэтому времена начала и окончания областей обслуживания разнесены по часовым поясам.Установите timeOfDay на 9:00 и выберите GEO_LOCAL, тогда вычисление вызывает создание зон обслуживания для 9:00 утра по восточному времени для любых объектов в восточном часовом поясе, 9:00 утра по центральному времени для объектов в центральном часовом поясе, 9:00:00 по горному времени для объектов в горном часовом поясе и так далее для объектов в разных часовых поясах. Во всех случаях временем будет девять часов утра местного времени, но реальное время будет разным.Если магазины в торговой сети, охватывающей всю территорию США, открываются в 9:00 a.m. местного времени, это значение параметра можно использовать, чтобы найти торговые территории в час открытия сразу для всех магазинов. Сначала открываются магазины в часовом поясе Восточное время, и для них строится полигон, час спустя открываются магазины в часовом поясе Центральное время и т.д.

  • UTC—Значения параметра timeOfDay определяются в формате Всемирного координированного времени (UTC). Поэтому время отправления или прибытия для всех пунктов обслуживания одинаково, независимо от часового пояса или поясов, в которых они находятся.Установите timeOfDay на 14:00 утра и выберите UTC и вычисление приведет к созданию зон обслуживания на 9:00 утра по восточному времени для любых объектов в восточном часовом поясе, на 8:00 утра по центральному времени для объектов в центральном часовом поясе, на 7:00 утра по горному времени для объектов в горном часовом поясе и т.д. для объектов в разных часовых поясах.

    Примечание:

    Вышеописанный сценарий предполагает стандартное время. В период действия летнего времени Восточное, Центральное и Горное время увеличится на час (до 10:00, 9:00 и 8:00 a.m., соответственно). Одним из примеров, когда предпочтительно использовать опцию UTC, является визуализация охвата службой спасения территории, находящейся в двух часовых поясах. В качестве пунктов обслуживания загружаются автомобили службы спасения. timeOfDay установлен на текущее время в UTC. (Вам необходимо определить текущее время и дату в формате UTC, чтобы правильно использовать эту опцию.) Устанавливаются другие свойства и решается анализ. Несмотря на то, что автомобили разделены границей часовых поясов, решение показывает области обслуживания с учетом текущих условий дорожного движения. Этот же процесс можно использовать для любого другого момента времени, а не только для текущего.

Вне зависимости от значения настройки timeZoneUsage все пункты обслуживания должны быть в одном часовом поясе, когда параметр timeOfDay имеет ненулевое значение, и параметру polygonMerge задано создание объединенных или неперекрывающихся полигонов.

String

travelDirection

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

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

  • TRAVEL_FROM—Область обслуживания создается в направлении от пункта обслуживания.

  • TRAVEL_TO—Область обслуживания создается в направлении к пункту обслуживания.

String

travelMode

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

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

Object

trimDistance

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

Дает возможность получать или задавать расстояние, в пределах которого происходит сокращение полигонов областей обслуживания. Значение свойства включает числовое значение и единицы измерения расстояния, разделенные пробелом; например, чтобы указать расстояние сокращения в 100 метров, введите "100 Meters".

String

trimPolygons

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

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

  • TRIM_POLYS—Обрезка полигонов до области в пределах заданного расстояния от границ. Это может быть необходимо для предотвращения охвата областей, не содержащих пространственных объектов. Для выбора этого варианта также служит значение True.

  • NO_TRIM_POLYS—Не обрезать полигоны. Для выбора этого варианта также служит значение False.

String

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

Пример кода

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

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

# Name: ServiceAreaSolverProperties_Workflow.py
# Description: Finds the regions fire stations can reach within four minutes
#              as the initial assessment of the coverage of the region. We will
#              then change the break values to 1, 4, and 10 minutes to see a
#              better picture of coverage
# 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 = "FireHouseRegions"
    travel_mode = "Driving Time"
    direction = "FROM_FACILITIES"
    cutoffs = 4
    in_facilities = os.path.join(input_gdb, "Analysis/FireStations")
    four_minute_polygons = os.path.join(output_dir, "Output.gdb", "four_minute_polygons")
    ten_minute_polygons = os.path.join(output_dir, "Output.gdb", "ten_minute_polygons")

    # Create a new Service Area layer. Fire stations are concerned with the
    # drive times away from the fire stations to the incidents.
    result_object = arcpy.na.MakeServiceAreaAnalysisLayer(network,
                                            layer_name, travel_mode,
                                            direction, cutoffs)

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

    # Get the names of all the sublayers within the service area layer.
    sub_layer_names = arcpy.na.GetNAClassNames(layer_object)
    # Store the layer names that we will use later
    facilities_layer_name = sub_layer_names["Facilities"]
    polygons_layer_name = sub_layer_names["SAPolygons"]

    # Load the fire station locations as facilities.
    arcpy.na.AddLocations(layer_object, facilities_layer_name, in_facilities,
                          "", "")

    # Solve the service area layer
    arcpy.na.Solve(layer_object)

    # Save the resulting polygon sublayer
    arcpy.management.CopyFeatures(polygons_layer_name, four_minute_polygons)

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

    # Update the breaks to 1, 4, and 10 minutes
    solverProps.defaultBreaks = [1, 4, 10]

    # Solve the service area layer
    arcpy.na.Solve(layer_object)

    # Save the resulting polygon sublayer
    arcpy.management.CopyFeatures(polygons_layer_name, ten_minute_polygons)

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 service area layer object from a layer named "Service Area" in the map
doc = arcpy.mp.ArcGISProject('current')
map_obj = doc.listMaps()[0]
sa_layer = map_obj.listLayers('Service Area')[0]

#Get the Trucking Time travel mode from the network dataset
desc = arcpy.Describe(sa_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(sa_layer)
solver_properties.applyTravelMode(trucking_mode)