Типы анализаторов, используемых в сети

Каждый атрибут, определенный в сети, должен иметь значения для каждого источника, участвующего в сети. Анализатор назначает значения для атрибута каждого источника. Если предыдущих версиях ArcGIS (ARC/INFO и ArcView GIS) значения для атрибутов назначались из поля в шейп-файле или области покрытия. В ArcGIS вычислитель поля назначает значения для сетевого атрибута из поля сетевого источника. Кроме того, ArcGIS предусматривает другие типы анализаторов, например, анализаторы констант, выражения поля, функций и скриптов.

Описание анализаторов приведено ниже.

Анализатор

Описание

Анализатор поля

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

Анализатор выражения поля

Модифицированный анализатор поля может использовать выражение поля в качестве значения вместо отдельного поля. В этом случае, можно построить выражение в диалоговом окне Оценки полей с помощью VBScript или Python. Например, если в качестве единиц измерения сетевого атрибута используются метры, а в исходных данных – футы, можно создать выражение для преобразования футов в метры при построении набора сетевых данных.

ПодсказкаПодсказка:

Выражения оценки полей, написанные на VBScript работают быстрее, чем выражения Python. Поэтому, следует попробовать использование VBScript; однако, при выборе языка для написания скриптов, имейте в виду следующее:

  • Большинство продуктов ArcGIS могут интерпретировать VBScript или Python.
  • ArcGIS for Server (Linux) может интерпретировать только Python.
  • Скрипт в выражении анализатора поля интерпретируется во время построения набора сетевых данных.
Логические следствия этих особенностей выглядят так:
  • Если вы планируете построить набор сетевых данных с помощью любого продукта ArcGIS, кроме ArcGIS for Server (Linux), вы можете написать скрипт на VBScript.
  • Если вы планируете построить набор сетевых данных с помощью ArcGIS for Server (Linux), необходимо написать скрипт на Python.
  • Если вы планируете построить набор сетевых данных с помощью любого продукта ArcGIS, кроме ArcGIS for Server (Linux), а затем использовать ArcGIS for Server (Linux) для анализа сети, ссылающегося на построенный набор сетевых данных, вы можете написать скрипт на VBScript.

Анализатор констант

Атрибутам можно присваивать постоянные значения. Это значение может быть числового типа (0, 1, 2) для атрибутов стоимости, дескриптора и иерархии либо булева типа – Использовать ограничение (Use Restriction) или Игнорировать ограничение (Ignore Restriction) для атрибута ограничения.

Анализатор функций

Анализатор функций рассчитывает значения атрибутов, применяя мультипликативную или логическую функцию к другому значению атрибута или параметра. Значения атрибутов числового типа получаются из выражения, которое умножает значение другого атрибута на некоторое число, например, DriveTime * 1.25. Значения атрибутов булева типа получаются из выражения, которое сравнивает значение другого атрибута со значением параметра, например MaxHeight < VehicleHeight.

Анализатор задержек из-за глобальных поворотов

Анализатор задержек из-за глобальных поворотов назначает значение стоимости по умолчанию для маневров между двумя элементами ребра. Стоимость определяется на основе угла поворота между двумя ребрами и классом дороги (магистральная, второстепенная или местного значения) ребер, обход которых совершается. Класс дороги указывают в диалоговом окне Диапазоны иерархии (Hierarchy Ranges) вместе с атрибутом иерархии. Например, при помощи анализатора задержек из-за глобальных поворотов можно настроить все левые повороты, которые определяются углами поворота, с дорог местного значения на второстепенные так, чтобы они занимали больше времени, чем левые повороты с одних дорог местного значения на другие. Можно также задать дополнительную стоимость для других маневров, например добавить 10-секундную задержку при движении прямо на перекрестке двух второстепенных дорог.

Более подробно о создании общих поворотов

Анализатор скриптов

Атрибуты можно назначить по результатам выполнения скрипта VBScript или Python. Это позволяет моделировать сложные атрибуты. В отличие от других анализаторов, анализатор скриптов не назначает значения во время построения сети. Вместо этого, он присваивает значения, когда использование данного атрибута требуется для конкретного сетевого анализа, например в момент решения. Если значения атрибута постоянно меняются, использование анализатора скриптов может обеспечить обновление атрибутов для каждого сетевого анализа.

ПодсказкаПодсказка:

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

Скрипты оценки полей, написанные на VBScript, работают быстрее, чем выражения Python. Поэтому, следует попробовать использование VBScript; однако, при выборе языка для написания скриптов, имейте в виду следующее:

  • Большинство продуктов ArcGIS могут интерпретировать VBScript или Python.
  • ArcGIS for Server (Linux) может интерпретировать только Python.
  • Скрипт в скрипте оценки интерпретируется во время анализа слоя набора сетевых данных.
Логические следствия этих особенностей выглядят так:
  • Если вы планируете выполнять анализ сети с помощью любого продукта ArcGIS, кроме ArcGIS for Server (Linux), вы можете написать скрипт на VBScript.
  • Если вы планируете выполнять анализ сети с помощью ArcGIS for Server (Linux), необходимо написать скрипт на Python.

Анализатор дорожного движения для ребра

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

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

Каждый источник соединения и каждый источник поворота могут иметь один анализатор. Каждый источник ребра может иметь два анализатора – по одному для каждого оцифрованного направления ребра.

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

Ниже приведена общая процедура по назначению анализатора.

  1. Выберите источник, для которого нужно назначить анализатор.
  2. Выберите тип анализатора: Поля (Field), Констант (Constant), Функций (Function) или Скриптов (Script).
  3. Укажите значение, которое должно быть присвоено сетевому атрибуту.

    Если значения берутся из поля, это поле будет выбрано в раскрывающемся списке. Если значения рассчитываются на основе выражения поля, задайте в качестве типа анализатора Поле и нажмите клавишу F12 на клавиатуре, чтобы открыть диалоговое окно Анализаторы поля. Либо щелкните правой кнопкой мыши на источнике в диалоговом окне Анализаторы (Evaluators) и выберите Свойства (Properties) в меню Значение (Value), чтобы открыть диалоговое окно Анализаторы поля (Field Evaluators).

Примеры анализаторов

Назначение значений для стоимостных атрибутов

Сетевой атрибут DriveTime на приведенном ниже рисунке использует анализатор поля для класса объектов-источников Улицы (Streets). Это видно из столбца Тип (Type). Столбец Значение (Value) показывает, что источником значений сетевых атрибутов для направления «из/в» источника Улицы (Streets) является поле FT_Minutes. Аналогично, значения для направления «в/из» источника Улицы (Streets) берутся из поля TF_Minutes.

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

Более подробноБолее подробно:

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

Назначение значений для стоимостных атрибутов

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

Анализатор функций, моделирующий более продолжительное время в пути

Назначение значений для ограничений

Атрибуты ограничений имеют булев тип данных. Поскольку элемент источника может либо использовать, либо игнорировать связанное с ним ограничение, атрибуту можно присвоить постоянное значение Использовать ограничение (Use Restriction) или Игнорировать ограничение (Ignore Restriction).

Назначение значений для ограничений

В качестве альтернативы, атрибуты ограничений можно получать при помощи анализатора функций, сравнивающего другой атрибут со значением параметра. Например, атрибут, моделирующий ограничение высоты транспортного средства, может использовать анализатор функций для сравнения предельной высоты, установленной для дороги, с фактической высотой транспортного средства, которая хранится в параметре атрибута. Если результат выражения – true, ограничение применяется к дороге; если результат ограничения – false, ограничение игнорируется. Исключение из этого правила: когда один из операндов (MaxHeight или VehicleHeight) равен нулю, выражение всегда принимает значение false.

Анализатор функций, моделирующий ограничение высоты

Более подробно об использовании параметров с сетевыми атрибутами

Атрибуты ограничений можно также назначать на основе поля в классе объектов-источников. Например, можно использовать анализатор выражения поля для получения результатов булева типа – если выражение принимает значение true, элемент использует ограничение; в противном случае элемент игнорирует ограничение.

Когда создается набор сетевых данных, дополнительный модуль Дополнительный модуль ArcGIS Network Analyst ищет по всем источникам общие используемые поля, такие как Oneway. Если поле Oneway найдено в каком-либо источнике, создается сетевой атрибут Oneway и для соответствующего источника назначаются значения на основе выражений поля.

Ниже показаны два снимка экрана с выражениями VBScript для атрибута одностороннего движения. Для каждого оцифрованного направления улицы имеется по одной оценке и выражению.

Выражение оценки поля для направления "из-в" (VBScript)
Выражение оценки поля для направления "в-из" (VBScript)

Эти выражения определяют допустимые направления движения на основе текстового значения в поле Oneway:

  • FT или F = движение разрешается только в оцифрованном направлении линейного объекта (в направлении «из/в»).
  • TF или T = движение разрешается только против оцифрованного направления линейного объекта (в направлении «в/из»).
  • N = движение запрещено в обоих направлениях.
  • Любое другое значение = движение разрешено в обоих направлениях.

ПримечаниеПримечание:

Хотя VBScript рекомендуется использовать для оценки сети, необходимо написать скрипты на Python, если оценка будет выполняться на ArcGIS for Server (Linux). Информация, вводимая в разделы Дологический код скрипта и Значение = диалогового окна оценки отличается для VBScript и Python.

Для VBScript, выражение вводится в Дологический код скрипта, который задает переменную, затем задает ее для поля Значение =.

Чтобы написать оценку Python, необходимо написать функцию в поле Дологический код скрипта, начав с ключевого слова def, вернуть значение с помощью ключевого слова return, затем вызвать функцию из поля Значение =. Ниже приведены два снимка экрана, где показано, как написать выражение оценки поля Python для задания одностороннего движения. Сравните этот пример с примером VBScript, показанным выше, чтобы лучше понять разницу между написанием выражений оценок на VBScript и Python.

Выражение оценки поля для направления "из-в" (Python)
Выражение оценки поля для направления "в-из" (Python)
Также, имейте в виду, что выражение if в примере Python использует составное логическое выражение, вместо простого логического выражения, чтобы захватить нулевые значения и избежать ошибок. Если value удалено из if value and value.upper() in ('N', 'FT', 'F'):, а из поля ONEWAY поступает нулевое значение, произойдет ошибка, поскольку функция value.upper() не может обрабатывать нулевые значения. Вместо этого, value будет оценено как false, и Python прекратит работу выражения if до оценки value.upper().

Параметр Использование ограничения (Restriction Usage)

С атрибутом ограничений всегда связан параметр Использование ограничения (Restriction Usage), который определяет, запрещены ли элементы, использующие ограничение, или их следует просто избегать, или они даже являются предпочтительными. В большинстве случаев для параметра Использование ограничения (Restriction Usage) устанавливается значение Запрещено (Prohibited), но есть несколько ситуаций, когда следует выбрать другое значение.

Более подробно о параметре Использование ограничения

Назначение иерархий

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

Уровни иерархии определяются последовательными целыми числами, начиная с единицы. Самое маленькое целое число – то есть единица – соответствует самому высокому уровню иерархии. Более высокие целые значения соответствуют более низким уровням иерархии. Например, если разбить сеть на три уровня иерархии, следует присвоить магистральным дорогам значение 1, второстепенным дорогам – значение 2, а дорогам третьего класса – значение 3. Магистральные дороги могут включать федеральные автострады, а дороги третьего класса – жилые улицы.

Иерархия в наборе сетевых данных часто назначается при помощи анализатора поля или анализатора выражения поля. Если класс объектов Улицы (Streets) имеет атрибут класса дороги (атрибут иерархии) со значениями 1, 2 и 3 – что соответствует федеральным автострадам, главным дорогам и второстепенным дорогам – то атрибут иерархии можно задать, просто используя анализаторы поля.

Назначение иерархии

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

Если класс объектов-источников имеет атрибут, который делит дороги на большее количество групп, чем требуется уровней иерархии, можно дополнительно разбить эти группы при помощи анализатора выражения поля, чтобы получить желаемое количество уровней иерархии. Например, пусть класс объектов Улицы (Streets) имеет целочисленное поле Func_Class со следующими шестью классами дорог:

Func_Class

Тип улицы

1

Федеральная автострада

2

Платная дорога федерального значения

3

Областное шоссе

4

Главная дорога

5

Улица местного значения

6

Въезд на скоростную автостраду

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

Уровень иерархии

Значения Func_Class

1

1 (федеральные автострады)

2 (платные дороги федерального значения)

6 (въезды на скоростные автострады)

2

3 (областные шоссе)

4 (главные дороги)

3

5 (улицы местного значения)

Чтобы смоделировать такой сценарий, добавьте скрипт в анализаторы поля атрибута иерархии. Можно выбрать скрипт VBScript или Python. В приведенном ниже примере, который написан в скрипте VBScript, создается переменная level и ей присваивается значение 3 (самый нижний уровень иерархии в данном примере). Далее, устанавливается следующее условие: если Func_Class равен 1, 2 или 6, назначить переменной level значение 1. Если Func_Class равен 3 или 4, назначить переменной level значение 2. Во всех прочих случаях значение остается равным 3. Текстовое поле Value содержит переменную level, поэтому сетевой атрибут иерархии выражается значением, которое он представляет в конце скрипта.

Задание уровней иерархии с использованием дологического скрипта VBScript

Это гарантирует, что всем элементам с Func_Class, равным 1, 2 или 6, будет присвоено значение иерархии, равное 1; всем элементам с Func_Class, равным 3 или 4, – значение иерархии, равное 2; а всем прочим (то есть элементам с Func_Class, равным 5) – значение иерархии, равное 3.

Прежние версииПрежние версии:

До ArcGIS 10, диалоговое окно Диапазоны иерархии (Hierarchy Ranges) использовалось для преобразования нескольких значений полей строго в три уровня иерархии. Однако сейчас единственное назначение этого диалогового окна – определение магистральных, второстепенных дорог и дорог местного значения при работе с анализатором задержек из-за глобальных поворотов, или задание диапазонов масштабов для отображения трафика. Поэтому диалоговое окно Диапазоны иерархии (Hierarchy Ranges) не влияет на атрибут иерархии для набора сетевых данных, а затрагивает только @@@анализатор задержек из-за глобальных поворотов.

Диалоговое окно Диапазоны иерархии (Hierarchy Ranges)
Щелкните Диапазоны (Ranges) на панели Атрибуты (Attributes), чтобы открыть диалоговое окно Диапазоны иерархии (Hierarchy Ranges).

Когда анализатор задержек из-за глобальных поворотов используется с атрибутом иерархии, ребра необходимо разделить на три класса: дороги местного значения, второстепенные дороги и магистральные дороги. Поскольку для атрибута иерархии можно задать любое количество уровней иерархии, диалоговое окно Диапазоны иерархии (Hierarchy Ranges) позволяет сгруппировать эти уровни строго в три класса дорог. В этом случае можно задать значения стоимости, которые по умолчанию добавляются для поворотов в зависимости от класса дороги. Например, можно добавить 10-секундную задержку для всех левых поворотов со второстепенных дорог на дороги местного значения и трехсекундную задержку – для всех левых поворотов с одних дорог местного значения на другие. Многие другие комбинации поворотов становятся возможными при использовании классов дорог с анализатором задержек из-за глобальных поворотов.

Более подробно о создании общих поворотов

Диапазоны масштабов можно настроить при просмотре трафика, чтобы при увеличении масштаба на карте отображались все дороги с трафиком. При уменьшении масштаба из отображения исключаются сначала местные, затем второстепенные, и только после этого – первостепенные дороги. Это позволяет избежать перегруженности карты трафика и отображать только те уровни иерархии для дорог, которые соответствуют различным масштабам карты. Диапазоны масштаба задаются с учетом иерархических диапазонов, определенных в диалоговом окне Иерархические диапазоны (Hierarchy Ranges).

Более подробно о визуализации дорожного движения

Связанные темы

5/28/2014