公益施設網では、ネットワーク エッジにおけるフローの方向を知ることが非常に重要な場合があります。水、電気、石油などネットワークを流れるモノ自体は、フロー方向を判断しません。ネットワークのフロー方向は、ソース、シンク、エッジの方向を構成することで決まります。このため、公益施設網を移動する物資のフローとは、方向が設定されたフローと表現できます。
ネットワークのフロー方向は、次の 2 つの方法を使って決定できます。
- ネットワーク エッジのデジタイズされた方向
- ソースまたはシンクのフローが発生するジャンクションの定義
ソースとシンクは、公益施設網のフローを発生させます。ソースは、その場所からネットワークのエッジへ向かってフローを発生させるジャンクション フィーチャです。たとえば、配水管網では、ポンプ ステーションから管を通じて水が流し出されるので、ポンプ ステーションをソースとしてモデリングすることができます。シンクは、ネットワーク内のエッジからのフローが到達するジャンクション フィーチャです。たとえば、河川ネットワークでは、重力によってすべての水が河口に向かって流れるので、河口をシンクとしてモデリングできます。フローは、ソースからシンクへ向かって移動します。フロー方向の作成に使用できるのは、ソースまたはシンクのどちらか一方であるため、通常はネットワーク内にソースまたはシンクのいずれかのみを指定します (両方指定すると、ネットワークに不定フローのエッジが生じる可能性があります)。
フロー方向の設定時には、無効化なフィーチャに注意してください。フィーチャを無効にすると、フローはそのフィーチャを通過できなくなります。そのため、フィーチャを無効化すると、その無効化されたフィーチャ、またはその無効化されたフィーチャだけを経由してソースまたはシンクと接続されたフィーチャに対して、フロー方向は設定できません。
エッジのデジタイズされた方向を使用したフロー方向
デジタイズされた方向を使用したフロー方向は、次によって決定されます。
- ネットワークの接続性
- エッジ フィーチャの方向
多くのネットワークでは、ネットワーク エッジのデジタイズされた方向は、それらのエッジでのフロー方向を反映します。このシナリオは、水のネットワーク (上下水道管や河川ネットワークなど) で広く使用されます。データがこの方法で設定されている場合、デジタイズされた方向を利用して、フロー方向を設定できます。フロー方向は、デジタイズされた方向またはその反対方向のいずれかとして指定できます。ただし、これは、個々のエッジに対してではなく、ネットワーク レベルで指定できます。エッジのデジタイズされた方向を使用したフロー方向は、必ず [フロー方向の設定 (Set Flow Direction)] ジオプロセシング ツールを使用して設定します。
ソースとシンクを使用したフロー方向
ソースとシンクを使用したフロー方向は、次によって決定されます。
ネットワークの接続性
ネットワーク内のソースおよびシンクの位置
フィーチャの有効化/無効化状態
ソースおよびシンクを使用してジオメトリック ネットワークのフロー方向を設定する場合、その決定はネットワークの作成時に行う必要があり、設定はジャンクション フィーチャクラスに適用されます。ソースまたはシンクを使用してジャンクション フィーチャクラスを持つネットワークを作成するとき、個々のジャンクション フィーチャをソースまたはシンクとして定義できます。ソースは、その場所からネットワークのエッジへ向かってフローを発生させるジャンクション フィーチャです。たとえば、配水管網では、ポンプ ステーションから管を通じて水が流し出されるので、ポンプ ステーションをソースとしてモデリングすることができます。シンクは、ネットワーク内のエッジからのフローが到達するジャンクション フィーチャです。たとえば、下水道網では、重力によってすべての排水が汚水処理場に向かって流れるので、汚水処理場をシンクとしてモデリングできます。フローは、ソースからシンクへ向かって移動します。フロー方向はソースまたはシンクによって設定できるため、ネットワーク内のソースまたはシンクの一方だけを使用します (両方指定すると、ネットワークに不定フローのエッジが生じる可能性があります)。
フロー方向の設定時には、無効なフィーチャに注意してください。フィーチャを無効にすると、フローはそのフィーチャを通過できなくなります。そのため、フィーチャを無効化すると、その無効化されたフィーチャ、またはその無効化されたフィーチャだけを経由してソースまたはシンクと接続されたフィーチャに対して、フロー方向は設定できません。
フロー方向の 3 つのカテゴリ
ネットワークのフロー方向を設定すると、エッジのフロー方向は次の 3 つのカテゴリのいずれかになります。
「定義」フロー方向
エッジのフロー方向が、ネットワークの接続性、ソースおよびシンクの位置、およびフィーチャの有効化/無効化状態によって一意に決定できる場合、そのフィーチャは「定義」フロー方向を持つと言います。デジタイズされた方向に基づくフロー方向では、フロー方向の定義方法に基づいてフィーチャをデジタイズした方向またはその反対方向として、フローが指定されます。
「不定」フロー方向
ネットワークのトポロジ、ソースとシンクの位置、またはフィーチャの有効化/無効化状態に基づいてフロー方向を一意に決定できない場合、そのネットワークは「不定」フローになります。デジタイズされた方向に基づいてフロー方向を定義する場合、不定フローのエッジは生じません。
フロー方向がソースとシンクに基づいて設定されるネットワークでは、ループの一部または閉回路を形成するエッジに対して不定フローが発生する場合があります。また、エッジのフローが複数のソースとシンクによって確定しているものの、ソース (またはシンク) によってそのエッジでのフローが逆方向になる場合も不定フローとなります。
たとえば、ソースとシンクが次のような位置にあるジオメトリック ネットワークを考えてみます。
この場合、エッジ 1 とエッジ 2 のフロー方向は設定されていますが、エッジ 3 は不定フローになります。エッジ 3 が不定フローになる理由を理解するために、ソースだけが存在する場合を考えてみます。
この場合、エッジ 3 のフロー方向は右向きになります。
次に、シンクだけが存在する場合を考えてみます。
この場合、エッジ 3 のフロー方向は左向きになります。エッジ 3 のフロー方向が反対方向になるため、この結果は矛盾します。
各エッジに対して、フロー方向がソースのみとシンクのみのときで一致する場合、フロー方向はその方向に設定されます (エッジ 1 とエッジ 2 の場合)。しかし、エッジ 3 のように矛盾がある場合、フロー方向は 2 つの可能性があるため不定に設定されます。
不定フローになる別の例としては、エッジの両端がソースの場合が挙げられます。
「未定」フロー方向
ネットワーク内のソースとシンクから孤立したエッジでは、ネットワークのフロー方向が「未定」になります。これは、エッジがネットワークを経由してソースとシンクにトポロジ的に接続していない場合や、エッジが無効化されたフィーチャだけを経由してソースとシンクに接続している場合に発生します。不定フローと同様に、デジタイズされた方向に基づいてフロー方向を設定する場合、未定フローのエッジは生じません。
ソースとシンクに基づくフロー方向の指定
ソースとシンクを使用してジオメトリック ネットワーク上のフロー方向を設定するには、正しいフロー方向を形成するソースやシンクとしての役割を果たすネットワーク内のジャンクションを選択する必要があります。
ネットワークのフロー方向を設定すると、フロー方向がわかっている場合でも不定フローが生じる場合があります。これは、フロー方向が、接続性やソースとシンクの位置だけでなく、ネットワークまたはネットワークを構成するフィーチャのプロパティによって決定されるためです。
たとえば、水道管では、フロー方向は管の両端における水圧差によって決まります。水道管の各両端における圧力は、水道管の素材、直径、流量、物理的な形状 (ボトルネック、バルブ、曲がり角度など)、水温、管の両端の標高、ネットワークの接続性の影響を受けます。ArcGIS は (ドメイン固有のネットワークではなく) 一般的なネットワークを扱うため、この情報はフロー方向の設定に使用されません。そのため、これらのネットワークにおけるフロー方向は、一部のエッジに対して不定に設定される可能性があります。
すべてのドメインにおいて、同様の変数群が存在します。開発者は、これらの変数を使用して、ドメイン固有のネットワークのフロー方向を決定する、カスタムのフロー方向ソルバを記述できます。