ラインの単純化 (Simplify Line) (カートグラフィ)

サマリー

基本的な形状を維持しながら、相対的に不要な頂点を取り除くことによってラインを単純化します。

ラインの単純化ツールの図
ここでは、比較のために、単純化のアルゴリズムの結果の例を示しています。

使用法

  • このツールでは、次のように、それぞれの目的に応じた異なる単純化のアルゴリズムを使用します。 このアルゴリズムの詳細については、「ラインの単純化とポリゴンの単純化の詳細」をご参照ください。

    [単純化のアルゴリズム] パラメーターのオプションを以下に示します。

    • [重要なポイントを保持 (Douglas-Peucker)] アルゴリズム (Python の "POINT_REMOVE") は、相対的に不要な頂点を識別して削除し、より小さな縮尺で表示できるようにデータを単純化します。 これは、このツールの単純化のアルゴリズム オプションのうちで最も高速です。 このオプションは、多くの場合、データ圧縮または大まかな単純化のために使用されます。 結果として生成されるラインの鋭角は、許容値が大きくなるにつれ大幅に鋭くなります。
    • [重要な屈曲を保持 (Wang-Müller)] アルゴリズム (Python の "BEND_SIMPLIFY") は、相対的に意味のない屈曲を識別して削除し、より小さな縮尺で表示できるようにデータを単純化します。 これは、一般に、[重要なポイントを保持 (Douglas-Peucker)] オプションと比べて、入力ジオメトリに対してより正確な結果を生成しますが、処理により多くの時間がかかることがあります。
    • [加重有効エリアの保持 (Zhou-Jones)] アルゴリズム (Python の "WEIGHTED_AREA") は、最初に各頂点の有効エリアである三角形を識別する仕組みになっています。 次に、各エリアの平坦度、歪度、凸性を比較するために、三角形が一連のメトリクスによって重み付けされます。 加重エリアを参考にしてそれらに対応する頂点を削除することで、可能な限り特徴を維持しながら、ラインを単純化します。
    • [有効エリアを保持 (Visvalingam-Whyatt)] アルゴリズム (Python の "EFFECTIVE_AREA") は、頂点を削除することで、可能な限り特徴を維持しながら、ラインを単純化するために、各頂点の有効エリアである三角形を識別します。

  • [単純化許容値] パラメーターの値は、単純化の度合いを決定します。 許容値が大きくなるほど、生成されるジオメトリが粗大化します。 許容値が小さくなるほど、入力をより正確に表すジオメトリが生成されます。 MinSimpTol フィールドと MaxSimpTol フィールドが、使用された許容値を格納するために出力に追加されます。

    レガシー:

    ArcGIS Pro 1.4 より前のこのツールのバージョンでは、トポロジの解決過程で、フィーチャ単位で許容値が変更され、それらの値が MinSimpTol フィールドと MaxSimpTol フィールドに格納されていました。 現在、これらのフィールドの値は、[単純化許容値] パラメーターに指定された許容値と同じままになります。 これらのフィールドに依存する既存のモデルおよびスクリプトを必ず変更してください。

    • [重要なポイントを保持 (Douglas-Peucker)] アルゴリズムの場合、許容値は、各頂点と新規作成されたラインとの間の最大許容垂直距離を示します。
    • [重要な屈曲を保持 (Wang-Müller)] アルゴリズムの場合、許容値は、有意な屈曲に近似する円の半径を示します。
    • [加重有効エリアを保持 (Zhou-Jones)] アルゴリズムの場合、許容値の二乗は、3 つの隣接する頂点によって定義される有意な三角形の面積を示します。 三角形が正三角形から逸脱するほど、与えられる重み付けが大きくなり、削除される可能性が低くなります。
    • [有効エリアを保持 (Visvalingam-Whyatt)] アルゴリズムの場合、許容値の二乗は、3 つの隣接する頂点によって定義される有意な三角形の面積を示します。

  • [長さゼロのラインをポイントとして保持] パラメーターを使用すると、データの空間的許容値よりも小さいすべてのラインのエンドポイントを格納するための出力ポイント フィーチャクラスを作成できます。 [出力フィーチャクラス] パラメーター値と同じ名前と場所を接尾辞 _Pnt とともに使用して、出力ポイントが生成されます。 出力ライン フィーチャクラスには、入力フィーチャクラスのすべてのフィールドが含まれています。 出力ポイント フィーチャクラスには、これらのフィールドは含まれません。

  • ジオメトリを単純化すると、フィーチャ間の自己交差やオーバーラップなどのトポロジ エラーが生じる可能性があります。 [トポロジ エラーの処理] パラメーターには、以下の場合の対処を決定するための 3 つのオプションがあります。

    • [トポロジ エラーをチェックしない] - トポロジ エラーを識別しません。 処理はより速く行われます。 データのトポロジの観点からの正確性に自信がある場合は、このオプションを使用します。
    • [トポロジ エラーをフラグ付けする] - トポロジ エラーを識別してフラグを付けます。 出力フィーチャクラスには、InLine_FID フィールドおよび SimLnFlag フィールドが含まれます。 InLine_FID フィールドには、入力フィーチャの ID が含まれます。 SimLnFlag フィールドには、トポロジ エラーが存在する場合は 1 の値が、エラーが存在しない場合は 0 (ゼロ) の値が含まれます。
    • [トポロジ エラーの解決] - 出力にトポロジ エラーは作成されません。入力に存在するエラーは、交点に頂点が挿入されます。 共有エッジなどのフィーチャ間の既存のトポロジ関係は維持されます。 処理時間は長くなります。 出力フィーチャクラスには、InLine_FID フィールドおよび SimLnFlag フィールドが含まれます。 InLine_FID フィールドには、入力フィーチャ ID が含まれます。 入力にトポロジ エラーが存在する場合、SimLnFlag フィールドの値は 1 になり、エラーが存在しない場合は 0 (ゼロ) になります。
    レガシー:

    ArcGIS Pro 1.4 より前のバージョンでは、ツールは [トポロジ エラーのチェック] および [トポロジ エラーを解決] パラメーターを使用してトポロジ エラーを処理します。 これらのパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、現在では無視され、[ジオプロセシング] ウィンドウでは非表示になっています。 SimLnFlag フィールドは、処理中にこのツールによって生成されたトポロジ エラーにフラグを付けるために使用されていました。 このフィールドは、入力内に存在するエラーを識別します。

  • [入力バリア レイヤー] パラメーターは、単純化されたラインが横切ることを許可されないフィーチャを識別するために使用します。 バリア フィーチャには、ポイント、ライン、ポリゴンのいずれかを指定できます。

  • ジオデータベース フィールド プロパティの転送」環境がオフの場合でも、ドメインとサブタイプは出力にコピーされます。

  • 大きなデータセットを処理する場合は、メモリの制限を超えることがあります。 このような場合、「カートグラフィック パーティション」環境設定で、関連するポリゴン フィーチャクラスを特定することによって、パーティション単位で入力データを処理することを検討します。 パーティションの境界によって定義されたデータの一部が順次処理されます。 結果のフィーチャクラスは、パーティション エッジにおいてシームレスで一致した形状になります。 詳細については、「パーティションを使用した大きなデータセットのジェネラライズ」をご参照ください。

  • 注意:

    [トポロジ エラーの処理] パラメーターが [トポロジ エラーをチェックしない] または [トポロジ エラーをフラグ付けする] に設定されている場合、カートグラフィック パーティション環境設定は無視されます。

パラメーター

ラベル説明データ タイプ
入力フィーチャ

単純化する入力ライン フィーチャ。

Feature Layer
出力フィーチャクラス

単純化された出力ライン フィーチャクラス。 入力フィーチャクラスのすべてのフィールドが含まれます。 出力ライン フィーチャクラスはトポロジ的に正確であるため、 このツールでトポロジ エラーが生成されることはありません。ただし、入力データに含まれるトポロジ エラーは、出力ライン フィーチャクラスでフラグが付けられます。 出力フィーチャクラスには、入力フィーチャ ID と入力のトポロジ エラーがそれぞれ格納される InLine_FID フィールドと SimLnFlag フィールドが追加されます。 SimLnFlag の値が 1 であれば入力のトポロジ エラーが存在することを示し、値が 0 (ゼロ) であれば入力エラーは存在しないことを示します。

Feature Class
単純化のアルゴリズム

使用するラインの単純化のアルゴリズムを指定します。

  • 重要なポイントを保持 (Douglas-Peucker)ラインの基本的な形状を保つ重要なポイントを保持し、他のすべてのポイントを削除します (Douglas-Peucker)。 これがデフォルトです。
  • 重要な屈曲を保持 (Wang-Müller)重要な屈曲を保持し、不要な屈曲をラインから削除します (Wang-Müller)。
  • 加重有効エリアを保持 (Zhou-Jones)三角形で重み付けされた有効エリアである三角形を形成する頂点を保持します (Zhou-Jones)。
  • 有効エリアを保持 (Visvalingam-Whyatt)有効エリアである三角形を形成する頂点を保持します (Visvalingam-Whyatt)。
String
単純化許容値

使用する単純化の度合い。 単位は自由に選択できます。選択しない場合、入力の単位が使用されます。 MinSimpTol フィールドと MaxSimpTol フィールドの両方が、処理が行われたときに使用された許容値を格納するために出力に追加されます。

  • [重要なポイントを保持 (Douglas-Peucker)] アルゴリズムの場合、許容値は、各頂点と新規作成されたラインとの間の最大許容垂直距離を示します。
  • [重要な屈曲を保持 (Wang-Müller)] アルゴリズムの場合、許容値は、有意な屈曲に近似する円の半径を示します。
  • [加重有効エリアを保持 (Zhou-Jones)] アルゴリズムの場合、許容値の二乗は、3 つの隣接する頂点によって定義される有意な三角形の面積を示します。 三角形が正三角形から逸脱するほど、与えられる重み付けが大きくなり、削除される可能性が低くなります。
  • [有効エリアを保持 (Visvalingam-Whyatt)] アルゴリズムの場合、許容値の二乗は、3 つの隣接する頂点によって定義される有意な三角形の面積を示します。
Linear Unit
トポロジ エラーの解決
(オプション)
レガシー:

これは、現在使用されていない従来のパラメーターです。 以前は、処理中に生成された可能性のあるトポロジ エラーの解決方法を示すために使用されていました。 このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、[ジオプロセシング] ウィンドウでは非表示になっています。

Boolean
長さゼロのラインをポイントとして保持
(オプション)

空間的許容値よりも小さいラインのエンドポイントを格納するための出力ポイント フィーチャクラスを作成するかどうかを指定します。 [出力フィーチャクラス] パラメーター値と同じ名前と場所を接尾辞 _Pnt とともに使用して、出力ポイントが生成されます。

  • オン - 単純化された長さゼロのラインのエンドポイントを格納するための派生した出力ポイント フィーチャクラスが作成されます。 これがデフォルトです。
  • オフ - 派生した出力ポイント フィーチャクラスを作成しません。
Boolean
トポロジ エラーのチェック
(オプション)
注意:

これは、現在使用されていない従来のパラメーターです。 以前は、処理中に生成された可能性のあるトポロジ エラーの処理方法を示すために使用されていました。 このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、[ジオプロセシング] ウィンドウでは非表示になっています。

Boolean
入力バリア レイヤー
(オプション)

単純化の際にバリアとしての役割を果たすフィーチャを含む入力。 単純化された結果のラインはバリア フィーチャに接したり、バリア フィーチャを横切ったりしません。 たとえば、コンター ラインを単純化する場合、スポット標高フィーチャ入力をバリアとして使用すると、単純化されたコンター ラインによって、これらのポイント間が単純化されないようにすることができます。 出力は、計測されたスポット標高によって示された標高に従います。

Feature Layer
トポロジ エラーの処理
(オプション)

トポロジ エラーの対処方法を指定します。 トポロジ エラーは単純化プロセス中に発生する可能性があり、ラインの交差やラインの重なりなどがあります。

  • トポロジ エラーをチェックしないトポロジ エラーは特定されません。 これがデフォルトです。
  • トポロジ エラーをフラグ付けするトポロジ エラーにフラグを付けます。
  • トポロジ エラーの解決トポロジ エラーを解決します。
String

派生した出力

ラベル説明データ タイプ
長さゼロに単純化されたライン

[長さゼロのラインをポイントとして保持] パラメーターがオンの場合は、データの空間的許容値よりも小さいラインのエンドポイントを格納するための出力ポイント フィーチャクラスが作成されます。

Feature Class

arcpy.cartography.SimplifyLine(in_features, out_feature_class, algorithm, tolerance, {error_resolving_option}, {collapsed_point_option}, {error_checking_option}, {in_barriers}, {error_option})
名前説明データ タイプ
in_features

単純化する入力ライン フィーチャ。

Feature Layer
out_feature_class

単純化された出力ライン フィーチャクラス。 入力フィーチャクラスのすべてのフィールドが含まれます。 出力ライン フィーチャクラスはトポロジ的に正確であるため、 このツールでトポロジ エラーが生成されることはありません。ただし、入力データに含まれるトポロジ エラーは、出力ライン フィーチャクラスでフラグが付けられます。 出力フィーチャクラスには、入力フィーチャ ID と入力のトポロジ エラーがそれぞれ格納される InLine_FID フィールドと SimLnFlag フィールドが追加されます。 SimLnFlag の値が 1 であれば入力のトポロジ エラーが存在することを示し、値が 0 (ゼロ) であれば入力エラーは存在しないことを示します。

Feature Class
algorithm

使用するラインの単純化のアルゴリズムを指定します。

  • POINT_REMOVEラインの基本的な形状を保つ重要なポイントを保持し、他のすべてのポイントを削除します (Douglas-Peucker)。 これがデフォルトです。
  • BEND_SIMPLIFY重要な屈曲を保持し、不要な屈曲をラインから削除します (Wang-Müller)。
  • WEIGHTED_AREA三角形で重み付けされた有効エリアである三角形を形成する頂点を保持します (Zhou-Jones)。
  • EFFECTIVE_AREA有効エリアである三角形を形成する頂点を保持します (Visvalingam-Whyatt)。
String
tolerance

使用する単純化の度合い。 単位は自由に選択できます。選択しない場合、入力の単位が使用されます。 MinSimpTol フィールドと MaxSimpTol フィールドの両方が、処理が行われたときに使用された許容値を格納するために出力に追加されます。

  • POINT_REMOVE アルゴリズムの場合、許容値は、各頂点と新規作成されたラインとの間の最大許容垂直距離を示します。
  • BEND_SIMPLIFY アルゴリズムの場合、許容値は、有意な屈曲に近似する円の半径を意味します。
  • WEIGHTED_AREA アルゴリズムの場合、許容値の二乗は、3 つの隣接する頂点によって定義される有意な三角形の面積を示します。 三角形が正三角形から逸脱するほど、与えられる重み付けが大きくなり、削除される可能性が低くなります。
  • EFFECTIVE_AREA アルゴリズムの場合、許容値の二乗は、3 つの隣接する頂点によって定義される有意な三角形の面積を示します。
Linear Unit
error_resolving_option
(オプション)
レガシー:

これは、現在使用されていない従来のパラメーターです。 以前は、処理中に生成された可能性のあるトポロジ エラーの解決方法を示すために使用されていました。 このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、[ジオプロセシング] ウィンドウでは非表示になっています。

Boolean
collapsed_point_option
(オプション)

空間的許容値よりも小さいラインのエンドポイントを格納するための出力ポイント フィーチャクラスを作成するかどうかを指定します。 out_feature_class パラメーター値と同じ名前と場所を接尾辞 _Pnt とともに使用して、出力ポイントが生成されます。

  • KEEP_COLLAPSED_POINTS単純化された長さゼロのラインのエンドポイントを格納するための派生した出力ポイント フィーチャクラスが作成されます。 これがデフォルトです。
  • NO_KEEP派生した出力ポイント フィーチャクラスを作成しません。
Boolean
error_checking_option
(オプション)
注意:

これは、現在使用されていない従来のパラメーターです。 以前は、処理中に生成された可能性のあるトポロジ エラーの処理方法を示すために使用されていました。 このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、[ジオプロセシング] ウィンドウでは非表示になっています。

Boolean
in_barriers
[in_barriers,...]
(オプション)

単純化の際にバリアとしての役割を果たすフィーチャを含む入力。 単純化された結果のラインはバリア フィーチャに接したり、バリア フィーチャを横切ったりしません。 たとえば、コンター ラインを単純化する場合、スポット標高フィーチャ入力をバリアとして使用すると、単純化されたコンター ラインによって、これらのポイント間が単純化されないようにすることができます。 出力は、計測されたスポット標高によって示された標高に従います。

Feature Layer
error_option
(オプション)

トポロジ エラーの対処方法を指定します。 トポロジ エラーは単純化プロセス中に発生する可能性があり、ラインの交差やラインの重なりなどがあります。

  • NO_CHECKトポロジ エラーは特定されません。 これがデフォルトです。
  • FLAG_ERRORSトポロジ エラーにフラグを付けます。
  • RESOLVE_ERRORSトポロジ エラーを解決します。
String

派生した出力

名前説明データ タイプ
out_point_feature_class

collapsed_point_option パラメーターが KEEP_COLLAPSED_ POINTS の場合は、データの空間的許容値よりも小さいラインのエンドポイントを格納するための出力ポイント フィーチャクラスが作成されます。

Feature Class

コードのサンプル

SimplifyLine の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで SimplifyLine 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.cartography.SimplifyLine(
    "roads.shp", 
    "C:/output/output.gdb/simplified_roads", 
    "POINT_REMOVE", 
    20)
SimplifyLine の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトで、SimplifyLine 関数を使用する方法を示します。

# Name: SimplifyLine_Example2.py
# Description: Simplify line features from two feature classes, rivers and coastlines,
# while maintaining their connections

# Import system modules
import arcpy
 
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
 
# Set local variables
inRiverFeatures = "rivers"
inCoastlineFeatures = "coastlines"

mergedFeatures = "C:/data/PortlandOutput.gdb/merged_lines"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/merged_lines_simplified"
tempLayer = "tempLyr"

outRiverFeatureClass = "C:/data/PortlandOutput.gdb/rivers_final"
outCoastlineFeatureClass = "C:/data/PortlandOutput.gdb/coastlines_final"

# Merge rivers and coastlines into one feature class, 
# assuming that they have a common f-code field 
# with value 40 for rivers and 80 for coastlines.
arcpy.management.Merge(inRiverFeatures, inCoastlineFeatures, mergedFeatures)

# Simplify all lines.
arcpy.cartography.SimplifyLine(mergedFeatures, 
                simplifiedFeatures, 
                "BEND_SIMPLIFY", 
                100, 
                "KEEP_COLLAPSED_POINTS")
 
# Select rivers and coastlines by their f-code values 
# and put them in separate feature classes.
arcpy.management.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 40")
arcpy.management.CopyFeatures(tempLayer, outRiverFeatureClass)

arcpy.management.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 80")
arcpy.management.CopyFeatures(tempLayer, outCoastlineFeatureClass)

ライセンス情報

  • Basic: No
  • Standard: Yes
  • Advanced: Yes

関連トピック