トポロジの作成

Standard または Advancedのライセンスで利用可能。

ArcGIS Pro でトポロジを新規作成する主な方法は、トポロジ作成ウィザードです。 トポロジの作成方法を理解したら、ジオプロセシング ツールを使用して、この作業を自動化することができます。

トポロジ作成ウィザードを使用したトポロジの作成

トポロジ作成ウィザードを使用してトポロジを作成するには、次の手順に従います。

  1. [カタログ] ウィンドウで、トポロジの追加先のフィーチャ データセットを右クリックして、[新規] > [トポロジの作成] の順にクリックします。
  2. 新しいトポロジの名前とクラスター許容値を指定します。 デフォルト値は、フィーチャ データセットの X,Y 許容値に設定されます。 デフォルト値は 0.001 メートル、または空間参照の単位でそれに相当する値です (たとえば、単位がフィートの場合は 0.003281 フィート、単位が緯度経度の 10 進度の場合は 0.0000000556 度)。
  3. トポロジに追加するフィーチャクラスのボックスをオンにします。 フィーチャ データセットのすべてのフィーチャクラスのリストが表示されます。
  4. トポロジ内のフィーチャクラスごとに、座標の精度ランクを設定します。

    1 つ以上のフィーチャクラスに Z 座標値が含まれている場合、[Z プロパティ] をクリックし、z ランクを設定します。 Z 許容値は、互いに許容範囲内にある頂点の高さ (高度) を区別するために使用されます。 たとえば、高さの異なる 2 つの隣接フィーチャが同じエッジを共有していることがあります。 ただし、X,Y 頂点が同じ位置にあるだけで、それらの Z 値 (高さ) は異なります。 Z 許容値は、検証やクラスタリングの過程で、この情報を正しく処理するのに役立ちます。 デフォルトの Z 許容値は X,Y 許容値のデフォルト値 (現実の世界の単位で 0.001 メートル) と同じです。

  5. [次へ] をクリックします。
  6. 次に、追加するフィーチャクラスとそのサブタイプの間にトポロジ ルールを作成します。 [フィーチャクラス 1] ドロップダウン メニューから、フィーチャクラスを選択します。 サブタイプに関連付けられたルールを作成する場合には、[サブタイプ 1] ドロップダウン メニューを使用してサブタイプを選択します。
  7. 次の列で、対応する [ルール] を選択します。 ルールは、フィーチャ間の空間リレーションシップを確立し、フィーチャによるジオメトリの共有方法を制御および検証するのに役立ちます。
  8. 選択したルールに適用可能な場合は、[フィーチャクラス 2] および [サブタイプ 2] ドロップダウン メニューから 2 つ目のフィーチャクラスとサブタイプを選択することで、ルールを完成させます。
  9. ステップ 6、7、8 を繰り返して、必要な数のルールを作成します。 完了したら、[次へ] をクリックします。
  10. サマリーの内容を確認し、[完了] をクリックします。 これで、新しいトポロジがフィーチャ データセットに追加されました。

ジオプロセシング ツールを使用したトポロジの作成

ArcToolbox には、トポロジを対象としたジオプロセシング ツールが含まれています。 [トポロジ] ツールセットは [データ管理ツール] ツールボックスにあります。

これらのツールを使用して、ジオデータベース トポロジを作成および変更するためのスクリプトを構築することができます。 これらのスクリプトを使用して、一連のタスクを自動化し、繰り返し実行するワークフローを構築できます。

[トポロジの作成] ツールを使用してトポロジを作成するには、次の手順に従います。

  1. トポロジに含めるフィーチャクラスを選択します。 [トポロジにフィーチャクラスを追加 (Add Feature Class To Topology)] ジオプロセシング ツールを使用して、トポロジにフィーチャクラスを追加します。

    トポロジに含めるすべてのフィーチャクラスが追加されるまで、このツールを複数回実行します。

  2. トポロジを作成して、フィーチャクラスをいくつか追加できたため、[トポロジにルールを追加 (Add Rule To Topology)] ジオプロセシング ツールを使用して、一連のルールを追加することができます。 トポロジ ルールは、フィーチャ間の空間的な関連性を確立し、フィーチャによるジオメトリの共有方法を制御および検証するのに役立ちます。

    必要なトポロジ ルールすべてをトポロジに追加するには、このツールを複数回実行する必要がある場合もあります。

  3. フィーチャ データセットにフィーチャクラスとトポロジ ルールを含んだ新しいトポロジが作成されました。 フィーチャクラスにデータが含まれている場合は、[トポロジの検証 (Validate Topology)] ジオプロセシング ツールを使用して、トポロジを検証できます。

以下のスクリプトは、トポロジを作成して、トポロジに複数のフィーチャクラスとルールを追加できる、スタンドアロンの Python スクリプトのサンプルです。

このスタンドアロンの Python スクリプトを使用すると、トポロジを作成し、複数のフィーチャクラスとルールを追加し、トポロジを検証することができます。

import arcpy
import os

# Input variables
input_dataset = r"C:\MyProjects\MyProject.gdb\fds"
topo_name = "Topology"
cluster_tol = 0.001
input_fc = r"C:\MyProjects\MyProject.gdb\fds\fc1 1 1;C:\MyProjects\MyProject.gdb\fds\fc2 1 1"
rules = r"'Must Not Overlap (Area)' C:\MyProjects\MyProject.gdb\fds\fc1 # C:\MyProjects\MyProject.gdb\fds\fc1 #;'Must Be Covered By Feature Class Of (Area-Area)' C:\MyProjects\MyProject.gdb\fds\fc1 # C:\MyProjects\MyProject.gdb\fds\fc2 #"
validate = "true"

# Create the topology
out_topo = arcpy.CreateTopology_management(input_dataset, topo_name, cluster_tol)
print("Created topology.")

# Loop through the list of feature classes and add them to the topology
input_fcL = input_fc.split(";")
for fc in input_fcL:
    param = fc.rsplit(" ", 2)
    in_fc = param[0]
    xy_rank = param[1]
    z_rank = param[2]
    arcpy.AddFeatureClassToTopology_management(out_topo, in_fc, xy_rank, z_rank)
    print(arcpy.GetMessages())
    
# Loop through the list of rules and add rules to the topology
rulesL = rules.split(";")
for rule in rulesL:
    r = rule.rsplit(" ", 4)
    rule_type = r[0].replace("'","")
    in_fc1 = r[1]
    subtype1 = r[2]
    in_fc2 = r[3]
    subtype2 = r[4]
    arcpy.AddRuleToTopology_management(out_topo, rule_type, in_fc1, subtype1, in_fc2, subtype2)
    print(arcpy.GetMessages())
    
# Validate the topology
if validate == "true":
    try:
        arcpy.ValidateTopology_management(out_topo)
    except:
        print(arcpy.GetMessages())
print("Finished.")