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

Сводка

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

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

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

  • Этот инструмент можно применять множество раз для добавления нескольких объектов сетевого анализа в один и тот же подслой. Например, если остановки слоя маршрута находятся в двух классах пространственных объектов, инструмент нужно будет запустить дважды - для каждого класса. Во время второго запуска поставьте отметку Присоединить (append = "APPEND" в Python).

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

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

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

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

Синтаксис

arcpy.na.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 – точка не будет расположена на элементах этого сетевого источника.

Опции MIDDLE и END поддерживаются для обратной совместимости. Используйте опцию SHAPE, чтобы найти ваши входные данные на определенном источнике сети; в противном случае используйте NONE.

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

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

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

Значение параметра указывается в виде списка с вложенными списками. Вложенные списки состоят из двух значений, указывающих имя и тип замыкания для всех источников сети. Например, значение параметра [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] указывает, что поиск может выполняться по геометрии источника Streets, но не по источнику Streets_ND_Junctions.

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

Для наборов сетевых данных базы геоданных типы замыкания могут быть указаны для каждого подтипа источников сети. Например, если в сети есть источник с именем Streets, а у этого источника есть подтип с именем Local Streets, укажите тип замыкания для локальных улиц, используя ["Streets : Local Streets", "SHAPE"].

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 для всех источников сети. Более подробно о синтаксисе SQL см. Справочник по SQL для выражений запросов, применяемых в ArcGIS.

К любому источнику сети, не включенному в этот список, запросы не применяются. Выражение, заданное как пустая строка, будет интерпретироваться как отсутствие запроса.

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

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.

Прежние версии:

Функцию GetNASublayer можно использовать для извлечения подслоев слоя сетевого анализа. Она была введена в ArcGIS Pro 2.7. В предыдущих версиях программного обеспечения лучший способ получить объект подслоя слоя сетевого анализа заключался в использовании метода listLayers объекта Layer сетевого анализа с использованием имени подслоя в качестве подстановочного знака.

# 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 = arcpy.na.GetNASublayer(layer_object, "Origins")
    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: Да

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