Создать области обслуживания (Network Analyst)
Краткая информация
Создает слой сетевого анализа области обслуживания, устанавливает свойства анализа и решает данный анализ. Данный инструмент идеально подходит для настройки сервиса геообработки области обслуживания в веб-сети. Область обслуживания сети – это регион, охватывающий все улицы, которые могут быть доступны в пределах заданного расстояния или времени пути от одного или более пункта обслуживания.
Области обслуживания обычно используются для визуализации и измерения доступности. Например, полигон вокруг продуктового магазина для трехминутной поездки может определить жителей, которые смогут добраться до магазина в течение трех минут и, скорее всего, будут совершать в нем покупки.
Инструменты Создать области обслуживания и Создать слой области обслуживания похожи, но предназначены для различных целей. Используйте инструмент Создать области обслуживания при настройке сервиса геообработки; это упростит процесс настройки. В противном случае используйте Создать слой области обслуживания. Также используйте инструмент Создать слой области обслуживания, если необходимо создать линии области обслуживания; инструмент Создать области обслуживания не предоставляет функции для создания линий.
Для создания сервиса геообработки области обслуживания с использованием инструмента Создать области обслуживания вам необходимо только настроить один инструмент и опубликовать инструмент напрямую, как сервис. Иначе вам необходимо создать модель при помощи Создать слой области обслуживания , правильно подключить ее к различным другим инструментам и опубликовать модель для создания сервиса геообработки области обслуживания. Для получения информации о настройке сервиса полигонов времени в пути с использованием учебных данных, см. Пример сервиса геообработки: полигоны времени в пути. Можно также использовать сервис создания областей обслуживания ArcGIS Online. Это сервис, который запускается как инструмент геообработки в ArcMap, доступен через другие приложения и содержит высококачественные данные дорог на весь мир.
Использование
В диалоговом окне инструмента есть разнообразные дополнительные параметры, сгруппированные для удобства работы в следующие шесть категорий:
- Расширенный анализ
- Барьеры
- Набор сетевых данных
- Сетевые положения
- Создание полигонов
- Возможности сервиса
Более подробно о выходных данных инструмента Создать области обслуживания
Синтаксис
Параметр | Объяснение | Тип данных |
Facilities |
Пункты обслуживания, вокруг которых создаются области обслуживания. Набор объектов - пунктов обслуживания имеет три атрибута: ObjectID: Управляемое системой поле ID. Геометрия (Shape): Поле геометрии, показывающее географическое положение объекта сетевого анализа. Имя: Имя пункта обслуживания. Если имя пустое или NULL, то оно автоматически создается во время решения. | Feature Set |
Break_Values |
Определяет размер и число полигонов области обслуживания, которые нужно создать для каждого пункта обслуживания. Единицы определяются Единицами граничных значений. При запуске инструмента Создать области обслуживания (Generate Service Areas) происходит взаимодействие между следующими параметрами, на которое стоит обратить внимание: Граничные значения (Break Values), Единицы граничных значений (Break Units), и либо Атрибут времени (Time Attribute), либо Атрибут расстояния (Distance Attribute). При этом Граничные значения (Break Values) и Единицы граничных значений (Break Units) определяют насколько далеко или долго может распространяться область обслуживания вокруг пункта или пунктов обслуживания. Каждый из параметров Атрибут времени (Time Attribute) и Атрибут расстояния (Distance Attribute) определяет один сетевой атрибут стоимости. Однако используется только один из этих двух атрибутов стоимости, а тот, который выбран механизмом расчета, соответствует значению Единицы граничных значений (Break Units); т.е., когда вы задаете Единицы граничных значений на основе времени, например, секунды или минуты, инструмент выполняет расчет, используя атрибут стоимости, заданный параметром Атрибут времени (Time Attribute). Когда вы указываете основанные на расстоянии Единицы граничных значений (Break Unit), например, километры или мили, то используется атрибут стоимости, заданный параметром Атрибут расстояния (Distance Attribute). Для создания концентрических областей обслуживания для каждого пункта обслуживания можно использовать несколько границ полигонов. Например, чтобы задать двух-, трех- и пятимильную области обслуживания для одного пункта обслуживания, следует ввести "2 3 5", разделяя значения пробелом. Задайте для Единиц граничных значений (Break Units) Мили (Miles) и убедитесь, что вы выбрали сетевой атрибут на основе расстояния для параметра Атрибут расстояния (Distance Attribute). | String |
Break_Units |
Единицы для параметра Граничные значения.
Инструмент Создать области обслуживания (Generate Service Areas) выбирает использование сетевого атрибута стоимости, указанного в параметре Атрибут времени (Time Attribute) или Атрибут расстояния (Distance Attribute), в зависимости от того, на чем основаны выбранные вами единицы – на времени или на расстоянии. Инструмент выполняет необходимые преобразования единиц в том случае, если единицы граничных значений отличаются от единиц соответствующего атрибута стоимости времени или расстояния. | String |
Network_Dataset |
Набор сетевых данных, который будет анализироваться. Наборы сетевых данных чаще всего представляют улично-дорожные сети, но могут представлять и другие типы транспортных сетей. Набор сетевых данных должен содержать хотя бы один атрибут стоимости, основанный на времени, и один, основанный на расстоянии. | Network Dataset Layer |
Service_Areas |
Выходная рабочая область и имя выходных объектов. Рабочая область должна существовать. Выходная рабочая область по умолчанию: in_memory. | Feature Class |
Travel_Direction (дополнительно) |
Выберите направление перемещения, используемое для создания полигонов области обслуживания, - к пунктам обслуживания или от них.
Направление перемещения может изменять форму полигонов, так как импедансы противоположных сторон улиц могут отличаться, или улицы могут быть с односторонним движением. Выбираемое направление зависит от характера анализа областей обслуживания в конкретном случае. Область обслуживания для службы доставки пиццы, например, может быть создана с учетом пути от пункта обслуживания, а область обслуживания больницы должна быть создана с учетом пути к пункту обслуживания, так как время движения пациента в больницу является важнейшим значением. | String |
Time_of_Day (дополнительно) |
Время отправления или прибытия для пункта обслуживания. Интерпретация этого значения зависит от того, какое направление движения задано – от пункта обслуживания или к нему.
Чтобы данный параметр вступил в силу, ваш набор сетевых данных должен включать данные трафика. Повторяя один и тот же анализ, но с разными значениями времени суток, можно увидеть, как изменяется доступность пункта обслуживания с течением времени. Например, пятиминутная область обслуживания вокруг пожарной части может быть большой рано утром, затем уменьшаться в утренний час пик, снова увеличиваться и т.д. | Date |
UTurn_Policy (дополнительно) |
Правила разворота на соединениях. При разрешении U-образных разворотов неявно предполагается, что механизм расчета позволяет разворот на соединении и продолжение движениея по той же улице в обратную сторону. Учитывая, что соединения представляют собой пересечения улиц и тупики, различные транспортные средства могут разворачиваться на некоторых соединениях, но не на всех – это зависит от того, является ли соединение перекрестком или тупиком. Для соответствия, параметр правил разворотов в неявном виде указывает количество ребер, участвующих в соединении, что представляет собой валентность соединения. Ниже приведены допустимые значения для данного параметра; каждое из них сопровождается описанием значения в терминах валентности соединения.
Подсказка: Для более точного определения правил разворота можно добавить глобальный параметр задержки на повороте в сетевой атрибут стоимости или настроить его, если он уже существует, а также уделить особое внимание конфигурации обратных поворотов. Кроме того, можно задать для сетевых положений свойство CurbApproach. | String |
Point_Barriers (дополнительно) | Определяет точечные барьеры, которые разделены на два типа: ограничения и дополнительной стоимости. Они временно ограничивают прохождение по сети или добавляют импеданс к точкам сети. Точечные барьеры задаются набором объектов, а значения атрибута, которые вы указываете для точечных объектов, определяют, являются ли они ограничениями или барьерами дополнительной стоимости. Ниже приведены поля в таблице атрибутов и их описания. ObjectID: Управляемое системой поле ID. Shape: Поле геометрии, показывающее географическое положение объекта сетевого анализа. Name: Имя барьера. BarrierType: Указывает, ограничивает ли барьер перемещение полностью или добавляет стоимость при прохождении через него. Существует две опции:
Используйте значение 0 для Ограничения и 2 для Дополнительной стоимости. AdditionalCost: AdditionalCost указывает величину импеданса, добавляемую при перемещении области обслуживания через барьер. Единица для данного поля аналогична единицам, используемым для Единиц граничных значений (Break Units). | Feature Set |
Line_Barriers (дополнительно) |
Определяет линейные барьеры, которые временно ограничивают прохождение через них. Линейные барьеры определяются набором объектов. Ниже приведены поля в таблице атрибутов с описанием. ObjectID: Управляемое системой поле ID. Shape: Поле геометрии, показывающее географическое положение объекта сетевого анализа. Name: Имя барьера. | Feature Set |
Polygon_Barriers (дополнительно) | Определяет полигональные барьеры, которые разделены на два типа: ограничения и полигональные барьеры масштабированной стоимости. Они временно ограничивают перемещение или масштабируют импеданс в покрываемых ими частях сети. Полигональные барьеры задаются набором объектов, а значения атрибута, которые вы указываете для полигональных объектов, определяют, являются ли они ограничениями или барьерами дополнительной стоимости. Ниже приведены поля в таблице атрибутов с описанием. ObjectID: Управляемое системой поле ID. Shape: Поле геометрии, показывающее географическое положение объекта сетевого анализа. Name: Имя барьера. BarrierType: Указывает, ограничивает ли барьер перемещение полностью или масштабирует стоимость прохождения через него. Существует две опции:
Используйте значение 0 для Ограничения и 1 для Масштабированной стоимости. ScaledCostFactor: ScaledCostFactor указывает величину, на которую умножается импеданс при перемещении области обслуживания через барьер. | Feature Set |
Time_Attribute (дополнительно) |
Определяет сетевой атрибут стоимости для использования, если для Единиц граничных значений заданы единицы времени. Инструмент выполняет необходимые преобразования единиц времени в том случае, если Единицы граничных значений (Break Units) отличаются от заданных здесь единиц атрибута стоимости. Другими словами, временные единицы граничных значений и сетевой атрибут стоимости не обязательно должны быть одинаковыми. | String |
Time_Attribute_Units (дополнительно) |
Единицы сетевого атрибута стоимости, определенного параметром Атрибут времени (Time Attribute). Это просто информационный параметр, который можно изменить только прямым редактированием набора сетевых данных. Нет необходимости его изменять, поскольку преобразование единиц граничных значений в единицы атрибута стоимости выполняется автоматически. | String |
Distance_Attribute (дополнительно) | Определяет сетевой атрибут стоимости для использования, если для Единиц граничных значений (Break Units) заданы единицы расстояния. Инструмент выполняет необходимые преобразования единиц расстояния в том случае, если Единицы граничных значений (Break Units) отличаются от заданных здесь единиц атрибута стоимости. Другими словами, единицы расстояния для граничных значений и сетевого атрибута стоимости не обязательно должны быть одинаковыми. | String |
Distance_Attribute_Units (дополнительно) |
Единицы сетевого атрибута стоимости, определенные параметром Атрибут расстояния (Distance Attribute). Это просто информационный параметр, который можно изменить только прямым редактированием набора сетевых данных. Нет необходимости его изменять, поскольку преобразование единиц граничных значений в единицы атрибута стоимости выполняется автоматически. | String |
Use_Hierarchy_in_Analysis (дополнительно) |
Параметр не используется, если в наборе сетевых данных, используемом для выполнения анализа, не задан атрибут иерархии. В таких случаях используйте в качестве значения параметра "#". | Boolean |
Restrictions (дополнительно) |
Определяет, какие сетевые атрибуты ограничения будут учитываться во время решения. | String |
Attribute_Parameter_Values (дополнительно) |
Определяет значения параметра для атрибутов сети, имеющих параметры. Набор записей имеет два столбца, которые используются вместе для уникальной идентификации параметров, а также другой столбец, который определяет значение параметра. Набор записей значений параметра атрибута имеет связанные атрибуты. Ниже приведены поля в таблице атрибутов с описанием. ObjectID: Управляемое системой поле ID. AttributeName: Имя сетевого атрибута, чей параметр атрибута задан строкой таблицы. ParameterName: Имя параметра атрибута, чье значение задано строкой таблицы. (Параметры типа объекта не могут быть обновлены с помощью данного инструмента.) ParameterValue: Значение, которое вы хотите задать для параметра атрибута. Если значение не указано, для параметра атрибута устанавливается значение NULL. | Record Set |
Maximum_Snap_Tolerance (дополнительно) |
Максимальный допуск замыкания представляет собой самое дальнее расстояние, которое использует Network Analyst для поиска расположения или повторного расположения точки на сети. Выполняется поиск подходящих ребер или соединений, далее выполняется замыкание точки на ближайший объект. Если подходящее положение не было найдено в пределах максимального допуска замыкания, то объект обозначается, как неразмещенный. | Linear unit |
Exclude_Restricted_Portions_of_the_Network (дополнительно) |
| Boolean |
Feature_Locator_WHERE_Clause (дополнительно) |
Выражение SQL, используемое для создания поднабора исходных пространственных объектов, определяющего элементы сети, на которых могут быть расположены пункты обслуживания. Синтаксис данного параметра состоит их двух частей: первая – имя источника класса пространственных объектов (после которого имеется пробел), вторая – выражение SQL. Чтобы записать выражение SQL для двух или более классов пространственных объектов, их необходимо разделить точкой с запятой. Чтобы пункты обслуживания не располагались на шоссе с ограниченным доступом, например, напишите выражение SQL, аналогичное следующему, с целью исключить такие источники объектов: "Streets" "FUNC_CLASS not in('1', '2')". Обратите внимание, что барьеры игнорируют Условие Where локатора объектов во время загрузки. | String |
Polygons_for_Multiple_Facilities (дополнительно) |
Выберите способ создания полигонов областей обслуживания в случае наличия в анализе нескольких пунктов обслуживания.
| String |
Polygon_Overlap_Type (дополнительно) |
Указывает опцию создания концентрических полигонов обслуживания в виде кругов или колец. Этот параметр применяется только при задании нескольких граничных значений для пунктов обслуживания.
| String |
Detailed_Polygons (дополнительно) | Определяет параметр создания генерализованных или детализированных полигонов.
| Boolean |
Polygon_Trim_Distance (дополнительно) |
Используется для указания расстояния, в пределах которого полигон обрезается. Это может быть необходимо, когда ваши данные являются разреженными, и вы не желаете охватывать области обслуживания, не содержащие пространственных объектов. Отсутствие значения или нулевое значение для данного параметра означает, что полигоны области обслуживания не следует обрезать. При использовании иерархии значение данного параметра игнорируется. | Linear unit |
Polygon_Simplification_Tolerance (дополнительно) |
Определяет степень упрощения геометрии полигона. Упрощение сохраняет исходную форму с использованием основных точек полигона и удаляет все остальные точки. Указываемое расстояние упрощения является максимальным допустимым смещением упрощенного полигона по отношению к исходному. Упрощение полигона уменьшает количество вершин и приводит к сокращению времени отработки. | Linear unit |
Maximum_Facilities (дополнительно) |
Ограничивает количество пунктов обслуживания, которые могут быть добавлены в анализ области обслуживания. Данный параметр помогает вам управлять объемом обработки, который выполняется при вычислении. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. Значение NULL соответствует отсутствию ограничений. | Long |
Maximum_Number_of_Breaks (дополнительно) |
Ограничивает количество границ, которые могут быть добавлены в анализ области обслуживания. Данный параметр помогает вам управлять объемом обработки, который выполняется при вычислении. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. Значение NULL соответствует отсутствию ограничений. | Long |
Maximum_Features_Affected_by_Point_Barriers (дополнительно) | Ограничивает количество объектов, на которые влияют точечные барьеры Данный параметр помогает вам управлять объемом обработки, который выполняется при вычислении. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. Значение NULL соответствует отсутствию ограничений. | Long |
Maximum_Features_Affected_by_Line_Barriers (дополнительно) |
Ограничивает количество объектов, на которые влияют линейные барьеры Данный параметр помогает вам управлять объемом обработки, который выполняется при вычислении. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. Значение NULL соответствует отсутствию ограничений. | Long |
Maximum_Features_Affected_by_Polygon_Barriers (дополнительно) |
Ограничивает количество объектов, на которые влияют полигональные барьеры. Данный параметр помогает вам управлять объемом обработки, который выполняется при вычислении. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. Значение NULL соответствует отсутствию ограничений. | Long |
Maximum_Break_Time_Value (дополнительно) |
Ограничивает величину параметра Граничное значение (Break Value), которое может использоваться при расчете областей обслуживания на основании времени. Данный параметр помогает вам управлять объемом обработки, который выполняется при вычислении. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. Значение NULL соответствует отсутствию ограничений. | Double |
Maximum_Break_Distance_Value (дополнительно) | Ограничивает величину параметра Граничное значение (Break Value), которое может использоваться при расчете областей обслуживания на основании расстояния. Данный параметр помогает вам управлять объемом обработки, который выполняется при вычислении. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. Значение NULL соответствует отсутствию ограничений. | Double |
Force_Hierarchy_beyond_Break_Time_Value (дополнительно) |
Определяет граничное значение, после которого механизм расчета применит иерархию даже в том случае, если иерархия не была разрешена при вычислении областей обслуживания на основании времени. Вычисление областей обслуживания для высоких граничных значений при использовании сетевой иерархии приводит к выполнению меньшего объема обработки, чем вычисление аналогичных областей обслуживания без использования иерархии. Данный параметр помогает регулировать объем вычислений, необходимый для получения решения. Значение NULL означает, что использование иерархии будет определяться только значением параметра Использовать иерархию в анализе (Use Hierarchy in Analysis). Если входной набор сетевых данных не поддерживает иерархию, то указание значения для данного параметра приведет к ошибке. В этом случае необходимо использовать значение NULL. | Double |
Force_Hierarchy_beyond_Break_Distance_Value (дополнительно) |
Определяет граничное значение, после которого механизм расчета применит иерархию даже в том случае, если иерархия не была разрешена при вычислении областей обслуживания на основании расстояния. Вычисление областей обслуживания для высоких граничных значений при использовании сетевой иерархии приводит к выполнению меньшего объема обработки, чем вычисление аналогичных областей обслуживания без использования иерархии. Данный параметр помогает регулировать объем вычислений, необходимый для получения решения. Значение NULL означает, что использование иерархии будет определяться только значением параметра Использовать иерархию в анализе (Use Hierarchy in Analysis). Если входной набор сетевых данных не поддерживает иерархию, то указание значения для данного параметра приведет к ошибке. В этом случае необходимо использовать значение NULL. | Double |
Save_Output_Network_Analysis_Layer (дополнительно) |
В любом случае возвращается класс объектов с полигонами областей обслуживания. Администратор сервера может выбрать вывод слоя сетевого анализа, при этом настройка и результаты работы инструмента могут быть отлажены с использованием средств управления Network Analyst в среде ArcGIS for Desktop. Это намного упрощает процесс отладки. В ArcGIS for Desktop выходное местоположение слоя сетевого анализа по умолчанию – это временная папка. Вы можете определить местоположение временной папки по значению arcpy.env.scratchFolder параметра среды геообработки. Выходной слой сетевого анализа хранится в виде LYR-файла, имя которого начинается на _ags_gpna, а затем следует буквенно-числовое значение GUID. | Boolean |
Time_Zone_for_Time_of_Day (дополнительно) | Указывает часовой пояс или пояса параметра Время суток (Time of Day).
Вне зависимости от значения параметра Часовой пояс для времени суток (Time Zone for Time of Day) все пункты обслуживания должны быть в одном часовом поясе, когда параметр Время суток (Time of Day) имеет ненулевое значение, и параметром Полигоны для нескольких пунктов обслуживания (Polygons for Multiple Facilities) задано создание объединенных или неперекрывающихся полигонов. | String |
Пример кода
Выполнение инструмента с использованием необходимых параметров из окна Python.
import arcpy
facilities = arcpy.FeatureSet()
facilities.load("FireStations")
arcpy.na.GenerateServiceAreas(facilities, "1 2 3", "Minutes", "Streets_ND",
"in_memory\\FireStationServiceAreas")
В следующем автономным скрипте Python показано, как GenerateServiceAreas может использоваться для определения достижения магазина за определенное время. Он показывает процесс создания 5-минутной области обслуживания вокруг положения магазина в различное время дня. Такой тип анализа может быть полезен, например, для магазина пиццы, чтобы проследить изменение области обслуживания в 5-минутной доступности в зависимости от текущих условий дорожного движения.
# Name: GenerateServiceAreas_Workflow.py
# Description: Generate a 5 minute service area around a store location at
# different times in a day. Such analysis can be useful, for example
# for a pizza store, to see how the area that can be reached within
# 5 minutes from the store changes based on the current traffic
# conditions.
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
import datetime
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"
impedanceAttribute = "TravelTime"
breakValues = "5"
breakUnits = "Minutes"
inFacilities = "Analysis/ExistingStore"
outGeodatabase = "C:/data/output/ServiceAreaOutput.gdb"
serviceArea = "in_memory\\ServiceAreas"
dateFieldName = "StartTime"
nameField = "Name"
#use today at 8 AM as the start time and then increment it by one hour
startTime = datetime.datetime(1899,12,30,8,0,0)
#Create a new feature set with same schema as Facilities parameter in
#Generate Service Areas tool. Load the feature from the ExistingStore
#feature class in the feature set
facilities = arcpy.GetParameterValue("GenerateServiceAreas_na",0)
facilities.load(inFacilities)
#Create an empty feature class with same spatial reference as the
#network dataset and a Date field called StartTime and a text field called Name
outServiceAreas = arcpy.management.CreateFeatureclass(outGeodatabase, "ServiceAreas",
"POLYGON","","","",
inNetworkDataset).getOutput(0)
arcpy.management.AddField(outServiceAreas, dateFieldName, "DATE")
arcpy.management.AddField(outServiceAreas, nameField, "TEXT")
#Open an insert cursor on the feature class to add new polygons
cursor = arcpy.da.InsertCursor(outServiceAreas, ("SHAPE@", nameField,
dateFieldName))
#Geneate a 5 minute service area around the store at every one hour interval
#from 8 AM to 8 PM. Copy the output service area to a new feature class
for i in range(1,14):
timeFormat = startTime.time().strftime("%I %p")
print "Generating {0} {1} service area at {2}".format(breakValues,breakUnits,
timeFormat)
arcpy.na.GenerateServiceAreas(facilities,breakValues,breakUnits,
inNetworkDataset, serviceArea, "TRAVEL_FROM",
startTime, Time_Attribute=impedanceAttribute)
#Get the shape from the output service area so that it can be inserted
#in the feature class
with arcpy.da.SearchCursor(serviceArea,("SHAPE@", nameField)) as inputRows:
row = inputRows.next()
cursor.insertRow((row[0],row[1],startTime))
startTime = startTime + datetime.timedelta(seconds=3600)
del cursor
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)