Добавить местоположения (Network Analyst)

Сводка

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

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

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

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

  • Чтобы удалить существующие объекты сетевого анализа перед загрузкой новых, воспользуйтесь параметром CLEAR.

  • Данный инструмент работает значительно быстрее, если классы пространственных объектов, используемые в качестве сетевых источников в наборе сетевых данных, имеют корректный и актуальный пространственный индекс.

Синтаксис

AddLocations(in_network_analysis_layer, sub_layer, in_table, {field_mappings}, {search_tolerance}, {sort_field}, {search_criteria}, {match_type}, {append}, {snap_to_position_along_network}, {snap_offset}, {exclude_restricted_elements}, {search_query})
ParameterОбъяснениеТип данных
in_network_analysis_layer

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

Network Analyst Layer
sub_layer

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

String
in_table

Класс объектов или таблица, которая используется как источник новых объектов сетевого анализа.

Table View
field_mappings
(Дополнительный)

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

Для указания значения параметра используется объект NAClassFieldMappings, полученный из класса NAClassFieldMappings. Объект NAClassFieldMappings представляет собой коллекцию объектов NAClassFieldMap, позволяющую задавать значения по умолчанию или сопоставлять имена полей из вводных объектов со свойствами объекта сетевого анализа. Если загружаемые данные содержат сетевые положения или диапазоны положений, основанные на наборе сетевых данных, использованных для анализа, сопоставьте поля сетевых положений из входных объектов со свойствами сетевых положений. Указание поля сетевого положения в сопоставлении полей выполняется так же, как с помощью параметра Использовать поля сетевых положений вместо геометрии из диалогового окна инструмента.

Внимание:

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

Network Analyst Class FieldMap
search_tolerance
(Дополнительный)

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

По умолчанию 5000 метров.

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

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

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

Field
search_criteria
[[Source, SnapType],...]
(Дополнительный)

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

Значение параметра указывается в виде списка с вложенными списками. Вложенный список состоит из двух значений, указывающих на имя и тип замыкания для каждого источника сети. Тип замыкания указывается с использованием ключевых слов SHAPE, MIDDLE, END или NONE.

  • SHAPE – точка будет расположена на ближайшей точке элемента этого сетевого источника.
  • MIDDLE – точка будет расположена на ближайшей средней точке элемента этого сетевого источника.
  • END – точка будет расположена на ближайшей конечной точке элемента этого сетевого источника.
  • NONE – точка не будет расположена на элементах этого сетевого источника.
Например, при поиске положений, значение параметра [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] указывает, что поиск может быть выполнен по геометрии источника Streets, но не источника Streets_ND_Junctions.

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

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

Любой не включенный в этот список сетевой источник будет использовать тип замыкания по умолчанию. Самый безопасный способ – включить все сетевые источники в ваш список и явно задать тип замыкания для каждого из них.

Значение по умолчанию SHAPE для всех сетевых источников, кроме системных соединений, где применяется значение по умолчанию NONE.

Value Table
match_type
(Дополнительный)

Указывает способ сопоставления сетевых местоположений.

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

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

Boolean
append
(Дополнительный)

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

  • APPENDНовый объект сетевого анализа добавляется в существующий набор объектов выбранного подслоя. Это значение по умолчанию.
  • CLEARСуществующие объекты сетевого анализа удаляются и заменяются новыми.
Boolean
snap_to_position_along_network
(Дополнительный)

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

  • NO_SNAP Геометрия сетевых положений основывается на геометрии входных объектов. Это удобно при необходимости выполнения ограничения подъезда, требующего наличия сведений о том, на какой стороне ребра находятся сетевые положения. Это значение по умолчанию.
  • SNAPЕсли есть точечные объекты, точка замыкается на сеть, и использование ограничения подъезда невозможно. Это полезно, если не имеет значения, как транспортное средство должно подходить к остановке. Если входные объекты – линии или полигоны, используйте это значение параметра.

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

Boolean
snap_offset
(Дополнительный)

В случае замыкания точки к сети можно применить расстояние смещения. Нулевое расстояние смещения означает, что точки будут совпадать с сетевым объектом (обычно линейным). Чтобы сместить точку от сетевого объекта, введите расстояние смещения. Смещение связано с положением исходной точки; поэтому, если исходная точка была расположена слева, то ее новое положение будет смещено влево. Если она изначально была расположена справа, то ее новое положение будет смещено вправо.

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

По умолчанию – 5 метров. Однако этот параметр игнорируется если для snap_to_position_along_network задано NO_SNAP.

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

Указывает, будут ли исключены ограниченные сетевые элементы.

  • EXCLUDEСетевые положения размещаются только на проходимых участках сети. Это предотвратит размещение сетевых положений на элементах, которых нельзя достичь из-за ограничений или барьеров. Чтобы получить ожидаемые результаты, перед добавлением сетевых положений с использованием этого параметра, убедитесь в том, что в слой сетевого анализа добавлены все ограничивающие барьеры. Этот параметр не применяется при добавлении объектов барьеров. В таких случаях используйте в качестве значения параметра "#". Это значение по умолчанию.
  • INCLUDEСетевые положения размещаются на всех элементах сети. Сетевые положения, добавляемые с использованием этого параметра, могут быть недоступны в процессе решения, если они размещены на ограниченных элементах.
Boolean
search_query
[[Source, Expression],...]
(Дополнительный)

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

Значение параметра указывается в виде списка с вложенными списками. Вложенный список состоит из двух значений, указывающих имя и выражение SQL для всех источников сети. Синтаксис выражения SQL несколько различается в зависимости от типа класса объектов источника сети. Например, если вы выполняете запрос к исходному классу объектов, хранящемуся в файловой или многопользовательской базе геоданных либо шейп-файле, то имена полей необходимо заключить в двойные кавычки: "CFCC".

Если запрос для конкретного источника указывать не нужно, используйте "#" в качестве значения для выражения SQL, или исключите имя источника и выражение SQL из значения параметра. Если запрос для всех источников сети указывать не нужно, используйте "#" в качестве значения параметра.

Например, значение параметра [["Streets","\"CFCC\" = 'A15'"], ["Streets_ND_Junctions",""]] определяет выражение SQL для исходного класса объектов Streets и отсутствие выражения для исходного класса объектов Streets_ND_Junctions. Обратите внимание, что двойные кавычки, окружающие имя поля CFCC, можно проигнорировать, добавив символы обратной косой черты, что позволит избежать ошибки анализа в интерпретаторе Python.

По умолчанию запрос не используется.

Value Table

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

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

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

Слой Network Analyst

Пример кода

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

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

hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
AddLocations, пример 2 (окно Python)

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

hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals,
                      "Name Name #;Attr_Minutes VisitTime 0;CurbApproach # 0",
                      "2 Miles", "FID",
                      [["Streets", "SHAPE"], ["Streets_ND_Junctions", "NONE"]],
                      "MATCH_TO_CLOSEST", "CLEAR", "SNAP", "10 Feet", "EXCLUDE",
                      [["Streets", '"FREEWAY" = 0'],
                      ["Streets_ND_Junctions", ""]])
AddLocations, пример 3 (рабочий процесс)

В следующем автономном скрипте Python показано, как с помощью инструмента AddLocations можно загружать отправные пункты и места назначения в матрицу стоимости OD.

# Name: AddLocations_Workflow.py
# Description: Calculate a travel time matrix between stores. Use the Add
#               Locations tool to load origins and destinations into an OD Cost
#               Matrix layer. Since the origins and destinations are the same in
#               this case, the origins are first loaded from the stores feature
#               class using geometry, and the destinations are loaded from the
#               origins using network location fields in order to speed up the
#               load times.
# 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 = "StoreTravelTimeMatrix"
    travel_mode = "Driving Time"
    stores = os.path.join(input_gdb, "Analysis", "Stores")
    search_tolerance = "500 Meters"
    search_query = [["Streets", '"FREEWAY" = 0'], ["Streets_ND_Junctions", ""]]
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    #Create a new OD cost matrix analysis layer. For this scenario, the default
    #value for all the remaining parameters statisfies the analysis requirements
    result_object = arcpy.na.MakeODCostMatrixAnalysisLayer(network, layer_name,
                                                    travel_mode)

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

    #Get the names of all the sublayers within the OD layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    #Store the layer names for later use
    origins_layer_name = sublayer_names["Origins"]
    destinations_layer_name = sublayer_names["Destinations"]

    #Load store features as origins using the geometry of store features.
    #Ensure that the stores are not located on freeways by using a search query.
    arcpy.na.AddLocations(layer_object, origins_layer_name, stores, "",
                          search_tolerance,
                          exclude_restricted_elements = "EXCLUDE",
                          search_query = search_query)

    #Because we want our origins and destinations to be the same, load the
    #origins as destinations using the network locations fields. Loading using
    #existing network location fields is much faster than loading using geometry
    #because the network locations have already been calculated.
    #Create a field mappings object that supports network location fields using
    #the candidate fields from origins
    origins_sublayer = layer_object.listLayers(origins_layer_name)[0]
    candidate_fields = arcpy.ListFields(origins_sublayer)
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                  destinations_layer_name, True,
                                                  candidate_fields)
    arcpy.na.AddLocations(layer_object, destinations_layer_name,
                            origins_sublayer, field_mappings, "")

    #Solve the od cost matrix layer. Halt the execution if there is an
    #invalid location
    arcpy.na.Solve(layer_object, "HALT")

    #Save the solved OD cost matrix 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: Да

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