Создать слой матрицы Источник-Назначение (Network Analyst)

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

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

Создает слой сетевого анализа матрицы Источник-Назначение и задает его свойства. Слой сетевого анализа матрицы Источник-Назначение необходим для представления матрицы стоимости движения из набора исходных местоположений в набор конечных местоположений.

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

Синтаксис

MakeODCostMatrixLayer_na (in_network_dataset, out_network_analysis_layer, impedance_attribute, {default_cutoff}, {default_number_destinations_to_find}, {accumulate_attribute_name}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {hierarchy_settings}, {output_path_shape}, {time_of_day})
ПараметрОбъяснениеТип данных
in_network_dataset

Набор сетевых данных, для которого выполняется анализ матрицы Источник-Назначение.

Network Dataset Layer
out_network_analysis_layer

Имя создаваемого слоя анализа матрицы Источник-Назначение.

String
impedance_attribute

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

String
default_cutoff
(дополнительно)

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

Double
default_number_destinations_to_find
(дополнительно)

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

Long
accumulate_attribute_name
[accumulate_attribute_name,...]
(дополнительно)

Список атрибутов стоимости, который будет суммироваться во время анализа. Эти атрибуты суммирования служат исключительно для справки; механизм расчета использует только атрибут стоимости, указанный параметром Атрибут импеданса, для вычисления маршрута.

Для каждого суммируемого атрибута стоимости к маршрутам, являющимися выходными для механизма расчета, добавляется свойство Total_[Impedance].

String
UTurn_policy
(дополнительно)

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

  • ALLOW_UTURNSРазвороты разрешены в соединениях с любым количеством смежных ребер. Это значение используется по умолчанию.
  • NO_UTURNSРазвороты запрещены во всех соединениях, вне зависимости от их валентности. Обратите внимание, что, даже при выборе этой опции развороты в сетевых положениях по-прежнему разрешены. Запретить развороты в отдельных сетевых положениях можно с помощью их свойства CurbApproach.
  • ALLOW_DEAD_ENDS_ONLYРазвороты запрещены во всех соединениях, кроме тех, у которых имеется только одно смежное ребро (тупик).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYРазвороты запрещены в соединениях с ровно двумя смежными ребрами, но разрешены на перекрестках (в соединениях с тремя смежными ребрами или более) и в тупиках (соединениях с ровно одним смежным ребром). Зачастую сети имеют избыточные соединения в середине сегмента дороги. Эта опция позволяет запретить развороты транспортных средств в таких местах.
ПодсказкаПодсказка:

Для более точного определения правил разворота можно добавить глобальный параметр задержки на повороте в сетевой атрибут стоимости или настроить его, если он уже существует, а также уделить особое внимание конфигурации обратных поворотов. Кроме того, можно задать для сетевых положений свойство CurbApproach.

String
restriction_attribute_name
[restriction_attribute_name,...]
(дополнительно)

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

String
hierarchy
(дополнительно)
  • USE_HIERARCHY Для анализа используется атрибут иерархии. Применение иерархии приводит при расчете к предпочтению ребер высшего порядка по сравнению с ребрами низшего порядка. Расчеты с иерархией выполняются быстрее, и они могут использоваться для моделирования предпочтений водителя, который скорее выберет для проезда автостраду, нежели местную дорогу – даже если это приведет к увеличению длины пути. Данная опция доступна, если входной набор сетевых данных имеет атрибут иерархии.
  • NO_HIERARCHYДля анализа атрибут иерархии не используется. Расчет без применения иерархии дает точный маршрут для набора сетевых данных.

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

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

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

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

Network Analyst Hierarchy Settings
output_path_shape
(дополнительно)
  • NO_LINESДля маршрутов на выходе форма не создается. Это удобно при большом количестве исходных и конечных пунктов, когда необходимо получить только табличные данные (без линий маршрутов).
  • STRAIGHT_LINESФорма маршрута на выходе представляет собой одну прямую линию, соединяющую исходный пункт с пунктом назначения.

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

String
time_of_day
(дополнительно)

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

Если выбран атрибут импеданса на основе движения, решение будет создано с учетом динамики транспорта на указанное время суток. Дату и время можно указать в виде 5/14/2012 10:30 AM.

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

  • Сегодня – 30.12.1899
  • Воскресенье – 31.12.1899
  • Понедельник – 01.01.1900
  • Вторник – 02.01.1900
  • Среда – 03.01.1900
  • Четверг – 04.01.1900
  • Пятница – 05.01.1900
  • Суббота – 06.01.1900
Например, чтобы указать, что маршрут должен начинаться в 17:00 во вторник, следует указать значение параметра, равное 02.01.1900 17:00.

Date

Пример кода

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

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.na.MakeODCostMatrixLayer("Transportation/ParisNet","DrivetimeCosts",
                               "Drivetime")
MakeODCostMatrixLayer, пример 2 (окно Python)

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.na.MakeODCostMatrixLayer("Transportation/ParisNet","DrivetimeCosts",
                               "Drivetime",10,20,["Meters","Drivetime"],
                               "NO_UTURNS",["Oneway"],"USE_HIERARCHY","",
                               "NO_LINES")
MakeODCostMatrixLayer, пример 3 (рабочий процесс)

В следующем автономном скрипте Python показано, как с помощью инструмента MakeODCostMatrixLayer можно создавать матрицу Источник-Назначение для доставки товаров со склада во все магазины в пределах 10 минут в пути.

# Name: MakeODCostMatrixLayer_Workflow.py
# Description: Create an origin-destination cost matrix for delivery of goods 
#              from the warehouses to all stores within a 10-minute drive time 
#              and save the results to a layer file on disk. Such a matrix can   
#              be used as an input for logistics, delivery and routing analyses.
# 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/Paris.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/ParisMultimodal_ND"
    outNALayerName = "WarehouseToStoreDrivetimeMatrix"
    impedanceAttribute = "Drivetime"
    searchTolerance = "1000 Meters"
    accumulateAttributeName = ["Meters"]
    inOrgins = "Analysis/Warehouses"
    inDestinations = "Analysis/Stores"
    outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
    
    #Create a new OD Cost matrix layer. We wish to find all stores within a 10 
    #minute cutoff. Apart from finding the drive time to the stores, we also 
    #want to find the total distance. So we will accumulate the "Meters" 
    #impedance attribute.
    outNALayer = arcpy.na.MakeODCostMatrixLayer(inNetworkDataset, outNALayerName,
                                                impedanceAttribute, 10, "",
                                                accumulateAttributeName)
    
    #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["Origins"]
    destinationsLayerName = subLayerNames["Destinations"]
    
    #Load the warehouse locations as origins using a default field mappings and
    #a search tolerance of 1000 Meters.
    arcpy.na.AddLocations(outNALayer, originsLayerName, inOrgins, "",
                          searchTolerance)
    
    #Load the store locations as destinations and map the NOM field from stores
    #features as Name property using field mappings
    fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, destinationsLayerName)
    fieldMappings["Name"].mappedFieldName = "NOM"
    arcpy.na.AddLocations(outNALayer, destinationsLayerName, inDestinations, 
                          fieldMappings, searchTolerance)
    
    #Solve the OD cost matrix layer
    arcpy.na.Solve(outNALayer)
    
    #Save the solved OD cost matrix 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