道路のマージの仕組み

[道路のマージ (Merge Divided Roads)] ツールは、有意の距離に沿った平行な道路セグメントを 1 本の中央線にマージします。

道路または車線の一致ペアは、同じ道路クラスに属していて、相互にほぼ平行傾向にあり、マージ距離内で互いに離れている場合、マージされます。 道路クラスは [マージ フィールド] パラメーターで指定します。 入力コレクションからマージされない道路はすべて、出力フィーチャクラスにコピーされます。

このツールの一般的な用途は、比較的大縮尺で使用する道路データを小縮尺で使用するために単純化することです。たとえば、複線の高速道路や大通りなどを単線として描写したほうが適切な場合に使用します。 中縮尺では、分割された道路を別々のフィーチャとして保持したほうが望ましい場合があります。 このような場合は、[道路の競合を解決 (Resolve Road Conflicts)] ツールを使用して、シンボルが競合しないように車線をシンボル化させることができます。 同じ道路コレクションに対して [道路の競合を解決 (Resolve Road Conflicts)] ツールと [道路のマージ (Merge Divided Roads)] ツールの両方を実行する場合は、先に [道路のマージ (Merge Divided Roads)] を実行することをお勧めします。

データの準備に関する考慮事項

このツールは、道路網によく見られる空間リレーションシップ用に最適化されています。 このツールを他の主題の処理に使用した場合、予期しない結果になることがあります。 ツールの実行時に、一連の道路データ内で共有されるフィーチャ間のリレーションシップを保持するためには、入力フィーチャのジオメトリを正しく設定することが重要です。 入力データに関して、次の要件と推奨事項を念頭に置いてください。

注意:

入力フィーチャが投影座標系にない場合、警告が発生します。 このツールは線形距離単位に依存するため、非投影座標系では予期しない結果になります。 有効な結果を得るには、投影座標系のデータに対してこのツールを実行することをお勧めします。 座標系が見つからないか不明な場合、エラーが発生し、ツールの処理は実行されません。

  • 道路識別子の指定 - 適切な結果を出力するために、道路識別子や形状を表す値で専用のフィールド (short integer または long integer) を指定し、このフィールドを [道路識別子フィールド] パラメーターに指定することを検討してください。 この属性は、ツールが適切なマージ候補となるフィーチャのペアを評価したり、逆に、マージすべきでないフィーチャを評価したりするのに役立ちます。 すべての値を指定する必要はありません。

    属性値を次のように割り当てます。

    • 0」- トラフィック サークルまたはロータリー。
    • 1」- 車道、大通り、複線の高速道路、平行に走るその他の道路。
    • 2」- オン/オフ ランプ、高速道路の交点コネクタ
    • 999」- マージすべきでないフィーチャ

  • マージ済みフィーチャの追跡 - どのフィーチャが、同じクラスとして、および適正な距離を平行に走っているとして検出されたかを特定するには、「MDR_TYPE」というフィールド (short integer または long integer) を入力フィーチャクラスに追加します。 このフィールドは、出力フィーチャクラスにコピーされます。 入力フィーチャクラスでは、マージされる道路の一致ペアは、「MDR_TYPE = 1」および「MDR_TYPE = -1」とコード化されます。 出力フィーチャクラスでは、マージ済み道路は、「MDR_TYPE = 1」とコード化されます。 この情報に基づいて品質管理チェックに役立てることも、あるいは最適に描画するために別のシンボルを必要とするフィーチャを特定することもできます。

  • シングルパート フィーチャ - 入力フィーチャにマルチパート フィーチャを含めることはできません。 フィーチャをシングル パートに変換するには、[マルチパート → シングルパート (Multipart To Singlepart)] ツールを使用するか、または [単一パートから構成される] ライン ルールでトポロジを作成します。

  • 共有セグメント - 入力フィーチャ同士は、セグメントを共有するので、互いにオーバーラップすることはできません。 これらの問題を解決するには、[重複しない] ライン ルールおよび [同一ライン内で重複しない] ライン ルールでトポロジを作成してください。 複数の入力レイヤーでツールを実行する場合、[他クラスと重複しない] ルールでトポロジを作成してください。 共有セグメントが検出されると、警告が発生しますが、ツールの実行は続行されます。 関与しているフィーチャのオブジェクト ID は、SharedGeom#.txt (# は各ログ ファイルが生成されるたびに増分する数値) という名前のログ ファイルに書き込まれます。

  • 自己交差フィーチャ - 入力ライン フィーチャが交差している場合、始点と終点が同一の場合は、予期しない結果になる可能性があります。 これらの領域を特定するには、[同一ライン内で交差しない] ライン ルールでトポロジを作成してください。 自己交差フィーチャが検出されると、警告が発生しますが、ツールの処理は続行されます。 自己交差フィーチャのオブジェクト ID は、SelfIntersect#.txt (# は各ログ ファイルが生成されるたびに増分する数値) という名前のログ ファイルに書き込まれます。

  • XY 許容値未満のジオメトリ - マップ内またはツールの環境で指定された XY 許容値に達しないフィーチャがデータ内に存在することがあります。 長さが許容値に達しないフィーチャが検出された場合、警告が表示され、それらのフィーチャにはツールの処理が行われません。 許容値未満のジオメトリを持つフィーチャのオブジェクト ID は、GeomBelowTolerance#.txt (# は各ログ ファイルが生成されるたびに増分する数値) という名前のログ ファイルに書き込まれます。

  • 空または Null ジオメトリ - 入力フィーチャは有効なジオメトリで構成する必要があります。 形状長さがゼロまたは NULL のフィーチャが検出された場合、警告が発生し、それらのフィーチャはツールに無視されます。 空または NULL ジオメトリを持つフィーチャのオブジェクト ID は、EmptyGeom#.txt (# は各ログ ファイルが生成されるたびに増分する数値) という名前のログ ファイルに書き込まれます。 必要に応じて [ジオメトリの修正 (Repair Geometry)] ツールを使用して、これらのフィーチャを修正してください。

  • 隠れた行き止まり - 最終的な縮尺でシンボル表示したときに、外観上はあたかも接続されているかのように見えても、実は接続されていない場合があります。そのようなセグメントを「隠れた行き止まり」といいます。 行き止まりでよい場合もありますが、本来行き止まりであってはならず、ただ見かけ上つながっているように見えるため、気付かれずに放置されている場合があります。 それを修復しないままツールを実行すると、つながっていない箇所が見た目にも明らかになることがあります。 別のセグメントから 0.5 ミリメートル (基準縮尺を考慮) 以内にある端点は、隠れた行き止まりとして検出されます。 隠れた行き止まりが検出されると、警告が発生しますが、ツールの処理は続行されます。 隠れた行き止まりは、検出されたときに DeadEnd#.txt (# は各ログ ファイルが生成されるたびに増分する数値) という名前のログ ファイルに書き込まれます。

    基準縮尺が使用不可能な場合、空間参照の許容値の 2 倍の値を使用して、隠れた行き止まりを検出します。

  • Windows オペレーティング システムでは、警告またはエラーが C:\Users\<user name>\AppData\Local\ESRI\GeoProcessing に書き込まれると、ログ ファイルが生成されます。

  • 基準縮尺 - [マージする距離] パラメーターをページ単位 (pt、in、mm、cm) で指定する場合は、必ず基準縮尺を設定してください。

  • 座標系を評価するには、カートグラフィの座標系環境が使用されます (設定されている場合)。設定されていない場合は、マップの座標系が使用されます。 上記の両方が使用可能でない場合は、入力レイヤーの座標系が使用されます。

  • 平行なフィーチャの間に、[マージ フィールド] の値がそれぞれ異なり、[マージする距離] で指定されている値の約 5 倍より長い別の平行なフィーチャが存在する場合、平行なフィーチャはマージされません。

ワークフローに関する考慮事項

このツールはほとんどの場合、他の「ジェネラライズ」ツールや「シンボル表現の競合解決」ツールと一緒に使用するのが一番効果的です。

これらのツールをワークフロー内の他のレイヤーおよび他のツールと一緒に使用するうえで次のヒントが役立ちます。

  • 道路の分類を適切に設定します。 [マージ フィールド] パラメーターを使用すると、道路の一意のクラスを識別できます。 このパラメーターは、道路のシンボル表示に使用されるフィールドと対応しているか、あるいは同等です。 マージ対象となる平行な道路にはそれぞれ、同じマージ値をゼロ以外の整数で指定する必要があります。 平行な対になっている片方または両方のフィーチャは、マージ値として 0 が割り当てられるため、マージ対象になりません。 このフィールドのデータ タイプは Short または Long Integer である必要があります。

    注意:

    極小セグメント以外の平行傾向にある道路同士はマージ値が等しければ、不適合な値が含まれていても道路同士が全長にわたってマージされます。 ここで前提となるのは、こうした些細な不整合はデータ属性のエラーであり、道路分類上の実際の変更内容は反映されないということです。 このような状況が検出された場合、警告メッセージが発生し、問題のセグメントが他の整合しないセグメントとともに InconsistentValues#.txt (# は各ログ ファイルが生成されるたびに増分する数値) という名前のログ ファイルに書き込まれます。

  • 適切なマージ距離を決めます。 マージ前にフィーチャ同士をどの程度近づけるべきかの目安となるカートグラフィック仕様に従わない場合、ArcMap[ツール] ツールバーの [計測] ツールを使用して、平行な車線間の平均分離距離を決めます。 この距離よりもわずかに大きい値は、[マージする距離] パラメーターとして使用してください。
  • 特定のフィーチャのみをマージします。 予期した結果を確実に得るために、選択したフィーチャに対してのみ (たとえば、データセット全体でなく、分離高速道路に対してのみ)、このツールを実行することを検討してください。 これにより、処理時間を短縮することも、あるいは大きいデータ範囲を一度にまとめて処理することも可能になります。 このワークフローでは、マージ後に必ず道路の接続性を再確立しなければなりません。 この再確立を行うには、オプションの [出力移動フィーチャクラス] パラメーターを指定して、このツールを実行します。 結果の変位フィーチャクラスを入力としてマージ済み道路とともに使用し、対象の接続を [移動の反映 (Propagate Displacement)] ツールで再確立します。 この変位フィーチャクラスを [移動の反映 (Propagate Displacement)] ツールで使用して、マージ済み道路に関連のある場所を含む他の主題の空間リレーションシップを再確立することもできます。 [道路文字フィールド] パラメーターに「999」の値を使用して、マージすべきでないフィーチャを指定することもできます。
  • 出力フィーチャ レイヤーの名前を理解します。 マージ済みのフィーチャは、いずれかの親フィーチャから Z 値や M 値などの属性を継承します。 出力フィーチャは、マージされないものも含めてすべて、マージ プロセス中に何らかのラインの単純化を施すことが可能です。 この単純化の許容値は、[マージする距離] パラメーター値の 1/10 です。
  • 平行なフィーチャ同士の競合解決を検討してください。 複数のフィーチャを保持したい領域がマップ上にあっても、フィーチャ同士が接近しすぎていてシンボル表示できなかったり出力縮尺では鮮明に表示されなかったりすることもあります。 [道路の競合を解決 (Resolve Road Conflicts)] ツールを実行して、グラフィックス上で競合している道路同士を遠く離れた場所へ移動することを検討してください。 同じ道路コレクションに対して両方のツールを実行する場合は、先に [道路のマージ (Merge Divided Roads)] ツールを実行してから、[道路の競合を解決 (Resolve Road Conflicts)] ツールを実行することをお勧めします。

大きなデータセットの分割

このツールは、個々のフィーチャの最終的な状態を決定する際に、隣接および接続したフィーチャが考慮されるよう状況に応じて機能します。 大量の入力データを使用すると、メモリの制限を超えることがあります。 これを防ぐには、このツールの実行中にパーティション化を有効にすることを検討します。それは、カートグラフィック パーティション環境にフィーチャクラスの分割を指定することによって行います。 分割が有効になっている場合、ツールは、論理的で処理しやすいサイズで順次データを処理します。 各パーティションのポリゴンに特定された入力フィーチャは、パーティションを囲むバッファー ゾーンからの別データとともにツールに読み込まれます。 この別データは、処理の進行と同時に反映されます。 これにより、作成されたフィーチャクラスがシームレスになり、パーティションの境界を越えて重なり合うフィーチャの状態の整合性がとれるようになります。

パーティション単位で [道路のマージ (Merge Divided Roads)] ツールを実行すると、各パーティションから得られた道路が出力フィーチャクラスに追加されます。 道路は、パーティション エッジで分割されます。 マージ済み道路が作成されると、それらはパーティションの境界の共通ノードでスナップされます。 パーティションの境界を越えても処理結果ができるだけ一致するように処理されますが、幾何学的に複雑または密集したエリアでは、道路が間違った道路にスナップされたり、あるいはあるパーティションでは道路が単純化されるが、道路が別のパーティションに交差しているときには単純化されないという状況が起こることもあります。 以下に示した入力フィーチャクラスに別のフィールド (short または long integer) を追加すると、潜在的な問題を検索および表示できます。 これらのフィールドは、出力フィーチャクラスにあり、そこで設定できます。

  • MDR_TYPE-「1」の値は、マージ済み道路を示します。
    • 0」の値は、道路がマージの候補ではないことを示します。
    • -1 は、フィーチャが別のフィーチャに対して左側で平行であることを示します (ソース ノードからターゲット ノードへのフィーチャの方向を考慮する場合)。
    • 1 は、フィーチャが別のフィーチャに対して右側で平行であることを示します (ソース ノードからターゲット ノードへのフィーチャの方向を考慮する場合)。
    • 2」の値は、フィーチャが別のフィーチャに対して両側で平行であることを示します。
  • MDR_SNAP
    • 0」の値は、スナップの決定をする際にツールが必要でなかったことを示します。
    • 1」の値は、パーティションの境界で連続性を確保するのに、許容値を超えるスナップが必要だったことを示します。
    • 2」の値は、あいまいな設定でスナップする場合に使用する正しいノードを決定することができなかったことを示します。 これらの領域を調べて、パーティションの境界を越えてマージ済み道路の連続性を確認または変更する必要があります。

入力道路フィーチャがパーティションの境界に正確に沿っている場合 (道路が県の境界線に沿っていて県が分割フィーチャクラスである場合など) は、道路は 2 回出力されます。1 回は隣接する各パーティションの処理のためです。

関連トピック