Краткая информация
Предоставляет доступ к свойствам слоя сетевого анализа областей обслуживания. Функция GetSolverProperties используется для получения объекта ServiceAreaSolverProperties из слоя сетевого анализа областей обслуживания.
Описание
Объект ServiceAreaSolverProperties предоставляет доступ для чтения и записи ко всем свойствам слоя сетевого анализа областей обслуживания. Этот объект можно использовать для изменения нужных свойств анализа слоя ServiceAreaSolverProperties, а соответствующий слой можно повторно рассчитать для получения необходимых результатов. Новый слой областей обслуживания можно создать с помощью инструмента геообработки Создать слой области обслуживания (Make Service Area Layer). Получение объекта ServiceAreaSolverProperties из нового слоя областей обслуживания позволяет повторно использовать существующий слой для последующего анализа, а не создавать новый слой для каждого анализа, что может замедлять работу.
После изменения свойства объекта ServiceAreaSolverProperties соответствующий слой можно использовать с другими функциями и инструментами геообработки. Обновлять слой для внесения изменения не требуется.
Свойства
Свойство | Объяснение | Тип данных |
accumulators (чтение и запись) | Дает возможность получать или задавать список сетевых атрибутов стоимости, сумма которых подсчитывается в ходе данного анализа. Пустой список, [], означает, что не подсчитывается сумма ни для каких атрибутов стоимости. | String |
attributeParameters (чтение и запись) | Дает возможность получать или задавать параметризированные атрибуты для использования их в анализе. Это свойство возвращает словарь Python. Ключом в словаре является кортеж двух значений – имени атрибута и имени параметра. Значение каждого элемента в словаре является значением параметра. Параметризованные сетевые атрибуты используются для моделирования некоторого динамического аспекта значения атрибута. Например, туннель с ограничением высоты 12 футов может быть смоделирован с использованием параметра. В этом случае высоту транспорта в футах нужно указать как значение параметра. Если транспортное средство выше 12 футов (3,7 м), то это ограничение будет оценено как True, ограничивающее, таким образом, проезд по туннелю. Аналогично у моста может быть параметр, указывающий ограничение по весу. Попытка изменить непосредственно свойство attributeParameters не приведет к обновлению значений. Вместо этого следует всегда использовать для установки значений этого свойства новый объект словаря. Различие между этими подходами проиллюстрировано следующими двумя блоками кода. Не стоит изменять свойство attributeParameters на месте; этот метод кодировки не будет работать.
Измените свойство attributeParameters используя новый объект словарь.
| Dictionary |
defaultBreaks (чтение и запись) | Дает возможность получать или задавать значения импеданса, определяющие экстент области обслуживания для расчета. Для создания концентрических областей можно использовать несколько полигональных границ. Например, чтобы определить области обслуживания для одного пункта обслуживания со временами 2, 3 и 5 минут, следует указать значение [2, 3, 5]. | Double |
excludeSources (чтение и запись) | Дает возможность получать или задавать список сетевых источников, исключаемых в процессе создания полигонов. Геометрия используемых элементов от исключенных источников не включается в полигоны. Пустой список ([]) означает, что никакие сетевые источники не будут исключены. | String |
impedance (чтение и запись) | Дает возможность получать или задавать сетевой атрибут стоимости, используемый в качестве импеданса. Этот атрибут стоимости суммируется при определении области обслуживания. | String |
includeNetworkSourceFields (чтение и запись) | Определяет, будут ли к линиям областей обслуживания добавлены дополнительные поля из исходных пространственных объектов, используемых в анализе. Список возможных значений следующий:
| String |
lineOverlap (чтение и запись) | Определяет, будут ли при расчете линий областей обслуживания создаваться перекрывающиеся линии. Список возможных значений следующий:
| String |
lineType (чтение и запись) | Дает возможность получать или задавать тип линий областей обслуживания, создаваемых в ходе анализа. Список возможных значений следующий:
| String |
polygonMerge (чтение и запись) | Определяет, необходимо ли объединять полигоны, имеющие общие граничные значения. Этот параметр применяется только при создании полигонов для нескольких пунктов обслуживания. Список возможных значений следующий:
| String |
polygonNesting (чтение и запись) | Определяет вид концентрических полигонов областей обслуживания – сплошные диски или кольца. Этот параметр применяется только при задании нескольких граничных значений для пунктов обслуживания. Список возможных значений следующий:
| String |
polygonType (чтение и запись) | Дает возможность получать или задавать тип создаваемых полигонов. Список возможных значений следующий:
| String |
restrictions (чтение и запись) | Дает возможность получать или задавать список атрибутов ограничения, применяемых в ходе данного анализа. Пустой список, [], означает, что в ходе анализа не применяются никакие атрибуты ограничения. | String |
solverName (только чтение) | Возвращает имя механизма расчета, на который ссылается слой сетевого анализа, использованный для получения данного объекта свойств механизма расчета. Это свойство всегда возвращает строковое значение Механизма расчета области обслуживания, если доступ к нему осуществляется из объекта ServiceAreaSolverProperties. | String |
splitLinesAtBreaks (чтение и запись) | Определяет, разбивать ли линии областей обслуживания при пересечении граничного значения. Список возможных значений следующий:
| String |
timeOfDay (чтение и запись) | Дает возможность получать или задавать время отправления или прибытия в пункты обслуживания. Интерпретация этого значения зависит от того, какое направление движения задано – от пункта обслуживания или к нему. Оно представляет собой время отправления, когда свойство travelDirection имеет значение TRAVEL_FROM, и время прибытия, когда свойство travelDirection имеет значение TRAVEL_TO. Значение None (Нет) указывает на то, что дата и время не применяются. Вместо конкретной даты может быть задан день недели, при помощи следующих условных дат:
К примеру, если отправление из пункта обслуживания должно происходить в 8:00 утра в пятницу, следует указать значение datetime.datetime(1900, 1, 5, 8,0,0). Параметр timeZoneUsage определяет, соответствует ли время и дата зоне UTC или часовому поясу, в котором находятся пункты обслуживания. | DateTime |
timeZoneUsage (чтение и запись) | Указывает часовой пояс или пояса параметра timeOfDay.
Вне зависимости от значения параметра timeZoneUsage все пункты обслуживания должны быть в одном часовом поясе, когда параметр timeOfDay имеет ненулевое значение, и параметру polygonMerge задано создание объединенных или неперекрывающихся полигонов. | String |
travelDirection (чтение и запись) | Определяет направление, в котором суммируется импеданс в ходе анализа области обслуживания. Список возможных значений следующий:
| String |
trimDistance (чтение и запись) | Дает возможность получать или задавать расстояние, в пределах которого происходит сокращение полигонов областей обслуживания. Значение свойства включает числовое значение и единицы измерения расстояния, разделенные пробелом; например, чтобы указать расстояние сокращения в 100 метров, введите "100 Meters". | String |
trimPolygons (чтение и запись) | Определяет, следует ли сокращать полигоны областей обслуживания. Список возможных значений следующий:
| String |
useHierarchy (чтение и запись) | Отвечает за использование атрибута иерархии при проведении анализа. Список возможных значений следующий:
| String |
uTurns (чтение и запись) | Дает возможность получать или задавать политику работы с разворотами в соединениях, которые могут возникать в ходе прохода по сети между остановками. Список возможных значений следующий:
| String |
Обзор метода
Метод | Объяснение |
applyTravelMode (travel_mode) | Обновляет свойства анализа слоя network analyst на основе объекта режима передвижения. После этого обновленный слой network analyst может быть рассчитан для завершения анализа. |
Методы
applyTravelMode (travel_mode)
Параметр | Объяснение | Тип данных |
travel_mode | Переменная, ссылающаяся на объект режима передвижения, который был получен на основе слоя сетевых данных. Список объектов режима передвижения можно получить, вызвав функцию arcpy.na.GetTravelModes. | String |
При создании слоя network analyst он получит значения по умолчанию для всех своих свойств анализа. Отдельные свойства анализа можно обновлять с помощью объекта свойств механизма расчета, полученного из слоя network analyst. Режим перемещения сохраняет предопределенный набор настроек анализа, который помогает выполнять определенные виды анализа – например, режим передвижения пешком сохраняет настройки анализа, необходимые для выполнения по-временного анализа передвижения пешим ходом.
Используя метод applyTravelMode, за один раз могут применяться сразу все настройки анализа, заданные для режима передвижения. После того, как свойства анализа будут обновлены, слой network analyst может быть рассчитан для завершения анализа.
Если при обновлении свойств механизма расчета, например – когда режим передвижения ссылается на свойства, которые не существуют в текущем наборе сетевых данных, или же ссылается на свойства, которые уже не применяются к набору сетевых данных, использовавшемуся для создания слоя network analyst, соответствующего объекту свойств механизма расчета, исключительных ситуаций не возникает. Этот метод будет с успехом работать, но вы получите ошибки при попытке расчёта такого слоя network analyst.
Если параметр travel_mode не привязан к объекту режима передвижения или строке, возникает исключительная ситуация TypeError. Если параметр travel_mode привязан к строке, но строка не может быть внутренне конвертирована в строковое представление объекта режима передвижения, возникает исключительная ситуация ValueError.
Пример кода
Пример 1: ServiceAreaSolverProperties (Python python)
Скрипт демонстрирует, как обновить слой сетевого анализа областей обслуживания для использования иерархии и установить в качестве граничных значений 5, 10 и 15 минут. Предполагается, что слой областей обслуживания Store Trade Areas был создан в новом документе карты на основе учебного набора сетевых данных на территорию города Сан-Франциско.
#Get the service area layer object from a layer named "Store Trade Areas" in
#the table of contents
saLayer = arcpy.mapping.Layer("Store Trade Areas")
#Get the solver properties object from the service area layer
solverProps = arcpy.na.GetSolverProperties(saLayer)
#Update the properties for the service area layer using the solver properties
#object
solverProps.defaultBreaks = [5, 10, 15]
solverProps.useHierarchy = "USE_HIERARCHY"
Пример 2: ApplyTravelMode (рабочий процесс)
Этот скрипт показывает, как создать область обслуживания на основе режима передвижения Время в пути грузового транспорта.
#Import modules
import os
import arcpy
#Define variables
workspace = "C:/data/SanDiego.gdb"
output_folder = "C:/data/output"
nds = os.path.join(workspace, "Transportation", "Streets_ND")
facilities = os.path.join(workspace, "Warehouses")
analysis_layer_name = "ServiceAreas"
#Set environment variables
arcpy.env.overwriteOutput = True
#Check out the network analyst extension
arcpy.CheckOutExtension("network")
#Create a new closest facility analysis layer
make_layer_result = arcpy.na.MakeServiceAreaLayer(nds, analysis_layer_name,
"TravelTime")
analysis_layer = make_layer_result.getOutput(0)
#Add facilities to the analysis layer using default field mappings
sub_layer_names = arcpy.na.GetNAClassNames(analysis_layer)
facilities_layer_name = sub_layer_names["Facilities"]
arcpy.na.AddLocations(analysis_layer, facilities_layer_name, facilities, "#", "#")
#Get the Trucking Time travel mode from the network dataset
travel_modes = arcpy.na.GetTravelModes(nds)
trucking_mode = travel_modes["Trucking Time"]
#Apply the travel mode to the analysis layer
solver_properties = arcpy.na.GetSolverProperties(analysis_layer)
solver_properties.applyTravelMode(trucking_mode)
#Solve the analysis layer and save the result as a layer file
arcpy.na.Solve(analysis_layer)
output_layer = os.path.join(output_folder, analysis_layer_name + ".lyr")
arcpy.management.SaveToLayerFile(analysis_layer, output_layer, "RELATIVE")
arcpy.AddMessage("Completed")