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

Уровень лицензии:BasicStandardAdvanced

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

Позволяет добавлять объекты сетевого анализа в слой сетевого анализа. Объекты добавляются в конкретный подслой, например, «Остановки» и «Барьеры» (Stops, Barriers). Объекты вводятся как объекты или записи.

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

Синтаксис

AddLocations_na (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})
ПараметрОбъяснениеТип данных
in_network_analysis_layer

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

Network Analyst Layer
sub_layer

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

String
in_table

Класс объектов или таблица как источник новых объектов сетевого анализа.

Table View
field_mappings

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

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

ВниманиеВнимание:

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

Network Analyst Class FieldMap
search_tolerance

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

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

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), даже в том случае, если указаны другие типы.

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

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

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

Boolean
append
(дополнительно)

Укажите необходимость добавления новых объектов сетевого анализа к существующим объектам.

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

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

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

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

Boolean
snap_offset
(дополнительно)

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

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

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

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

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

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

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

Value Table

Пример кода

AddLocations. Пример 1 (окно Python)

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.AddLocations("Route","Stops","Analysis/Hospital","","")
AddLocations. Пример 2 (окно Python)

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.AddLocations("Route","Stops","Analysis/Hospital",
                      "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 Cost Matrix).

# Name: AddLocations_Workflow.py
# Description: The scenario shows how to calculate a travel time matrix between 
#              store features. 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 store features using their geometry and the destinations
#              are loaded from the origins using network location fields to 
#              speed up the load times. 
# Requirements: Network Analyst Extension 

#Import system modules
import arcpy
from arcpy import env

try:
    #Check out the Network Analyst extension license
    arcpy.CheckOutExtension("Network")

    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    outNALayerName = "StoreTravelTimeMatrix"
    impedanceAttribute = "TravelTime"
    inFeatures = "Analysis/Stores"
    searchTolerance = "500 Meters"
    searchQuery = [["Streets",'"FREEWAY" = 0'],["Streets_ND_Junctions",""]]
    odOrigins = "Origins"
    outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
    
    #Create a new OD cost matrix analysis layer. For this scenario, the default 
    #value for all the remaining parameters statisfies the analysis requirements
    outNALayer = arcpy.na.MakeODCostMatrixLayer(inNetworkDataset, outNALayerName,
                                   impedanceAttribute)
    
    #Get the layer object from the result object. The OD cost matrix layer can 
    #now be referenced using the layer object.
    outNALayer = outNALayer.getOutput(0)
    
    #Get the names of all the sublayers within the OD cost matrix layer.
    subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
    #Stores the layer names that we will use later
    originsLayerName = subLayerNames[odOrigins]
    destinationsLayerName = subLayerNames["Destinations"]
    
    #Get the origin layer object from within the OD cost matrix layer
    #The first layer returned by ListLayers is the OD cost matrix layer itself
    #which we don't want to use.
    for layer in arcpy.mapping.ListLayers(outNALayer)[1:]:
        if layer.datasetName == odOrigins:
            originsLayer = layer
            break
    else:
        raise Exception("Failed to get the origins layer object.")
    
    #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.
    #The OD cost matrix layer created previously is referred using its name. 
    arcpy.na.AddLocations(outNALayer,originsLayerName,inFeatures,"",
                          searchTolerance, exclude_restricted_elements = "EXCLUDE",
                          search_query = searchQuery)
    
    #Load origins as destinations using the network locations fields from 
    #origins. This is much faster than loading destinations from the store 
    #features using their geometry as their network locations have already been
    #calculated while loading them origins.
    #Create a field mappings object that supports network location fields from 
    #origins layer using the candidate fields from origins
    originsLayer = arcpy.management.MakeFeatureLayer(originsLayer,
                                                     outNALayerName+originsLayerName)
    candidateFields = arcpy.ListFields(originsLayer.getOutput(0))
    fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer,
                                                  destinationsLayerName, True,
                                                  candidateFields)
    arcpy.na.AddLocations(outNALayer,destinationsLayerName,originsLayer,
                          fieldMappings,"")
    
    #Solve the od cost matrix layer. Halt the execution if there is an 
    #invalid location 
    arcpy.na.Solve(outNALayer,"HALT")
    
    #Save the solved na layer as a layer file on disk with relative paths
    arcpy.management.SaveToLayerFile(outNALayer,outLayerFile,"RELATIVE")
    
    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 occured on line %i" % tb.tb_lineno
    print str(e)

Параметры среды

Связанные темы

Информация о лицензировании

ArcGIS for Desktop Basic: Да
ArcGIS for Desktop Standard: Да
ArcGIS for Desktop Advanced: Да
5/10/2014