Расчет (Network Analyst)

Сводка

Решает задачу слоя сетевого анализа на основе сетевых местоположений и свойств.

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

  • Если решить задачу не удается, в предупредительных сообщениях и сообщениях об ошибках содержатся полезные сведения о причинах неудачи.

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

  • Инструмент будет потреблять кредиты, если слой сетевого анализа будет использовать ArcGIS Online в качестве источника сетевых данных. Подробнее см. в разделе Обзор сервисных кредитов.

Синтаксис

arcpy.na.Solve(in_network_analysis_layer, {ignore_invalids}, {terminate_on_solve_error}, {simplification_tolerance}, {overrides})
ParameterОбъяснениеТип данных
in_network_analysis_layer

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

Network Analyst Layer
ignore_invalids
(Дополнительный)

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

  • SKIPМеханизм расчета будет пропускать неразмещенные сетевые положения и рассчитывать слой анализа на основе только допустимых сетевых положений. Также расчет продолжится, если положения находятся на непроходимых элементах или содержат другие ошибки. Это удобно, если вы знаете, что не все сетевые местоположения корректны, но вы хотите выполнить расчет с допустимыми сетевыми положениями. Используется по умолчанию.
  • HALTРасчет не будет выполнен при наличии недопустимых положений. Их можно исправить и повторно запустить анализ.
Boolean
terminate_on_solve_error
(Дополнительный)

Определяет, будет ли работа инструмента приостановлена, если в ходе решения возникнет ошибка.

  • TERMINATEПри обнаружении ошибки механизмом расчета инструмент не запустится. Используется по умолчанию. При использовании этого параметра результирующий объект Result не создается, если запустить инструмент не удается из-за ошибки механизма расчета. Сообщения геообработки следует получать от объекта ArcPy.
  • CONTINUEПри обнаружении ошибки механизмом расчета отказа инструмента не будет, и он сможет продолжать работу. Все сообщения об ошибках, возвращенные механизмом расчета, будут преобразованы в предупредительные сообщения. При использовании этого параметра результирующий объект Result всегда создается, а свойству maxSeverity результирующего объекта Result присваивается значение 1, если механизм расчета обнаруживает ошибку. Используйте метод getOutput результирующего объекта Result со значением индекса 1, чтобы определить, был ли расчет успешным.
Boolean
simplification_tolerance
(Дополнительный)

Допуск, определяющий степень упрощения для выходной геометрии. Если указан допуск, его значение должно быть больше нуля. Можно выбрать предпочитаемые единицы измерения (по умолчанию – десятичные градусы).

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

Поскольку линию только с двумя вершинами нельзя еще больше упростить, этот параметр не влияет на время отрисовки для односегментного вывода, например для прямолинейных маршрутов, линий матрицы стоимости «Источник-Назначение» и линий местоположения-распределения.

Linear Unit
overrides
(Дополнительный)

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

Для этого параметра должно быть задано значение в формате JavaScript Object Notation (JSON). К примеру, допустимое значение имеет следующий вид: {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. Замещающее имя всегда заключено в двойные кавычки. Эти значения могут быть числовыми, булевыми или текстовыми.

Значение по умолчанию является пустым, что означает отсутствие замещения каких-либо настроек механизма расчета.

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

String

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

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

Решенный слой сетевого анализа.

Слой Network Analyst
solve_succeeded

Логическое значение, обозначающее успешность решения.

Логическое

Пример кода

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

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

arcpy.na.Solve("Route", "HALT", "TERMINATE", "10 Meters")
Solve, пример 2 (рабочий процесс)

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

# Name: Solve_Workflow.py
# Description: Solve a closest facility analysis to find the closest warehouse
#              from the store locations and save the results to a layer file on
#              disk.
# 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/Paris.gdb"
    network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
    layer_name = "ClosestWarehouse"
    travel_mode = "Driving Time"
    facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
    incidents = os.path.join(input_gdb, "Analysis", "Stores")
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    #Create a new closest facility analysis layer.
    result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
                                            layer_name, travel_mode,
                                            "TO_FACILITIES",
                                            number_of_facilities_to_find=1)

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

    #Get the names of all the sublayers within the closest facility layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    #Stores the layer names that we will use later
    facilities_layer_name = sublayer_names["Facilities"]
    incidents_layer_name = sublayer_names["Incidents"]

    #Load the warehouses as Facilities using the default field mappings and
    #search tolerance
    arcpy.na.AddLocations(layer_object, facilities_layer_name,
                            facilities, "", "")

    #Load the stores as Incidents. Map the Name property from the NOM field
    #using field mappings
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                    incidents_layer_name)
    field_mappings["Name"].mappedFieldName = "NOM"
    arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
                          field_mappings, "")

    #Solve the closest facility layer
    arcpy.na.Solve(layer_object)

    #Save the solved closest facility 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: Ограничено
  • Standard: Ограничено
  • Advanced: Ограничено

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