車両がタイム ゾーンを越えると、時刻が変わります。場合によっては日付も変わります。複数のタイム ゾーンにまたがるネットワーク データセットにタイム ゾーンを設定していないと、時刻値が解析を混乱させる元になる可能性があります。さらに、交通量に対応したネットワーク データセットから正しくない移動時間が返されたり、タイム ゾーンが無視された場合は、ライブ交通量ネットワーク データセットが間違った時間の交通状況をレンダリングする可能性があります。そうした問題を避けるために、ネットワーク データセットに属性を追加して、タイム ゾーンを管理することができます。
このトピックでは、ネットワーク データセットにタイム ゾーンを設定することが必要になる理由と、タイム ゾーン属性を設定する方法を説明します。
メモ:
ライブ交通量に対応したネットワーク データセットでは、常にタイム ゾーン属性の設定が必要です。ただし、ライブ交通量をサポートしないネットワーク データセットでは、タイム ゾーン属性の設定は必ずしも必要ではありません。たとえば、ライブ交通量をサポートしないネットワーク データセットが完全に 1 つのタイム ゾーンに収まる場合は、タイム ゾーンを設定する必要がありません。また、開始時間を設定した時間ベースのインピーダンスを使用してネットワーク解析を実行する予定がない場合も、タイム ゾーンの設定は不要です。
タイム ゾーンおよびネットワーク解析
複数のタイム ゾーンにまたがる交通量に対応したネットワーク データセットでタイム ゾーン属性を設定することがなぜ重要かをさらによく理解するために、午前 8:38 にルート解析が 2 つの隣接するエッジを通過する場合を想定します。山岳部タイム ゾーンの一方のエッジからスタートして、太平洋タイム ゾーンのもう一方のエッジへ移ります。タイム ゾーン属性が設定されていないと、ネットワーク データセットは時差を無視し、1 つのタイム ゾーンのみに基づいてエッジの移動時間を取得します。その場合、太平洋タイム ゾーン側エッジの移動時間を午前 7:38 で取得せずに、午前 8:38、あるいはデフォルトのタイム ゾーンによってはさらに別の時刻で取得する可能性があります。
しかし、タイム ゾーンを正しく設定すると、山岳部タイム ゾーン側エッジのコストが午前 8:38、太平洋タイム ゾーン側エッジのコストが午前 7:38 と、それぞれ現地時間で正しく評価されます。交通量対応ネットワーク データセットの移動時間の正確性がこうして維持されます。さらに、ルート案内にタイム ゾーンの変化が表示されます。
複数のタイム ゾーンにまたがるネットワーク データセットが交通量対応かどうかにかかわりなく、タイム ゾーン属性を設定することにより、時刻値が常に現地時間を指すようになるため、タイム ウィンドウや到着または出発時間などの時刻プロパティの入力と解釈が容易になります。東部タイム ゾーンと中部タイム ゾーンに 1 つずつ、合計 2 つのストップを追加し、両方のタイム ウィンドウを現地時間の午前 8:00 ~ 9:00 に設定する場合を考えます。タイム ゾーンを設定していない場合は、1 つまたは両方のタイム ウィンドウの値をデフォルトのタイム ゾーンに手動で変換しなければなりません。それに対して、ネットワーク データセットにタイム ゾーンを設定している場合は、入力する時間が自動的に基本エッジの現地時間に設定され、Network Analyst が時間変換を内部で管理します。
ネットワーク データセットによるタイム ゾーンの処理方法
タイム ゾーンは、UTC (協定世界時) に対するテンポラル オフセットを持ちます。現地のルールが、UTC のオフセットを何時間にするか、サマー タイムを導入するかどうか、導入する場合は調整時間のオフセットと期間をどれだけにするかを規定します。これらのルールは頻繁に変わる可能性があり、現在および過去のルールをすべて把握するのは簡単ではありません。幸い、Windows オペレーティング システムの新しいバージョンでは、Windows Update を通じて世界中のすべてのタイム ゾーンの変更をユーザーのコンピューターに反映させることことでタイム ゾーンを管理します。タイム ゾーンとそのルールは、Windows のレジストリに格納されます。
ArcGIS Network Analyst エクステンション は、タイム ゾーンの UTC に対するオフセットとサマー タイムのルールを Windows のレジストリから取得します。次の概念図は、この仕組みの概要を示したものです。
エッジ ソース フィーチャの TimeZoneID フィールドは、そのフィーチャが属しているタイム ゾーンを示します。TimeZoneID 値は、ネットワーク データセットと同じワークスペースにあり、タイム ゾーンのリストを格納しているタイム ゾーン テーブルの外部キーです。タイム ゾーン テーブルの MSTimeZone フィールドも外部キーですが、これは Windows のレジストリのエントリが対象です (識別子や外部キーとしては整数値のほうが一般的ですが、レジストリはタイム ゾーンを識別するためにテキストを使用します)。このレジストリは、UTC に対するオフセットとサマー タイムの期間に関する情報を Network Analyst に提供します。
図に示されているように、ネットワーク データセットにタイム ゾーンを設定するには、エッジ ソース フィーチャクラスにタイム ゾーン テーブルと TimeZoneID フィールドが必要です。これらのコンポーネントを用意したら、タイム ゾーン ネットワーク属性を作成できます。
プロパティ
次のプロパティをタイム ゾーン属性に対して構成できます。
- [タイム ゾーン属性の追加] - 解析の実行中にタイム ゾーンを使用する場合は、このチェックボックスをオンにします。
- [タイム ゾーン テーブル] - 現在のネットワーク データセットのワークスペースに存在するタイム ゾーン テーブルを含むドロップダウン リストです。タイム ゾーン テーブルはこのテーブル内の特定のフィールド (MSTimeZone) によって識別されます。
- [エバリュエーター] - ネットワークに定義されている属性ごとに、ネットワークに含まれる各ソースおよび方向 (エッジの場合、順方向と逆方向) の値が指定される必要があります。エバリュエーターは、各ソースおよび移動方向の属性の値を割り当てます。各エレメントのデフォルトのエバリュエーターは、属性のエバリュエーターが割り当てられていないソースと方向に使用されます。
メモ:
いずれかのネットワーク属性を変更した場合は、接続性を再構築し、対象の属性を再計算して、ネットワーク エレメントを更新するためにネットワーク データセットを構築する必要があります。
タイム ゾーン属性の構成
タイム ゾーンを使用して解析を実行するには、ネットワーク データセットにこの属性を構成する必要があります。タイム ゾーン属性を構成するには、次の手順を実行します。
- [ネットワーク データセット プロパティ] ダイアログ ボックスからネットワーク属性にアクセスします。
- [タイム ゾーン] タブをクリックします。
- [タイム ゾーン属性の追加] チェックボックスをオンにします。
- [タイム ゾーン テーブル] ドロップダウン リストから、使用するタイム ゾーンを選択します。
- [エバリュエーター] セクションで、エバリュエーターをソース フィーチャに割り当てます。
- [OK] をクリックします。
タイム ゾーン属性がネットワーク データセットに構成および保存されます。