ServiceArea

Сводка

Класс ArcPy, предназначенный для выполнения анализа области обслуживания.

Описание

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

Синтаксис

ServiceArea (in_network)
ParameterОбъяснениеТип данных
in_network

Набор сетевых данных или сервис, который будет использоваться для сетевого анализа. Аргумент можно задать с помощью пути к каталогу с набором сетевых данных, объекту слоя набора сетевых данных, строки с именем слоя набора сетевых данных или URL-адреса портала для сервиса сетевого анализа. Сеть должна содержать хотя бы один режим перемещения.

Для использования URL-адреса портала необходимо выполнить вход на портал под учетной записью с правами на маршрутизацию.

Анализ расходует кредиты, если объект использует ArcGIS Online в качестве in_network. Дополнительные сведения см. в разделе Обзор сервисных кредитов.

String

Свойства

ВладениеОбъяснениеТип данных
accumulateAttributeNames
(чтение и запись)

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

По умолчанию пустой список.

String
allowSaveLayerFile
(чтение и запись)

Указывает, разрешается ли сохранение результата анализа в виде файла слоя, используя метод saveAsLayerFile получившегося объекта. True означает, что вы можете сохранить файл слоя. False означает, что сохранить нельзя. Значение по умолчанию True, если в анализе используется набор сетевых данных, и False при использовании сервиса портала. Разрешение сохранения файла слоя может замедлить анализ, если в анализе используется сервис портала.

Boolean
defaultImpedanceCutoffs
(чтение и запись)

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

Если используемый в анализе режим перемещения применяет основанный на времени атрибут импеданса, считается, что значения defaultImpedanceCutoffs выражены в единицах свойства timeUnits. Если используемый в анализе режим перемещения применяет основанный на расстоянии атрибут импеданса, считается, что значения defaultImpedanceCutoffs выражены в единицах свойства distanceUnits. Если атрибут импеданса режима передвижения не основан ни на времени, ни на расстоянии, считается, что значения defaultImpedanceCutoffs выражены в единицах атрибута импеданса. По умолчанию – [5, 10, 15].

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

Значения defaultImpedanceCutoffs могут замещаться по пунктам обслуживания с использованием поля Breaks входных пунктов обслуживания.

Double
distanceUnits
(чтение и запись)

Единицы, используемые для расстояния перемещения в выходных данных анализа. Независимо от единиц измерения в стоимостных атрибутах набора сетевых данных выходные данные будут трансформированы в единицы, заданные в этом свойстве. Возвращается свойство и задается в качестве значения в перечислении DistanceUnits. По умолчанию – DistanceUnits.Kilometers.

Object
excludeSourcesFromPolygonGeneration
(чтение и запись)

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

Возвращается свойство, которое задается в виде списка строк, в котором каждый элемент - имя источников ребер сети. по умолчанию список пустой, и это означает, что отсутствуют исключаемые при создания полигона источники ребер.

String
geometryAtCutoff
(чтение и запись)

Контролирует поведение выходных полигонов для одного пункта обслуживания, если в свойстве defaultImpedanceCutoffs задано несколько значений. Возвращается свойство и задается в качестве значения в перечислении ServiceAreaPolygonCutoffGeometry. По умолчанию – ServiceAreaPolygonCutoffGeometry.Rings.

Object
geometryAtOverlap
(чтение и запись)

Определяет поведение выходных областей обслуживания нескольких пунктов обслуживания друг относительно друга. Возвращается свойство и задается в качестве значения в перечислении ServiceAreaOverlapGeometry. По умолчанию – ServiceAreaOverlapGeometry.Overlap.

Object
ignoreInvalidLocations
(чтение и запись)

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

Boolean
networkDataSource
(только чтение)

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

String
outputType
(чтение и запись)

Тип выходных данных, которые создаются в результате анализа. Выберите, будут ли создаваться полигоны, линии или и то, и другое. Возвращается свойство и задается в качестве значения в перечислении ServiceAreaOutputType. По умолчанию – ServiceAreaOutputType.Polygons.

Object
overrides
(чтение и запись)

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

Значение этого параметра должно быть задано в JavaScript Object Notation (JSON). К примеру, корректным значением является следующее: {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. Замещающее имя всегда заключено в двойные кавычки. Эти значения могут быть числовыми, булевыми или текстовыми.

Значение по умолчанию является пустым, что означает отсутствие замещения каких-либо настроек механизма расчета.

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

String
polygonBufferDistance
(чтение и запись)

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

Единицы для значений буферного расстояния задаются в свойстве polygonBufferDistanceUnits. По умолчанию используется 100.

Double
polygonBufferDistanceUnits
(чтение и запись)

Единицы измерения для свойства polygonBufferDistance. Возвращается свойство и задается в качестве значения в перечислении DistanceUnits. По умолчанию – DistanceUnits.Meters.

Object
polygonDetail
(чтение и запись)

Задает нужный уровень детализации для выходных полигонов. Подробнее об уровне детализации полигонов. Возвращается свойство и задается в качестве значения в перечислении ServiceAreaPolygonDetail. По умолчанию – ServiceAreaPolygonDetail.Standard.

Object
searchQuery
(чтение и запись)

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

Дополнительные сведения о способе размещения входных данных в сети

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

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

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

По умолчанию запрос не используется.

List
searchTolerance
(чтение и запись)

Максимальный допуск поиска для расположения входных объектов в сети. Свойство возвращается и устанавливается как двойное, и единицы этого значения доступны через свойство searchToleranceUnits. Значение по умолчанию равно 5000.

Дополнительные сведения о способе размещения входных данных в сети

Double
searchToleranceUnits
(чтение и запись)

Единицы измерения для свойства searchTolerance. Возвращается свойство и задается в качестве значения в перечислении DistanceUnits. По умолчанию – DistanceUnits.Meters.

Object
timeOfDay
(чтение и запись)

Время суток для использования в анализе. Значение по умолчанию равно None, означающее, что анализ не будет зависеть от времени.

DateTime
timeUnits
(чтение и запись)

Единицы, используемые для времени перемещения в выходных данных анализа. Независимо от единиц измерения в стоимостных атрибутах набора сетевых данных выходные данные будут трансформированы в единицы, заданные в этом свойстве. Возвращается свойство и задается в качестве значения в перечислении TimeUnits. По умолчанию – TimeUnits.Minutes.

Object
timeZone
(чтение и запись)

Определяет, будет ли указанное в свойстве timeOfDay время интерпретироваться в местном времени входных местоположений или во всемирном координированном времени (UTC). Свойство возвращается и задается в качестве участвующего в перечислении TimeZoneUsage и применяется, только если свойство timeOfDayNone. По умолчанию – TimeZoneUsage.LocalTimeAtLocations.

Object
travelDirection
(чтение и запись)

Направление движения относительно пунктов обслуживания. Возвращается свойство и задается в качестве значения в перечислении TravelDirection. По умолчанию – TravelDirection.FromFacility.

Направление движения - TravelDirection.FromFacility, а значение timeOfDay таким, чтобы усреднить время отправления от пункта обслуживания. Если направление движения - TravelDirection.ToFacility, значение timeOfDay таким, чтобы усреднить время прибытия к пункту обслуживания.

Object
travelMode
(чтение и запись)

Режим передвижения, используемый для анализа.

Значение возвращается и устанавливается как объект arcpy.nax.TravelMode, но оно также может быть установлено с использованием текстового имени режима передвижения или строки, содержащей действительное представление JSON режима передвижения. По умолчанию используется режим передвижения, определенный в наборе сетевых данных, используемом для анализа.

Более подробно о режимах передвижения

Object

Обзор метода

МетодОбъяснение
count (input_type)

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

fieldMappings (input_type, {use_location_fields}, {list_candidate_fields})

Создает словарь, который сопоставляет входной тип с объектами arcpy.nax.NAClassFieldMap, позволяющими вам сопоставлять поля ваших входных данных свойствам механизма расчета. Словарь может использоваться в качестве входных данных аргумента load метода field_mappings.

fieldNames (input_type, {use_location_fields})

Получает список имен полей, поддерживаемых заданным входным типом.

insertCursor (input_type, field_names)

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

load (input_type, features, {field_mappings}, {append}, {max_features})

Задает входные объекты, которые будут участвовать в анализе.

solve ()

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

Методы

count (input_type)
ParameterОбъяснениеТип данных
input_type

Тип подсчитываемых входных объектов.

Параметр должен быть задан с помощью перечисления ServiceAreaInputDataType.

Object
Значение отраженного сигнала
Тип данныхОбъяснение
Integer

Число строк.

fieldMappings (input_type, {use_location_fields}, {list_candidate_fields})
ParameterОбъяснениеТип данных
input_type

Тип входных данных, для которых возвращаются соответствия полей.

Параметр должен быть задан с помощью перечисления ServiceAreaInputDataType.

Object
use_location_fields

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

Дополнительные сведения о полях местоположения сети и способе размещения входных данных в сети

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

(Значение по умолчанию — False)

Boolean
list_candidate_fields
[list_candidate_fields,...]

Список объектов arcpy.Field для создания сопоставленных имен полей, которые можно получить для класса объектов или таблицы с помощью функции arcpy.ListFields. Имена полей, не сопоставленные полю по входному типу, также будут возвращены на карте. Вызов метода load с этими дополнительными полями добавит их во входные объекты механизма расчета, и поля могут быть переданы и включены в выходные данные. Если аргумент не задан, соответствия полей будут созданы только со значениями соответствующих свойств по умолчанию.

(Значение по умолчанию — None)

Field
Значение отраженного сигнала
Тип данныхОбъяснение
Dictionary

Словарь, в котором ключами являются имена полей, а значениями - объекты arcpy.nax.NAClassFieldMap.

fieldNames (input_type, {use_location_fields})
ParameterОбъяснениеТип данных
input_type

Тип входных данных, для которых возвращаются поддерживаемые имена полей.

Параметр должен быть задан с помощью перечисления ServiceAreaInputDataType.

Object
use_location_fields

Определяет, будут ли поля сетевого местоположения включены в возвращаемый список имён полей. Поля местоположения сети описывают точку сети, в которой расположен объект. Вы можете использовать поля местоположения сети для более точного контроля, как входные данные вашего анализа располагаются в сети в целях сохранения времени при вызове метода solve, поскольку механизм решения не будет вычислять поля местоположения из геометрии входных данных. Поле местоположения для класса объектов можно вычислить при помощи инструмента Вычислить местоположения.

Дополнительные сведения о полях местоположения сети и способе размещения входных данных в сети

Если значение аргумента - True, возвращаемый словарь сопоставления полей будет содержать только поля местоположения в сети. Значение по умолчанию - False; список имён полей не будет содержать поля местоположения в сети.

(Значение по умолчанию — False)

Boolean
Значение отраженного сигнала
Тип данныхОбъяснение
String

Список имен полей, поддерживаемых заданным входным типом.

insertCursor (input_type, field_names)
ParameterОбъяснениеТип данных
input_type

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

Параметр должен быть задан с помощью перечисления ServiceAreaInputDataType.

Object
field_names
[field_names,...]

Список имен полей входного типа, значения в которых вы хотите задать при вставке строк с помощью курсора. Вы можете получить имена полей, которые поддерживаются входным типом с помощью метода fieldNames. Помимо обычных полей вы можете задать геометрию входных данных с использованием одного из токенов геометрии:

  • SHAPE@XYКортеж x, y координат центроида объекта.
  • SHAPE@XYZКортеж x, y, z координат центроида объекта. Этот токен поддерживается, только если для геометрии включена координата z.
  • SHAPE@JSON Строка Esri JSON, представляющая геометрию.
  • SHAPE@WKBСтандартное двоичное (well-known binary, WKB) представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде непрерывного потока байтов.
  • SHAPE@WKTСтандартное текстовое (well-known text, WKT) представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде текстовой строки.
  • SHAPE@Объект geometry (геометрия) для пространственного объекта.

Токены SHAPE@XY и SHAPE@XYZ поддерживаются только точечными входными типами.

String
Значение отраженного сигнала
Тип данныхОбъяснение
Object

Объект SolverInsertCursor, который можно использовать для записи объектов.

load (input_type, features, {field_mappings}, {append}, {max_features})
ParameterОбъяснениеТип данных
input_type

Тип загружаемого входного объекта.

Параметр должен быть задан с помощью перечисления ServiceAreaInputDataType.

Object
features

Загружаемые входные объекты. Этот параметр поддерживает следующие входные типы:

В слой будут загружаться только выбранные пространственные объекты. Если слой содержит определяющий запрос, загрузятся только те объекты, которые будут видны с помощью этого определяющего запроса. Этот метод работает также и в среде геообработки Экстент; Будут загружаться только объекты в заданном экстенте.

String
field_mappings

Словарь соответствий входных типов и объектов arcpy.nax.NAClassFieldMap отображает соответствие полей входных объектов. Корректные входные данные для этого параметра могут быть созданы с помощью метода fieldMappings.

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

(Значение по умолчанию — None)

Dictionary
append

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

(Значение по умолчанию — True)

Boolean
max_features

Максимальное число объектов, которые можно загрузить во входной тип. Это полезно, если при создании инструмента или сервиса вы захотите, чтобы выводилась ошибка в случаях, когда размер входных данных превышает доступные ресурсы. Метод load возвратит arcpy.nax.LimitError, если число входных объектов превысит ограничение, равное max_features.

Если значение не задано, ограничение по числу входных объектов не устанавливается.

(Значение по умолчанию — None)

Integer
solve ()
Значение отраженного сигнала
Тип данныхОбъяснение
Object

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

Пример кода

Пример ServiceArea

Выполняет анализ области обслуживания.

# An example showing how to perform service area analysis using a feature class for input facilities.
import arcpy
arcpy.CheckOutExtension("network")

nds = "C:/data/NorthAmerica.gdb/Routing/Routing_ND"
nd_layer_name = "Routing_ND"
input_facilities = "C:/data/io.gdb/Facilities"
output_polygons = "C:/data/io.gdb/ServiceAreaPolygons"

# Create a network dataset layer and get the desired travel mode for analysis
arcpy.nax.MakeNetworkDatasetLayer(nds, nd_layer_name)
nd_travel_modes = arcpy.nax.GetTravelModes(nd_layer_name)
travel_mode = nd_travel_modes["Driving Time"]

# Instantiate a ServiceArea solver object
service_area = arcpy.nax.ServiceArea(nd_layer_name)
# Set properties
service_area.timeUnits = arcpy.nax.TimeUnits.Minutes
service_area.defaultImpedanceCutoffs = [5, 10, 15]
service_area.travelMode = travel_mode
service_area.outputType = arcpy.nax.ServiceAreaOutputType.Polygons
service_area.geometryAtOverlap = arcpy.nax.ServiceAreaOverlapGeometry.Split
# Load inputs
service_area.load(arcpy.nax.ServiceAreaInputDataType.Facilities, input_facilities)
# Solve the analysis
result = service_area.solve()

# Export the results to a feature class
if result.solveSucceeded:
    result.export(arcpy.nax.ServiceAreaOutputDataType.Polygons, output_polygons)
else:
    print("Solved failed")
    print(result.solverMessages(arcpy.nax.MessageSeverity.All))