Добавление часовых поясов в набор сетевых данных
Когда транспортное средство пересекает часовой пояс, время суток (и, возможно, дата) для него меняются. Если часовые пояса не настроены для набора сетевых данных, охватывающего несколько часовых поясов, то значения времени суток в анализе могут стать источником ошибок. Более того, если часовые пояса игнорируются, то наборы сетевых данных, содержащие сведения о дорожном движении, могут возвращать неправильные значения времени в пути, а наборы сетевых данных с текущим трафиком могут отображать состояние на дорогах на неверный момент времени. Чтобы избежать этих проблем, можно добавить к набору сетевых данных атрибут для обработки часовых поясов.
В данном разделе объясняется, почему может потребоваться настройка часовых поясов для набора сетевых данных, и описываются способы настройки часовых поясов с использованием сетевого атрибута-дескриптора.
Для наборов сетевых данных с текущим трафиком конфигурация атрибута часовых поясов требуется во всех случаях; однако для наборов данных, не поддерживающих текущий трафик, такая конфигурация требуется далеко не всегда. Например, если набор сетевых данных не предназначен для отображения текущего трафика и если он полностью укладывается в один часовой пояс, конфигурация часовых поясов для него не требуется. Настройка часовых поясов также не нужна, если для выполнения сетевого анализа никогда не используется импеданс на основе времени со временем начала.
Важность часовых поясов для сетевого анализа
Чтобы лучше понять, почему столь важно задать атрибут часового пояса для набора сетевых данных, содержащего сведения о дорожном движении, который охватывает несколько часовых поясов, предположим, что в 8:13 анализ маршрута выполняется для двух смежных ребер, начинаясь с одного ребра в восточном часовом поясе и продолжаясь вдоль другого ребра в центральном часовом поясе. Если атрибут часового пояса не настроен, набор сетевых данных будет игнорировать разницу во времени и полученные значения времени в пути для ребер будут основаны только на одном часовом поясе. Следовательно, вместо времени в пути для ребра в центральном часовом поясе для 7:13 может быть получено время в пути для 8:13 или для другого времени суток, в зависимости от установленного часового пояса по умолчанию.
Если часовые пояса настроены правильно, стоимость ребра в восточном часовом поясе оценивается для 8:13 по местному времени, а стоимость ребра в центральном часовом поясе – для 7:13 по местному времени. Тем самым сохраняется точность значений времени в пути для набора сетевых данных, содержащего сведения о дорожном движении. Направления также показывают изменения часового пояса.
Независимо от того, содержит ли набор сетевых данных, охватывающий несколько часовых поясов, сведения о дорожном движении, настройка атрибута часового пояса упрощает ввод и интерпретацию свойств времени суток, таких как временные окна и время прибытия или отправления, поскольку их значения времени всегда относятся к местному времени. Предположим, например, что добавлены две остановки – одна в восточном часовом поясе, а другая в центральном часовом поясе – и нужно задать для обеих остановок временные окна с 8:00 до 9:00 по местному времени. Если часовые пояса не настроены, необходимо вручную преобразовать одно или оба значения временных окон в часовой пояс по умолчанию. Если же часовые пояса настроены для набора сетевых данных, то введенные значения времени автоматически переводятся в местное время лежащего в основе ребра и Network Analyst производит внутренние преобразования времени.
Как наборы сетевых данных обрабатывают часовые пояса
Часовые пояса имеют временной сдвиг относительно универсального глобального времени (Coordinated Universal Time, UTC). Местные правила определяют, каким должен быть сдвиг относительно UTC; выполняется ли переход на летнее время и, если да, то сдвиг и диапазоны дат для летнего времени. Эти правила могут часто меняться; отслеживать все текущие и прошлые правила трудно. К счастью, в более поздних версиях операционных систем Windows эта задача решается: все изменения часовых поясов в мире передаются на компьютер пользователя через обновления Windows. Часовые пояса и их правила хранятся в реестре Windows.
Дополнительный модуль Дополнительный модуль ArcGIS Network Analyst извлекает из реестра Windows значения сдвига относительно UTC и правила перехода на летнее время для часовых поясов. На концептуальной схеме внизу показан общий вид этого алгоритма в действии.
Поле TimeZoneID для исходных объектов ребра показывает, в каком часовом поясе расположены объекты. Значение TimeZoneID – это внешний ключ в таблице часовых поясов, которая находится в той же рабочей области, что и набор сетевых данных, и содержит список часовых поясов. Поле MSTimeZone в таблице часовых поясов также является внешним ключом, но для записи в реестре Windows. (обычно в качестве идентификаторов и внешних ключей используются целые числа, но реестр использует для идентификации часовых поясов текстовые значения). Из реестра Network Analyst получает информацию о сдвиге относительно UTC и диапазонах дат летнего времени.
Как показано на рисунке, прежде чем можно будет настроить часовые пояса для набора сетевых данных, нужно создать таблицу часовых поясов и поле TimeZoneID для классов исходных пространственных объектов ребра. При наличии этих компонентов можно создать сетевой атрибут часового пояса.
Создание таблицы часовых поясов
Чтобы автоматически создать и заполнить таблицу часовых поясов, запустите инструмент Заполнить таблицу часовых поясов (Populate Time Zone Table), который можно загрузить из ресурсных центров ArcGIS. Либо выполните приведенные ниже шаги, чтобы вручную создать таблицу часовых поясов. Для этой последовательности шагов и далее предполагается, что пользователь знаком с созданием и редактированием таблиц в ArcGIS.
- Создайте таблицу в той же рабочей области, где находится набор сетевых данных, и дайте ей имя, например, TimeZones.
Если рабочей областью является база геоданных, то таблицу нужно создавать на уровне базы геоданных, хотя набор сетевых данных должен располагаться на один уровень глубже, то есть в наборе классов объектов.
- Добавьте в таблицу текстовый атрибут с именем MSTimeZone.Внимание:
Имя текстового атрибута должно быть MSTimeZone, поскольку это ключевое слово для Network Analyst.
Длина атрибута должна соответствовать самому длинному имени часового пояса, который будет добавлен в таблицу. По состоянию на март 2010 года самое длинное имя часового пояса в реестре Windows составляло 61 символ.
- Если необходимо, добавьте еще одно текстовое поле для описания часового пояса.
Дополнительные сведения о преимуществах добавления подобного поля описания приведены в следующем шаге.
- После создания таблицы необходимо заполнить поле MSTimeZone именами часовых поясов. Это можно выполнить вручную или задать в программе.
Чтобы выполнить эту процедуру программным способом, начните с поиска объекта TimeZoneFactory в ресурсных центрах ArcGIS. Либо выполните приведенные ниже подшаги, чтобы вручную найти значения в реестре Windows.
- Откройте редактор реестра.
В Windows 7 или Vista нажмите кнопку Пуск (Start), введите regedit в текстовое поле Начать поиск (Start Search) и нажмите клавишу Ввод (ENTER).
В Windows XP щелкните Пуск (Start) > Выполнить (Run), чтобы открыть диалоговое окно Выполнить (Run). Введите regedit в текстовое поле Открыть (Open) и нажмите клавишу Ввод (ENTER).
- Разделы реестра выглядят как папки. Разверните следующие строки: HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > WindowsNT > CurrentVersion > Time Zones.
В разделе Часовые Пояса (Time Zones) открывается длинный список подчиненных разделов. Каждый раздел в списке представляет часовой пояс. Значения, введенные в новую таблицу часовых поясов для атрибута MSTimeZone, должны точно совпадать с написанием имен этих разделов, чтобы Network Analyst мог в нужный момент найти их в реестре.
Внимание:Убедитесь, что вы не внесли никаких изменений в реестр, поскольку это может повредить систему.
Чтобы скопировать имя, щелкните раздел часового пояса и нажмите клавишу F2 для перехода в режим редактирования. Нажмите клавиши CTRL+C, чтобы скопировать имя в буфер обмена. Нажмите клавишу ESC для выхода из режима редактирования. (чтобы вставить имя позднее, нажмите клавиши CTRL+V).
Когда раздел выбран в Редактор реестра (Registry Editor), его значения отображаются на другой панели окна Редактор реестра (Registry Editor). Значения в совокупности описывают часовой пояс, и Network Analyst использует их для определения правильного времени. Хотя в модуле ArcGIS Network Analyst не используется значение Отобразить (Display), обратившись к этой информации, можно узнать временной сдвиг часового пояса относительно UTC и географические данные о том, где он используется.
- Создайте запись в таблице часовых поясов для каждого часового пояса, который необходимо использовать в наборе сетевых данных. В поле MSTimeZone для каждой записи введите или вставьте из буфера обмена имя часового пояса так, как оно отображается в Редактор реестра (Registry Editor).
Например, если набор сетевых данных охватывает всю территорию США, то таблица будет содержать пять значений MSTimeZone, как показано ниже. (поле Display необязательно).
Идентификатор ObjectID
MSTimeZone
Дисплей
1
Восточное время
(UTC-05:00) Восточное время (США и Канада)
2
Центральное поясное время
(UTC-06:00) Центральное время (США и Канада)
3
Поясное время горных штатов
(UTC-07:00) Горное время (США и Канада)
4
Поясное время горных штатов США
(UTC-07:00) Аризона
5
Тихоокеанское время
(UTC-08:00) Тихоокеанское время (США и Канада)
Подсказка:Поле Отобразить (Display) добавлено для описания значения MSTimeZone. Информация, содержащаяся в этом поле, копируется из полей Отобразить (Display) в разделах часовых поясов в реестре.
Хотя для Network Analyst поле типа Отобразить (Display) не является обязательными, его добавление может упростить для пользователя определение часовых поясов, представленных параметром MSTimeZone. Например, значения Mountain Standard Time и US Mountain Standard Time параметра MSTimeZone очень похожи. При помощи поля Отобразить (Display) можно понять, что аризонский часовой пояс соответствует значению US Mountain Standard Time. (для Аризоны нужен отдельный идентификатор часового пояса, поскольку в отличие от других штатов, живущих по горному времени, Аризона не переходит на летнее время).
- Откройте редактор реестра.
Итак, создана таблица с текстовым полем MSTimeZone. Следующий шаг – привязка каждого ребра исходного объекта к правильному часовому поясу в таблице.
Добавление поля TimeZoneID к источникам ребер
Каждый исходный объект ребра необходимо связать строго с одним часовым поясом.
- Добавьте поле целого типа (integer) с именем TimeZoneID для каждого класса исходных объектов ребра. Хотя этому полю можно присвоить любое имя, рекомендуется давать ему имя TimeZoneID.
- Рассчитайте значения исходных объектов ребра.
Значения TimeZoneID являются внешними ключами, которые связывают объекты с записями в созданной таблице часовых поясов. Так, в приведенном выше примере ObjectID 5 представляет тихоокеанское время (UTC –08), и все объекты-источники ребер в этом часовом поясе должны иметь значение TimeZoneID, равное 5. Если у тихоокеанского часового пояса оказалось бы другое значение ObjectID, то полю TimeZoneID следовало бы присвоить это значение.
Добавление атрибута часового пояса в набор сетевых данных
В данной инструкции показано, как создать сетевой атрибут часового пояса в наборе сетевых данных. Данный атрибут устанавливает отношение между полем TimeZoneID в классах исходных объектов ребра и таблицей часовых поясов.
Мастер Новый набор сетевых данных (New Network Dataset) автоматически создаст этот атрибут, если в классе объектов улиц имеется поле TimeZoneID и таблица часовых поясов с верной конфигурацией.
-
На закладке Атрибуты (Attributes) диалогового окна Свойства набора сетевых данных (Network Dataset Properties) или мастера Создание набора сетевых данных (New Network Dataset) нажмите кнопку Добавить (Add).
Откроется диалоговое окно Добавление нового атрибута (Add New Attribute).
- Введите имя атрибута, например, TimeZone.
- Выберите Дескриптор (Descriptor) в списке Тип использования (Usage Type).
-
Выберите Целый (Integer) в списке Тип данных (Data Type).
-
Нажмите ОК.
Атрибут добавляется в список атрибутов.
-
Правой кнопкой мыши щелкните новый атрибут, выберите Связанная таблица часовых поясов (Related Time Zone Table), а затем щелкните имя таблицы часовых поясов в рабочей области.
Слева от имени атрибута появляется зеленый круг с буквой Т в середине, которым отмечается атрибут часового пояса.
- Дважды щелкните имя атрибута часового пояса, чтобы открыть диалоговое окно Вычислители (Evaluators).
-
Для каждого исходного объекта ребра настройте вычислитель поля на чтение значений TimeZoneID из классов исходных объектов.
В приведенном ниже примере вычислитель поля, который считывает значения поля TimeZoneID в классе исходных объектов Улицы (Streets) назначен обоим направлениям – «из/в» и «в/из».
-
Нажмите ОК.
Диалоговое окно Оценки закроется. Завершив выполнение мастера Создание набора сетевых данных (New Network Dataset) или закрыв диалоговое окно Свойства набора сетевых данных (Network Dataset Properties), можно вставить новое поле часового пояса в набор сетевых данных.
Выполнение сетевого анализа для нескольких часовых поясов
Если сетевые положения имеют временные окна, то для введенных значений времени суток назначается местный часовой пояс, то есть часовой пояс элемента ребра, лежащего в основе сетевого местоположения.
Временные окна для задачи выбора маршрута транспорта обрабатываются по-другому для объектов, которые могут быть изначально не связаны с местоположением в сети.
- Временные окна, в которых может начинаться маршрут транспорта, устанавливаются при помощи свойств EarliestStartTime и LatestStartTime. Для значений этих свойств используется часовой пояс ребра, где находится склад, от которого начинается маршрут.
- Перерывы имеют временное окно, которое задается при помощи свойств TimeWindowStart и TimeWindowEnd. Перерыв связывается с маршрутом, и используется часовой пояс ребра, где находится склад, от которого начинается маршрут.