Создать слой области обслуживания (Network Analyst)
Резюме
Создает слой сетевого анализа области обслуживания и задает свойства анализа. Слой сетевого анализа области обслуживания необходим для определения зоны доступности в пределах данного порога импеданса вокруг местоположения пункта обслуживания.
Инструменты Создать области обслуживания (Generate Service Areas) и Создать слой области обслуживания (Make Service Area Layer) похожи, но предназначены для различных целей. Используйте инструмент Создать области обслуживания (Generate Service Area) при настройке сервиса геообработки; это упростит процесс настройки. В противном случае используйте Создать слой области обслуживания (Make Service Area Layer). Также используйте инструмент Создать слой области обслуживания (Make Service Area Layer) при необходимости создать линии области обслуживания; Создать области обслуживания (Generate Service Area) не предоставляет функции для создания линий.
Для создания сервиса геообработки области обслуживания с использованием Создать области обслуживания (Generate Service Area) вам необходимо только настроить один инструмент и опубликовать инструмент напрямую, как сервис. Иначе вам необходимо создать модель при помощи Создать слой области обслуживания (Make Service Area Layer), правильно подключить ее к различным другим инструментам и опубликовать модель для создания сервиса геообработки области обслуживания.
Использование
После создания слоя анализа при помощи данного инструмента, вы можете добавлять в него объекты сетевого анализа при помощи инструмента Добавить положения (Add Locations), выполнять анализ при помощи инструмента Расчет (Solve) и сохранять результаты на диске при помощи инструмента Сохранить в файл слоя (Save To Layer File).
-
При использовании данного инструмента в моделях геообработки, если модель запускается, как инструмент, то выходной слой сетевого анализа должен быть задан параметром модели, в противном случае слой не добавляется в таблицу содержания ArcMap.
Синтаксис
Параметр | Объяснение | Тип данных |
in_network_dataset |
Набор сетевых данных, для которого выполняется анализ области обслуживания. | Network Dataset Layer |
out_network_analysis_layer |
Имя создаваемого слоя области обслуживания. | String |
impedance_attribute |
Стоимостный атрибут, который будет использован в качестве импеданса в анализе. | String |
travel_from_to (дополнительно) |
Указывает направление движения от или до пункта обслуживания.
Этот параметр позволяет найти различные области обслуживания в сети с односторонними ограничениями и различными импедансами на основе направления движения. Область обслуживания для службы доставки пиццы, например, может быть создана с учетом пути от пункта обслуживания, а область обслуживания больницы должна быть создана с учетом пути к пункту обслуживания. | String |
default_break_values (дополнительно) |
Вычисляемые значение импеданса по умолчанию, включая экстент области обслуживания. Значение по умолчанию можно переопределить путем задания граничного значения для пункта облуживания. Для создания концентрических областей можно использовать несколько полигональных границ. Например, для нахождения 2-, 3- и 5-минутной областей обслуживания для одного пункта обслуживания необходимо задать "2 3 5" в качестве значений параметра ограничения по умолчанию (числа 2, 3 и 5 следует разделить пробелами). | String |
polygon_type (дополнительно) |
Задает количество создаваемых полигонов.
Если данные приведены для городской территории с решеткоподобной сетью, разница между генерализованными и детализированными полигонами будет минимальной. Однако для горных и сельских дорог детализированные полигоны могут представлять существенно более точные результаты, чем генерализованные. | String |
merge (дополнительно) |
Задает параметры объединения полигонов, использующих общие граничные значения. Этот параметр применяется только при создании полигонов для нескольких пунктов обслуживания.
| String |
nesting_type (дополнительно) |
Используется для создания концентрических полигонов обслуживания в виде кругов или колец. Этот параметр применяется только при задании нескольких граничных значений для пунктов обслуживания.
| String |
line_type (дополнительно) |
Задает тип линий, которые создаются на основе анализа области обслуживания. При выборе параметра TRUE_LINES или TRUE_LINES_WITH_MEASURES для больших областей обслуживания возможно чрезмерное потребление ресурсов памяти.
| String |
overlap (дополнительно) |
Определяет, будут ли при вычислении линий областей обслуживания создаваться перекрывающиеся линии.
| Boolean |
split (дополнительно) |
| Boolean |
excluded_source_name [excluded_source_name,...] (дополнительно) |
Задает список сетевых источников, исключаемых в процессе создания полигонов. Геометрия используемых элементов от исключенных источников не включается в полигоны. Это позволяет исключить некоторые сетевые источники из процесса создания полигонов, например, если из-за них полигоны имеют неправильную форму или данные не согласуются с анализом области обслуживания. Допустим, при создании времени движения для области обслуживания в мультимодальной сети (автодороги + железные дороги) необходимо исключить железные дороги, чтобы точно определить области, доступные для автотранспорта. Исключение сетевого источника из полигонов области обслуживания не предотвращает обход этого источника. Исключение источников из полигонов областей обслуживания влияет только на форму полигонов этих областей. Если необходимо предотвратить прохождение заданного сетевого источника, следует создать соответствующее ограничение при определении набора сетевых данных. | String |
accumulate_attribute_name [accumulate_attribute_name,...] (дополнительно) | Список атрибутов стоимости будет суммироваться во время анализа. Эти атрибуты суммирования служат исключительно для справки; механизм расчета использует только атрибут стоимости, указанный параметром Атрибут импеданса (Impedance attribute), для вычисления маршрута. Для каждого суммируемого атрибута стоимости к маршрутам, являющимися выходными для механизма расчета, добавляется свойство Total_[Impedance]. | String |
UTurn_policy (дополнительно) |
Правила разворота на соединениях. При разрешении U-образных разворотов неявно предполагается, что механизм расчета может развернуться на соединении и продолжить движение по той же улице в обратную сторону. Учитывая, что соединения представляют собой пересечения улиц и тупики, различные транспортные средства могут разворачиваться на некоторых соединениях, но не на всех – это зависит от того, является ли соединение перекрестком или тупиком. Для соответствия, параметр правил разворотов в неявном виде указывает количество ребер, участвующих в соединении, что представляет собой валентность соединения. Ниже приведены допустимые значения для данного параметра; каждое из них сопровождается описанием значения в терминах валентности соединения.
Подсказка: При необходимости более точного определения правил разворотов, рассмотрите возможность добавления оценки задержек на универсальных поворотах к атрибуту сетевой стоимости или настройки его параметров, если таковой существует, а также обратите особое внимание на конфигурацию обратных поворотов. Кроме того, ознакомьтесь с заданным свойством CurbApproach для ваших сетевых положений. | String |
restriction_attribute_name [restriction_attribute_name,...] (дополнительно) |
Список атрибутов ограничений, которые будут применены во время анализа. | String |
polygon_trim (дополнительно) |
| Boolean |
poly_trim_value (дополнительно) |
Используется для указания расстояния, в пределах которого полигон обрезается. Параметр включает значение и единицу измерения расстояния. По умолчанию задано значение 100 метров. | Linear unit |
lines_source_fields (дополнительно) |
| Boolean |
hierarchy (дополнительно) |
The parameter is not used if a hierarchy attribute is not defined on the network dataset used to perform the analysis. In such cases, use "#" as the parameter value. | Boolean |
time_of_day (дополнительно) |
Время отправления или прибытия для пункта обслуживания слоя области обслуживания. Интерпретация этого значения зависит от того, какое направление движения задано – от пункта обслуживания или к нему.
Если выбран атрибут импеданса на основе движения, решение будет создано с учетом динамики транспорта на указанное время суток. Дату и время можно указать в виде 5/14/2012 10:30 AM. Вместо конкретной даты может быть задан день недели при помощи следующих условных дат.
Повторяя один и тот же анализ, но с разными значениями времени суток, можно увидеть, как изменяется доступность пункта обслуживания с течением времени. Например, пятиминутная область обслуживания вокруг пожарной части может быть большой рано утром, затем уменьшаться в часы пик, снова увеличиваться и так далее. | Date |
Пример кода
Выполните инструмент с использованием только необходимых параметров.
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeServiceAreaLayer("Transportation/Streets_ND","FireStationCoverage",
"Minutes")
Выполните инструмент с использованием всех параметров.
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.na.MakeServiceAreaLayer("Transportation/ParisNet","WarehouseCoverage",
"Drivetime","TRAVEL_FROM","5 10 15",
"SIMPLE_POLYS", "NO_OVERLAP","RINGS","TRUE_LINES",
"NON_OVERLAP","NO_SPLIT",
["Metro_Lines","Transfer_Stations",
"Transfer_Street_Station"],
["Meters","Drivetime"],"ALLOW_DEAD_ENDS_ONLY",
["Oneway"],"NO_TRIM_POLYS","",
"LINES_SOURCE_FIELDS")
В следующем автономном скрипте Python показано, как с помощью инструмента MakeServiceAreaLayer можно создавать 1-, 2- и 3-минутные области обслуживания вокруг пожарной части.
# Name: MakeServiceAreaLayer_Workflow.py
# Description: Generate 1-,2-,3- minute service area around fire stations and
# save the results to a layer file on disk. The service area
# polygons can be used to visualize the areas that do not have
# adequate coverage from the fire stations
# 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 = "FireStationCoverage"
impedanceAttribute = "TravelTime"
inFacilities = "Analysis/FireStations"
outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
#Create a new service area layer. We wish to generate the service area
#polygons as rings, so that we can easily visualize the coverage for any
#given location. We also want overlapping polygons as we can determine the
#number of fire stations that cover a given location. We use hierarchy to
#speed up the time taken to create the polygons. We will specify these
#options while creating the new service area layer.
outNALayer = arcpy.na.MakeServiceAreaLayer(inNetworkDataset, outNALayerName,
impedanceAttribute, "TRAVEL_FROM", "1 2 3",
"SIMPLE_POLYS", "NO_MERGE", "RINGS",
hierarchy = "USE_HIERARCHY")
#Get the layer object from the result object. The service layer can now be
#referenced using the layer object.
outNALayer = outNALayer.getOutput(0)
#Get the names of all the sublayers within the service area layer.
subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
#Stores the layer names that we will use later
facilitiesLayerName = subLayerNames["Facilities"]
#Load the fire stations as facilities using default field mappings and
#default search tolerance
arcpy.na.AddLocations(outNALayer, facilitiesLayerName, inFacilities, "", "")
#Solve the service area layer
arcpy.na.Solve(outNALayer)
#Save the solved service area 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)