ArcGIS Utility Networkでのトレーシングの仕組みについて読んだことがあるなら、多くの機能がnetwork attributesを必要とすることに気づいたでしょう。これらは、デバイスが開いているか閉じているか、サービス中か廃止されているか、またはシステムが分析を行う際に考慮すべきフィーチャのその他の特性を定義するために使用される属性です。この記事の目的は、network attributesの技術的な実装について議論し、ユーティリティネットワークの設定方法について情報に基づいた判断ができるようにすることです。
network attributeとは何ですか?
A network attribute はユーティリティネットワークでの分析に使用するために設定された属性です。Network attributesは、条件バリアやフィルターバリアのような traversability barriers として使用できます。また、トレーシングの出力を制御するために output condition や summary functions にも使用できます。非network attributeをトレーシングで使用する唯一の方法は、フィーチャに関連付けられた属性をエクスポートするために Feature result type を使用することです。
network attributeの設定 は2段階のプロセスです。まず、ユーティリティネットワークで Add Network Attribute ツールを使ってnetwork attributeを定義します。これによりフィーチャクラスにフィールドが追加されるわけではなく、分析で使用できる属性が定義されるだけです。
このnetwork attributeに値を設定するには、ユーティリティネットワーク内の1つ以上のクラスからフィールドをマッピングする必要があります。そのためには Set Network Attribute ツールを使用します。network attributeにマッピングされるフィールドは同じ名前である必要はありませんが、マッピング時にはいくつか制約があります。ドロップダウンに表示されない場合、そのフィールドは正しいデータ型ではないか、nullableですがnetwork attributeはnon-nullableである可能性があります。ドメインが割り当てられているnetwork attribute用フィールドは、分析時の動作を確実にするため類似したドメイン値を持つべきです。
フィールドがnetwork attributeとして指定されると、そのフィーチャの値のコピーがネットワークのシステムテーブルに保存され、フィーチャが検証されるたびに分析で使用されます。これにより個々のフィーチャから値を問い合わせる必要なく分析中の意思決定に必要な情報がすべて揃うため、ネットワークはより高速に分析できます。分析用情報をネットワーク内に多く保存すると、検証時に読み取る情報量が増え、システムテーブルへの永続化も増え、分析中にもシステムテーブルから読み取る情報量が増加します。
すべてのストレージが同じではないため、次節ではnetwork attributesの保存方法とパフォーマンスへの影響について説明します。
パフォーマンス
network attribute作成時の最も重要な決定は、それがインラインで保存されるかどうかです。インラインで保存されるnetwork attributesは network topology 内部に接続性と共に保存されます。これにより接続性と同時にロードされるためトレーシング中のアクセス速度が最速になります。一方インラインで保存されないnetwork attributesもシステムテーブルには保存されますが、network attributes専用の二次ストレージに格納されます。
network attributes用ストレージ機構が2種類ある理由は、インライン用ストレージ容量が非常に限られているためです。インラインストレージは traversability barriers のようなネットワーク通過に必須な属性用に予約すべきであり、整数値でなければなりません。 summary functions や output conditions に使われるnetwork attributesはインライン保存による恩恵はあまり大きくありません。
またインライン保存対象とする前に、そのnetwork attributeがどれくらい頻繁に使われるかも考慮すべきです。 subnetwork definition の一部や頻繁に使われるnamed trace構成で参照されるnetwork attributesはインライン保存候補として適しています。一方月数回しか使わない夏季や冬季構成などはインライン保存ほど重要ではありません。
network attributesを特定するとき重要なのは、それらは検証・書き込み・読み取りがデータベースで行われることです。多くなるほどネットワークトポロジー有効化・検証やユーティリティネットワークトレース・サブネット更新時間が長くなります。個々の属性コストは小さいですが、多数あると合計コストが急増します。必要な少数から始めて徐々に追加する方が良いでしょう。
インラインnetwork attributeとして使いたいフィールドを見つけたら、そのフィールドをインライン保存向けに適切になるよう変更したい場合があります。この点について次節で説明します。
ストレージ
インライン属性用ストレージ容量が限られているため、どれだけサイズ割り当てられるか決まる要因について理解し、理想的なストレージとパフォーマンスになるようネットワーク属性支援フィールド設計すると良いでしょう。以下はArcGISヘルプ「in line network attributesのビットサイズ計算」トピック要約です。in line network attributesのビットサイズ計算方法.
インライン属性格納制限1つ目はnetwork attributeおよびそのフィールドのデータ型です。ほとんどのデータ型は使えますが、インライン格納できるのはshort integerまたはlong integerのみです。これはネットワークが属性値をバイナリ表現で格納するためです。
2つ目制限はインラインnetwork attributeにはドメイン割り当て必須ということです。このドメイン内値によってネットワーク索引内割り当てスペース量が決まります。
割り当てスペース量はドメイン内最大値格納用バイナリ容量と等しくなるため、ドメインはできるだけコンパクトで最大値も小さい方が望ましいです。ビット単位比較用設計なら各ドメイン値は2冪(1, 2, 4など)となります。当初サイズ計算はCreate Network Attributeツール指定ドメイン基準ですが、異なるクラス割当時には割当先フィールドドメインによって拡張され得ます。
ビットサイズ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | … | 20 |
|---|
最大ドメイン値 | 1 | 3 | 7 | 15 | 31 | 63 | 127 | 255 | … | 1,048,575 |
最大ドメイン値(nullable) | 0 | 1 | 3 | 7 | 15 | 31 | 63 | 127 | … | 524,287 |
もしnetwork attribute割当フィールドがnull許容なら空ネットワーク値表現用追加ストレージ必要になります。そのためモデル設計時にはstorage節約目的で非null許容設定推奨です。この理由からunknown用0値持つフィールド・ドメイン多く見られ、それによって非null許容指定可能となっています。
結論
この記事を読んだことでユーティリティネットワークでnetwork attributesを作成・使用する基礎知識を得られたでしょう。またinline保存利点・制限理解し特定attributeをinline保存すべきか判断できるようになったと思います。この情報を活用して自身モデル変更しニーズ合うよう設定してください。
You can learn more about network attributes by reading the Network Attributes topic in ArcGIS Help.
If you have specific questions about how to solve different workflows, please visit us on the ArcGIS Utility Network channel on the Esri Community site. This is an active community with thousands of active members.