Доступно с лицензией Network Analyst.
Каждый атрибут, определенный в сети, должен иметь значения для каждого источника, участвующего в сети. Анализатор назначает значения для атрибута каждого источника. Если предыдущих версиях ArcGIS (ARC/INFO и ArcView GIS) значения для атрибутов назначались из поля в шейп-файле или области покрытия. В ArcGIS вычислитель поля назначает значения для сетевого атрибута из поля сетевого источника. Кроме того, ArcGIS предусматривает другие типы анализаторов, например, анализаторы констант, выражения поля, функций и скриптов.
Описание анализаторов приведено ниже.
Анализатор | Описание |
---|---|
Анализатор поля | Наиболее распространенный способ назначения значений для сетевого атрибута – определение отдельного поля, которое будет использоваться для оценки сетевого атрибута во время составления набора сетевых данных. Например, анализатор поля можно использовать в случаях, когда значение определяет измерение, такое как длина каждого участка дороги в метрах. |
Анализатор выражения поля | Модифицированный анализатор поля может использовать выражение поля в качестве значения вместо отдельного поля. В этом случае, можно построить выражение в диалоговом окне Оценки полей с помощью VBScript или Python. Например, если в качестве единиц измерения сетевого атрибута используются метры, а в исходных данных – футы, можно создать выражение для преобразования футов в метры при построении набора сетевых данных. |
Анализатор констант | Атрибутам можно присваивать постоянные значения. Это значение может быть числового типа (0, 1, 2) для атрибутов стоимости, дескриптора и иерархии либо булева типа – Использовать ограничение (Use Restriction) или Игнорировать ограничение (Ignore Restriction) для атрибута ограничения. |
Анализатор функций | Анализатор функций рассчитывает значения атрибутов, применяя мультипликативную или логическую функцию к другому значению атрибута или параметра. Значения атрибутов числового типа получаются из выражения, которое умножает значение другого атрибута на некоторое число, например, DriveTime * 1.25. Значения атрибутов булева типа получаются из выражения, которое сравнивает значение другого атрибута со значением параметра, например MaxHeight < VehicleHeight. |
Анализатор задержек из-за глобальных поворотов | Анализатор задержек из-за глобальных поворотов назначает значение стоимости по умолчанию для маневров между двумя элементами ребра. Стоимость определяется на основе угла поворота между двумя ребрами и классом дороги (магистральная, второстепенная или местного значения) ребер, обход которых совершается. Класс дороги указывают в диалоговом окне Диапазоны иерархии (Hierarchy Ranges) вместе с атрибутом иерархии. Например, при помощи анализатора задержек из-за глобальных поворотов можно настроить все левые повороты, которые определяются углами поворота, с дорог местного значения на второстепенные так, чтобы они занимали больше времени, чем левые повороты с одних дорог местного значения на другие. Можно также задать дополнительную стоимость для других маневров, например добавить 10-секундную задержку при движении прямо на перекрестке двух второстепенных дорог. |
Анализатор скриптов | Атрибуты можно назначить по результатам выполнения скрипта VBScript или Python. Это позволяет моделировать сложные атрибуты. В отличие от других анализаторов, анализатор скриптов не назначает значения во время построения сети. Вместо этого, он присваивает значения, когда использование данного атрибута требуется для конкретного сетевого анализа, например в момент решения. Если значения атрибута постоянно меняются, использование анализатора скриптов может обеспечить обновление атрибутов для каждого сетевого анализа. |
Анализатор дорожного движения для ребра | Анализаторы дорожного движения для ребра предназначены для обработки данных о дорожном движении. Они рассчитывают значения времени в пути для определенного времени суток и дня недели на основе статистических или текущих данных. Они включают резервные стоимостные атрибуты, которые позволяют определять время в пути в рабочие и выходные дни, когда данные о продолжительности поездки для конкретного времени суток недоступны. Анализаторы дорожного движения для ребра также имеют стоимостный атрибут, не зависящий от времени, который Network Analyst использует при определении последовательности остановок в анализе маршрута или в задаче выбора маршрута транспорта. |
Каждый источник соединения и каждый источник поворота могут иметь один анализатор. Каждый источник ребра может иметь два анализатора – по одному для каждого оцифрованного направления ребра.
Анализатор по умолчанию можно назначить для ребер, соединений и поворотов. Если для определенного источника не задан явный анализатор, значения для этого источника назначаются анализатором по умолчанию.
Ниже приведена общая процедура по назначению анализатора.
- Выберите источник, для которого нужно назначить анализатор.
- Выберите тип анализатора: Поля (Field), Констант (Constant), Функций (Function) или Скриптов (Script).
- Укажите значение, которое должно быть присвоено сетевому атрибуту.
Если значения берутся из поля, это поле будет выбрано в раскрывающемся списке. Если значения рассчитываются на основе выражения поля, задайте в качестве типа анализатора Поле и нажмите клавишу 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 для атрибута одностороннего движения. Для каждого оцифрованного направления улицы имеется по одной оценке и выражению.
Эти выражения определяют допустимые направления движения на основе текстового значения в поле Oneway:
- FT или F = движение разрешается только в оцифрованном направлении линейного объекта (в направлении «из/в»).
- TF или T = движение разрешается только против оцифрованного направления линейного объекта (в направлении «в/из»).
- N = движение запрещено в обоих направлениях.
- Любое другое значение = движение разрешено в обоих направлениях.
Параметр Использование ограничения (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, поэтому сетевой атрибут иерархии выражается значением, которое он представляет в конце скрипта.
Это гарантирует, что всем элементам с Func_Class, равным 1, 2 или 6, будет присвоено значение иерархии, равное 1; всем элементам с Func_Class, равным 3 или 4, – значение иерархии, равное 2; а всем прочим (то есть элементам с Func_Class, равным 5) – значение иерархии, равное 3.