Сводка
Создает слой сетевого анализа области обслуживания, устанавливает свойства анализа и решает данный анализ. Данный инструмент идеально подходит для настройки сервиса геообработки области обслуживания в веб-сети. Область обслуживания сети – это регион, охватывающий все улицы, которые могут быть доступны в пределах заданного расстояния или времени пути от одного или более пункта обслуживания.
Области обслуживания обычно используются для визуализации и измерения доступности. Например, полигон вокруг продуктового магазина для трехминутного времени езды может определить жителей, которые смогут добраться до магазина в течение трех минут и, скорее всего, будут совершать в нем покупки.
Более подробно о выходных данных инструмента Создать области обслуживания
Использование
В диалоговом окне инструмента есть разнообразные дополнительные параметры, сгруппированные для удобства работы в следующие шесть категорий:
- Расширенный анализ
- Барьеры
- Пользовательский режим передвижения
- Сетевые положения
- Создание полигонов
- Возможности сервиса
Синтаксис
arcpy.na.GenerateServiceAreas(Facilities, Break_Values, Break_Units, Network_Dataset, Service_Areas, {Travel_Direction}, {Time_of_Day}, {UTurn_Policy}, {Point_Barriers}, {Line_Barriers}, {Polygon_Barriers}, {Time_Attribute}, {Time_Attribute_Units}, {Distance_Attribute}, {Distance_Attribute_Units}, {Use_Hierarchy_in_Analysis}, {Restrictions}, {Attribute_Parameter_Values}, {Maximum_Snap_Tolerance}, {Exclude_Restricted_Portions_of_the_Network}, {Feature_Locator_WHERE_Clause}, {Polygons_for_Multiple_Facilities}, {Polygon_Overlap_Type}, {Detailed_Polygons}, {Polygon_Trim_Distance}, {Polygon_Simplification_Tolerance}, {Maximum_Facilities}, {Maximum_Number_of_Breaks}, {Maximum_Features_Affected_by_Point_Barriers}, {Maximum_Features_Affected_by_Line_Barriers}, {Maximum_Features_Affected_by_Polygon_Barriers}, {Maximum_Break_Time_Value}, {Maximum_Break_Distance_Value}, {Force_Hierarchy_beyond_Break_Time_Value}, {Force_Hierarchy_beyond_Break_Distance_Value}, {Save_Output_Network_Analysis_Layer}, {Time_Zone_for_Time_of_Day}, {Travel_Mode}, {Overrides})
Параметр | Объяснение | Тип данных |
Facilities | Пункты обслуживания, вокруг которых создаются области обслуживания. Набор объектов – пунктов обслуживания имеет три атрибута: ObjectID: Управляемое системой поле ID. Shape: Поле геометрии, указывающее географическое положение объекта сетевого анализа. Name: Имя пункта обслуживания. Если имя пустое или NULL, то оно автоматически создается во время решения. | Feature Set |
Break_Values | Определяет размер и число полигонов области обслуживания, которые нужно создать для каждого пункта обслуживания. Единицы определяются Единицами граничных значений. При запуске инструмента Создать области обслуживания происходит взаимодействие между следующими параметрами, на которое стоит обратить внимание: Граничные значения, Единицы граничных значений, и либо Атрибут времени, либо Атрибут расстояния. При этом Граничные значения и Единицы граничных значений определяют насколько далеко или долго может распространяться область обслуживания вокруг пункта или пунктов обслуживания. Каждый из параметров Атрибут времени и Атрибут расстояния определяет один атрибут стоимости сети. Однако используется только один из этих двух атрибутов стоимости, а тот, который выбран механизмом расчета, соответствует значению Единицы граничных значений. То есть когда вы задаете Единицы граничных значений на основе времени, например, секунды или минуты, инструмент выполняет расчет, используя атрибут стоимости, заданный параметром Атрибут времени. Когда вы указываете основанные на расстоянии Единицы граничных значений, например, километры или мили, то используется атрибут стоимости, заданный параметром Атрибут расстояния. Для создания концентрических областей обслуживания для каждого пункта обслуживания можно использовать несколько границ полигонов. Например, чтобы определить области обслуживания для одного пункта обслуживания с расстоянием 2, 3 и 5 миль, следует ввести 2 3 5. В качестве разделителя используется пробел. Задайте для Единиц граничных значений Мили и убедитесь, что вы выбрали сетевой атрибут на основе расстояния для параметра Атрибут расстояния. | String |
Break_Units | Единицы для параметра Граничные значения.
Инструмент Создать области обслуживания выбирает использование сетевого атрибута стоимости, указанного в параметре Атрибут времени или Атрибут расстояния, в зависимости от того, на чем основаны выбранные вами единицы – на времени или на расстоянии. Инструмент выполняет необходимые преобразования единиц в том случае, если Единицы измерения граничных значений отличаются от единиц соответствующего атрибута стоимости времени или расстояния. | String |
Network_Dataset | Набор сетевых данных, который будет анализироваться. Наборы сетевых данных чаще всего представляют улично-дорожные сети, но могут представлять и другие типы транспортных сетей. Набор сетевых данных должен содержать хотя бы один атрибут стоимости, основанный на времени, и один, основанный на расстоянии. | Network Dataset Layer |
Service_Areas | Выходная рабочая область и имя выходных объектов. Рабочая область должна существовать. Выходная рабочая область по умолчанию – in_memory. | Feature Class |
Travel_Direction (Дополнительный) | Выберите направление перемещения, используемое для создания полигонов области обслуживания, – к пунктам обслуживания или от них.
Направление перемещения может изменять форму полигонов, так как импедансы противоположных сторон улиц могут отличаться, или улицы могут быть с односторонним движением. Выбираемое направление зависит от характера анализа областей обслуживания в конкретном случае. Область обслуживания для службы доставки пиццы, например, может быть создана с учетом пути от пункта обслуживания, а область обслуживания больницы должна быть создана с учетом пути к пункту обслуживания, так как время движения пациента в больницу является важнейшим значением. | String |
Time_of_Day (Дополнительный) | Время отправления или прибытия для пункта обслуживания. Интерпретация этого значения зависит от того, какое направление движения задано – от пункта обслуживания или к нему.
Чтобы данный параметр вступил в силу, ваш набор сетевых данных должен включать данные трафика. Повторяя один и тот же анализ, но с разными значениями Времени суток, можно увидеть, как изменяется доступность пункта обслуживания с течением времени. Например, пятиминутная область обслуживания вокруг пожарной части может быть большой рано утром, затем уменьшаться в утренний час пик, снова увеличиваться и т.д. | Date |
UTurn_Policy (Дополнительный) | Правила разворота на соединениях. При разрешении U-образных разворотов неявно предполагается, что механизм расчета позволяет разворот на соединении и продолжение движения по той же улице в обратную сторону. Учитывая, что соединения представляют собой пересечения улиц и тупики, различные транспортные средства могут разворачиваться на некоторых соединениях, но не на всех – это зависит от того, является ли соединение перекрестком или тупиком. Для соответствия, параметр правил разворотов в неявном виде указывает количество ребер, участвующих в соединении, что представляет собой валентность соединения. Ниже приведены допустимые значения для данного параметра; каждое из них сопровождается описанием значения в терминах валентности соединения.
Значение этого параметра перезаписывается, если для Режима передвижения (Travel_Mode в Python) установлено значение, отличное от Пользовательский.. | String |
Point_Barriers (Дополнительный) | Определяет точечные барьеры, которые разделены на два типа: ограничения и дополнительной стоимости. Они временно ограничивают прохождение по сети или добавляют импеданс к точкам сети. Точечные барьеры задаются набором объектов, а значения атрибута, которые вы указываете для точечных объектов, определяют, являются ли они ограничениями или барьерами дополнительной стоимости. Ниже приведены поля в таблице атрибутов с описанием. ObjectID: Управляемое системой поле ID. Shape: Поле геометрии, показывающее географическое положение объекта сетевого анализа. Name: Имя барьера. BarrierType: Указывает, ограничивает ли барьер перемещение полностью или добавляет стоимость при прохождении через него. Существует две опции:
Используйте значение 0 для Ограничения и 2 для Дополнительной стоимости. AdditionalCost: AdditionalCost показывает величину импеданса, добавляемую при перемещении области обслуживания через барьер. Единица для данного поля аналогична единицам, используемым для Единиц граничных значений. | 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 (Дополнительный) | Определяет сетевой атрибут стоимости для использования, если для Единиц граничных значений заданы единицы времени. Инструмент выполняет необходимые преобразования единиц времени в том случае, если Единицы граничных значений отличаются от заданных здесь единиц атрибута стоимости. Другими словами, временные единицы граничных значений и сетевой атрибут стоимости не обязательно должны быть одинаковыми. Значение этого параметра перезаписывается, если для Режима передвижения (Travel_Mode в Python) установлено значение, отличное от Пользовательский.. | String |
Time_Attribute_Units (Дополнительный) | Единицы сетевого атрибута стоимости, определенные параметром Атрибут времени. Это просто информационный параметр, который можно изменить только прямым редактированием набора сетевых данных. Нет необходимости его изменять, поскольку преобразование единиц граничных значений в единицы атрибута стоимости выполняется автоматически. Значение этого параметра перезаписывается, если для Режима передвижения (Travel_Mode в Python) установлено значение, отличное от Пользовательский.. | String |
Distance_Attribute (Дополнительный) | Определяет сетевой атрибут стоимости для использования, если для Единиц граничных значений заданы единицы расстояния. Инструмент выполняет необходимые преобразования единиц расстояния в том случае, если Единицы граничных значений отличаются от заданных здесь единиц атрибута стоимости. Другими словами, единицы расстояния для граничных значений и сетевого атрибута стоимости не обязательно должны быть одинаковыми. Значение этого параметра перезаписывается, если для Режима передвижения (Travel_Mode в Python) установлено значение, отличное от Пользовательский.. | String |
Distance_Attribute_Units (Дополнительный) | Единицы сетевого атрибута стоимости, определенные параметром Атрибут расстояния. Это просто информационный параметр, который можно изменить только прямым редактированием набора сетевых данных. Нет необходимости его изменять, поскольку преобразование единиц граничных значений в единицы атрибута стоимости выполняется автоматически. Значение этого параметра перезаписывается, если для Режима передвижения (Travel_Mode в Python) установлено значение, отличное от Пользовательский.. | String |
Use_Hierarchy_in_Analysis (Дополнительный) |
Этот параметр отключен, если в наборе сетевых данных, используемом для выполнения анализа, не задан атрибут иерархии. Можно использовать параметр Использовать иерархию, если расстояние превышает, чтобы механизм расчета принудительно применял иерархию, даже если параметр Использовать иерархию в анализе задан как false. Этот параметр игнорируется, если только для Режима передвижения не выбрано Пользовательский. При моделирования в режиме построения маршрута для пешехода рекомендуется выключить иерархию, поскольку она разработана для построения маршрутов автомобилей.
Параметр не используется, если в наборе сетевых данных, используемом для выполнения анализа, не задан атрибут иерархии. В таких случаях используйте в качестве значения параметра "#". Можно использовать параметр Force_Hierarchy_Beyond_Distance , чтобы механизм расчета принудительно применял иерархию, даже если параметр Use_Hierarchy_in_Analysis задан как False. Этот параметр игнорируется, за исключением случая, когда Travel_Mode задан как CUSTOM. При моделирования в режиме построения маршрута для пешехода рекомендуется выключить иерархию, поскольку она разработана для построения маршрутов автомобилей. | Boolean |
Restrictions [restriction,...] (Дополнительный) | Определяет, какие сетевые атрибуты ограничения будут учитываться во время расчета. Значение этого параметра перезаписывается, если для Режима передвижения (Travel_Mode в Python) установлено значение, отличное от Пользовательский. | String |
Attribute_Parameter_Values (Дополнительный) | Определяет значения параметра для атрибутов сети, имеющих параметры. Набор записей имеет два столбца, которые используются вместе для уникальной идентификации параметров, а также другой столбец, который определяет значение параметра. Значение этого параметра перезаписывается, если для Режима передвижения (Travel_Mode в Python) установлено значение, отличное от Пользовательский.. Набор записей значений параметра атрибута имеет связанные атрибуты. Ниже приведены поля в таблице атрибутов с описанием. 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 (Дополнительный) | Используется для указания расстояния, в пределах которого полигон обрезается. Это может быть необходимо, когда ваши данные являются разреженными, и вы не желаете охватывать области обслуживания, не содержащие пространственных объектов. Отсутствие значения или значение NULL для данного параметра означает, что полигоны области обслуживания не следует обрезать. При использовании иерархии значение данного параметра игнорируется. | 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 (Дополнительный) | Ограничивает величину параметра Граничное значение, которое может использоваться при расчете областей обслуживания на основании времени. Данный параметр помогает регулировать объем вычислений, необходимый для получения решения. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. NULL соответствует отсутствию ограничений. | Double |
Maximum_Break_Distance_Value (Дополнительный) | Ограничивает величину параметра Граничное значение, которое может использоваться при расчете областей обслуживания на основании расстояния. Данный параметр помогает регулировать объем вычислений, необходимый для получения решения. Например, вы можете присвоить низкое значение данному параметру для бесплатной версии созданного вами сервиса, и использовать более высокое значение для версии сервиса с оплачиваемой подпиской. NULL соответствует отсутствию ограничений. | Double |
Force_Hierarchy_beyond_Break_Time_Value (Дополнительный) | Определяет граничное значение, после которого механизм расчета применит иерархию даже в том случае, если иерархия не была разрешена при вычислении областей обслуживания на основании времени. Вычисление областей обслуживания для высоких граничных значений при использовании сетевой иерархии приводит к выполнению меньшего объема обработки, чем вычисление аналогичных областей обслуживания без использования иерархии. Данный параметр помогает регулировать объем вычислений, необходимый для получения решения. Значение NULL определяет отсутствие иерархии, при этом всегда будет учитываться значение параметра Использовать иерархию в анализе. Если входной набор сетевых данных не поддерживает иерархию, то указание значения для данного параметра приведет к ошибке. В этом случае необходимо использовать значение NULL. | Double |
Force_Hierarchy_beyond_Break_Distance_Value (Дополнительный) | Определяет граничное значение, после которого механизм расчета применит иерархию даже в том случае, если иерархия не была разрешена при вычислении областей обслуживания на основании расстояния. Вычисление областей обслуживания для высоких граничных значений при использовании сетевой иерархии приводит к выполнению меньшего объема обработки, чем вычисление аналогичных областей обслуживания без использования иерархии. Данный параметр помогает регулировать объем вычислений, необходимый для получения решения. Значение NULL определяет отсутствие иерархии, при этом всегда будет учитываться значение параметра Использовать иерархию в анализе. Если входной набор сетевых данных не поддерживает иерархию, то указание значения для данного параметра приведет к ошибке. В этом случае необходимо использовать значение NULL. | Double |
Save_Output_Network_Analysis_Layer (Дополнительный) |
В любом случае возвращается класс объектов с полигонами областей обслуживания. Однако администратор сервера может также выбрать вывод и слоя сетевого анализа, чтобы настройку и результаты работы инструмента можно было отладить с использованием средств управления Network Analyst в среде ArcGIS Desktop. Это намного упрощает процесс отладки. В ArcGIS Desktop выходное местоположение слоя сетевого анализа по умолчанию – это временная папка. Вы можете определить местоположение временной папки, используя значение arcpy.env.scratchFolder среды геообработки. Выходной слой сетевого анализа хранится в виде LYR-файла, имя которого начинается на _ags_gpna, а затем следует буквенно-числовое значение GUID. | Boolean |
Time_Zone_for_Time_of_Day (Дополнительный) | Указывает часовой пояс или пояса параметра Время суток (Time of Day).
Вне зависимости от значения параметра Часовой пояс для времени суток все пункты обслуживания должны быть в одном часовом поясе, когда параметр Время суток имеет ненулевое значение, и параметром Полигоны для нескольких пунктов обслуживания задано создание объединенных или неперекрывающихся полигонов. | String |
Travel_Mode (Дополнительный) | Выберите режим передвижения для анализа. CUSTOM можно выбрать всегда. Чтобы появились другие режимы, они должны быть представлены в наборе сетевых данных в параметре Network_Dataset. (Функция arcpy.na.GetTravelModes содержит словарь объектов режима движения для класса сетевых объектов, а свойство name возвращает имя объекта режима передвижения.) Если режим определен в наборе сетевых данных и обеспечивает замещение значений параметров для моделирования маршруты передвижения легковых и грузовых автомобилей, пешеходов и других режимы передвижения. Выбрав режим здесь, вам не требуется указывать значения для следующих параметров, которые замещаются значениями, указанными в наборе сетевых данных:
| String |
Overrides (Дополнительный) | Для управления поведением при расчете можно использовать дополнительные настройки. Для этого параметра должно быть задано значение JavaScript Object Notation (JSON) в формате {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. Замещающее имя всегда заключено в двойные кавычки. Эти значения могут быть числовыми, булевыми или текстовыми. | String |
Производные выходные данные
Имя | Объяснение | Тип данных |
Output_Service_Areas | Область, в которую можно попасть из исходных точек, в пределах указанного времени или расстояния. | Набор объектов |
Solve_Succeeded | Определяет, был ли анализ областей обслуживания успешным. | Логические |
Output_Network_Analysis_Layer | Слой сетевого анализа со свойствами, как настроенные в параметрах инструмента, который может использоваться для дальнейшего анализа или исправления ошибок на карте. | Файл |
Пример кода
GenerateServiceAreas, пример 1 (окно Python)
Выполнение инструмента с использованием необходимых параметров из окна Python.
import arcpy
facilities = arcpy.FeatureSet()
facilities.load("FireStations")
arcpy.na.GenerateServiceAreas(facilities, "1 2 3", "Minutes", "Streets_ND",
"in_memory\\FireStationServiceAreas")
GenerateServiceAreas, пример 2 (автономный скрипт)
В следующем автономным скрипте 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 occurred on line %i" % tb.tb_lineno
print str(e)
Параметры среды
Информация о лицензиях
- Basic: Требуется Network Analyst
- Standard: Требуется Network Analyst
- Advanced: Требуется Network Analyst