Сводка
Добавляет входные объекты или записи в слой сетевого анализа. Объекты добавляются в конкретный подслой, например, остановки и барьеры.
Использование
Этот инструмент можно применять множество раз для добавления нескольких объектов сетевого анализа в один и тот же подслой. Например, если остановки для слоя маршрута поступают из двух классов объектов, инструмент необходимо вызвать дважды, используя параметр 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.
Для указания нескольких типов замыкания для отдельного источника сети, используйте сочетание ключевых слов для типа замыкания, разделенных знаком подчеркивания. Например, MIDDLE_END указывает, что положения могут быть замкнуты на среднюю или конечную точку источника сети. При добавлении линейных или полигональных сетевых положений используется только тип замыкания SHAPE, даже в том случае, если указаны другие типы. Любой не включенный в этот список сетевой источник будет использовать тип замыкания по умолчанию. Самый безопасный способ – включить все сетевые источники в ваш список и явно задать тип замыкания для каждого из них. Значение по умолчанию SHAPE для всех сетевых источников, кроме системных соединений, где применяется значение по умолчанию NONE. | Value Table |
match_type (Дополнительный) | Указывает способ сопоставления сетевых местоположений.
Этот параметр не используется при добавлении местоположений к подслоям с линейной или полигональной геометрией, таким как Линейные барьеры и Полигональные барьеры. | Boolean |
append (Дополнительный) | Определяет, будут ли объекты сетевого анализа добавлены к существующим объектам.
| Boolean |
snap_to_position_along_network (Дополнительный) | Определяет, будет ли привязка сетевых местоположений выполняться вдоль набора сетевых данных или с некоторым заданным смещением от набора сетевых данных.
Этот параметр не используется при добавлении местоположений к подслоям с линейной или полигональной геометрией, таким как Линейные барьеры и Полигональные барьеры. | Boolean |
snap_offset (Дополнительный) | В случае замыкания точки к сети можно применить расстояние смещения. Нулевое расстояние смещения означает, что точки будут совпадать с сетевым объектом (обычно линейным). Чтобы сместить точку от сетевого объекта, введите расстояние смещения. Смещение связано с положением исходной точки; поэтому, если исходная точка была расположена слева, то ее новое положение будет смещено влево. Если она изначально была расположена справа, то ее новое положение будет смещено вправо. Этот параметр не используется при добавлении местоположений к подслоям с линейной или полигональной геометрией, таким как Линейные барьеры и Полигональные барьеры. По умолчанию – 5 метров. Однако этот параметр игнорируется если для snap_to_position_along_network задано NO_SNAP. | Linear Unit |
exclude_restricted_elements (Дополнительный) | Указывает, будут ли исключены ограниченные сетевые элементы.
| 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 |
Пример кода
Запуск инструмента с использованием только необходимых параметров.
hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
Выполните инструмент с использованием всех параметров.
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", ""]])
В следующем автономном скрипте 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))
Environments
Информация о лицензиях
- Basic: Да
- Standard: Да
- Advanced: Да