Обновление параметра атрибута слоя анализа (Network Analyst)

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

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

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

  • Параметризованные сетевые атрибуты используются для моделирования некоторого динамического аспекта значения атрибута. Например, туннель с ограничением высоты 12 футов может быть смоделирован с использованием параметра. В этом случае высоту транспорта в футах нужно указать как значение параметра. Ограничение будет считаться истинным, если высота транспорта превышает 12 футов. Аналогично у моста может быть параметр, указывающий ограничение по весу.

  • Этот инструмент следует использовать только со слоями сетевого анализа с заданными параметрами сетевых атрибутов.

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

Параметры

ПодписьОписаниеТип данных
Входной слой сетевого анализа

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

Network Analyst Layer
Атрибут

Сетевой атрибут, параметр которого будет обновлен.

String
Параметр

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

String
Значение
(Дополнительный)

Значение, которое будет задано для параметра атрибута. Это может быть строка, число, дата или логическое значение (True, False). Если значение не задано, значение параметра атрибута устанавливается NULL.

Если у параметра атрибута есть тип ограничения, значение можно указать как ключевое слово или число. Ключевое слово или числовое значение определяет, будет ли атрибут ограничения запрещать, предотвращать или предпочитать сетевые элементы, с которыми он связан. Кроме того, при выборе ключевых слов HIGH, MEDIUM или LOW можно определить степень предотвращения или предпочтения сетевых элементов. Поддерживаются следующие ключевые слова:

  • PROHIBITED (запрещено)
  • AVOID_HIGH (избегать в высокой степени)
  • AVOID_MEDIUM (избегать в средней степени)
  • AVOID_LOW (избегать в низкой степени)
  • PREFER_LOW (предпочитать в низкой степени)
  • PREFER_MEDIUM (предпочитать в средней степени)
  • PREFER_HIGH (предпочитать в высокой степени)

Числовые значения, превышающее 1, могут привести к исключению ограниченных элементов. Чем больше число, тем больше элементов игнорируются. Числовые значения от 0 до 1 могут привести к предпочтительному выбору ограниченных элементов. Чем меньше число, тем больше ограниченных элементов выбирается. Отрицательные числа запрещают использование ограниченных элементов.

Подсказка:

Если значение параметра содержит массив, отделите элементы массива с помощью локализованного символа разделителя. Например, в США вы бы скорее всего использовали запятую для разделения элементов. Поэтому представление массива из трех чисел может выглядеть следующим образом: "5,10,15".

String

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

ПодписьОписаниеТип данных
Обновленный входной слой сетевого анализа

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

Слой Network Analyst

arcpy.management.UpdateAnalysisLayerAttributeParameter(in_network_analysis_layer, parameterized_attribute, attribute_parameter_name, {attribute_parameter_value})
ИмяОписаниеТип данных
in_network_analysis_layer

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

Network Analyst Layer
parameterized_attribute

Сетевой атрибут, параметр которого будет обновлен.

String
attribute_parameter_name

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

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

Значение, которое будет задано для параметра атрибута. Это может быть строка, число, дата или логическое значение (True, False). Если значение не задано, значение параметра атрибута устанавливается NULL.

Если у параметра атрибута есть тип ограничения, значение можно указать как ключевое слово или число. Ключевое слово или числовое значение определяет, будет ли атрибут ограничения запрещать, предотвращать или предпочитать сетевые элементы, с которыми он связан. Кроме того, при выборе ключевых слов HIGH, MEDIUM или LOW можно определить степень предотвращения или предпочтения сетевых элементов. Поддерживаются следующие ключевые слова:

  • PROHIBITED (запрещено)
  • AVOID_HIGH (избегать в высокой степени)
  • AVOID_MEDIUM (избегать в средней степени)
  • AVOID_LOW (избегать в низкой степени)
  • PREFER_LOW (предпочитать в низкой степени)
  • PREFER_MEDIUM (предпочитать в средней степени)
  • PREFER_HIGH (предпочитать в высокой степени)

Числовые значения, превышающее 1, могут привести к исключению ограниченных элементов. Чем больше число, тем больше элементов игнорируются. Числовые значения от 0 до 1 могут привести к предпочтительному выбору ограниченных элементов. Чем меньше число, тем больше ограниченных элементов выбирается. Отрицательные числа запрещают использование ограниченных элементов.

Подсказка:

Если значение параметра содержит массив, отделите элементы массива с помощью локализованного символа разделителя. Например, в США вы бы скорее всего использовали запятую для разделения элементов. Поэтому представление массива из трех чисел может выглядеть следующим образом: "5,10,15".

String

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

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

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

Слой Network Analyst

Пример кода

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

Запустите инструмент с использованием всех параметров.

arcpy.na.UpdateAnalysisLayerAttributeParameter("Route", "Height Restriction",
                                               "Vehicle Height (feet)", 12.0)
UpdateAnalysisLayerAttributeParameter, пример 2 (рабочий процесс)

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

# Name: UpdateAnalysisLayerAttributeParameter_Workflow.py
# Description: Use the network dataset's length and height restriction attribute
#               parameters to find a route suitable for transporting a large
#               wind turbine blade. The results are saved to a layer file.
# 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 local variables
    input_gdb = "C:/Data/SanDiego.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    layer_name = "WindTurbineRoute"
    impedance = "Meters"
    restrictions = ["Driving a Truck", "Height Restriction", "Oneway",
            "Length Restriction", "National STAA and Locally Preferred Routes"]
    seaport = os.path.join(input_gdb, "Analysis", "Port")
    wind_farm = os.path.join(input_gdb, "Analysis", "WindFarm")
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    #Make a new route layer. Use restriction attributes relevant to trucking
    #oversize loads
    result_object = arcpy.na.MakeRouteLayer(network, layer_name, impedance,
                                        restriction_attribute_name=restrictions)

    #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)

    #Set the vehicle height and length attribute parameters to the dimensions of
    #the wind turbine transport truck. If these dimensions exceed the limits
    #associated with a street feature, that street will be restricted, and the
    #resulting route will avoid it.
    arcpy.na.UpdateAnalysisLayerAttributeParameter(layer_object,
                        "Height Restriction", "Vehicle Height (feet)", 13.25)
    arcpy.na.UpdateAnalysisLayerAttributeParameter(layer_object,
                        "Length Restriction", "Vehicle Length (feet)", 80)

    #Load the origin and destination points as Stops in the Route
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    stops_layer_name = sublayer_names["Stops"]
    arcpy.na.AddLocations(layer_object, stops_layer_name, seaport, "", "")
    arcpy.na.AddLocations(layer_object, stops_layer_name, wind_farm, "", "",
                            append="APPEND")

    #Solve the route layer
    arcpy.na.Solve(layer_object)

    #Save the solved route 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)))