ラインのスムージング (Smooth Line) (カートグラフィ)

サマリー

ラインの鋭角を滑らかにして、見た目の品質やカートグラフィック品質を向上させます。

ラインのスムージング (Smooth Line) ツールとポリゴンのスムージング (Smooth Polygon) ツールの詳細

[ラインのスムージング (Smooth Line)] ツールのアルゴリズム オプションの例
ラインの鋭角は PAEK またはベジェ内挿法のいずれかを使用してスムージングできます。

使用法

  • 次の 2 つのスムージング方法があります。

    • [PAEK (Polynomial Approximation with Exponential Kernel)] (Python では PAEK) による方法は、スムージング許容値に基づいてラインを滑らかにします。 滑らかになったラインには、元のラインよりも頂点が多くなる可能性があります。 [スムージングの許容値] パラメーターは、新しい頂点の計算に使用する移動経路の長さを制御します。 長さが短いほど詳細が維持されますが、処理時間は長くなります。
    • [ベジェ内挿] による方法 (Python では BEZIER_INTERPOLATION) は、入力ラインに適合させる近似のベジェ曲線を作成することにより、許容値を使用しないでラインを滑らかにします。
  • [入力バリア レイヤー] パラメーターは、滑らかになったラインが横切ることを許可されないフィーチャを識別するために使用します。 バリア フィーチャには、ポイント、ライン、ポリゴンのいずれかを指定できます。

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

    注意:

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

  • フィールド ドメイン、サブタイプ、属性ルールの転送環境がオフの場合でも、ドメインとサブタイプは出力にコピーされます。

  • 出力ライン フィーチャクラスはトポロジ的に正確であるため、 入力データに含まれるトポロジ エラーはすべて、出力ライン フィーチャクラスでフラグが付けられます。 出力フィーチャクラスには、入力フィーチャ ID と入力のトポロジ エラーがそれぞれ格納される InLine_FIDSmoLnFlag という 2 つのフィールドが追加されます。 SmoLnFlag の値が 1 であればトポロジ エラーが存在することを示し、値が 0 (ゼロ) であればエラーは存在しないことを示します。

    レガシー:

    ArcGIS Pro 2.2 以前のバージョンでは、このツールの [リングの終点を保持] (Python の場合は endpoint_option) パラメーターを使用して、孤立したポリゴン リングの終点を維持するかどうかを指定していました。 このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、ツールのダイアログ ボックスでは無視され、非表示になっています。

パラメーター

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

スムージングの対象となるライン フィーチャ。

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

作成される出力フィーチャクラス。

Feature Class
スムージング アルゴリズム

スムージング アルゴリズムを指定します。

  • PEAK (Polynomial Approximation with Exponential Kernel)Polynomial Approximation with Exponential Kernel の略です。 スムージング後のラインが入力ラインの頂点を通らないように計算します。 これがデフォルトです。
  • ベジェ内挿頂点と頂点の間にベジェ曲線を適合させます。 スムージング後のラインは、入力ラインの頂点を通ります。 このアルゴリズムは許容値を必要としません。 近似のベジェ曲線が出力されます。
String
スムージングの許容値

[PAEK (Polynomial Approximation with Exponential Kernel)] アルゴリズムで使用する許容値。 許容値には、0 (ゼロ) より大きい値を指定する必要があります。 優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。 このパラメーターは、[ベジェ内挿] アルゴリズムを使用する場合は使用不可になります。

Linear Unit
閉じたラインに対して終点を保持
(オプション)

これは、現在使用されていない従来のパラメーターです。 以前は、閉じたラインの端点を維持するかどうかを指定するために使用されていました。 このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、ツールのダイアログ ボックスでは非表示になっています。

閉じたラインの端点を維持するかどうかを指定します。 このオプションは、PAEK アルゴリズムでのみ機能します。

  • オン - 閉じたラインの端点が維持されます。 これがデフォルトです。
  • オフ - 閉じたラインの端点を維持せず、スムージングします。
Boolean
トポロジ エラーの処理
(オプション)

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

  • トポロジ エラーをチェックしないトポロジ エラーは特定されません。 これがデフォルトです。
  • トポロジ エラーをフラグ付けするトポロジ エラーが見つかった場合はフラグを付けます。
  • トポロジ エラーの解決トポロジ エラーが見つかった場合は解決します。
String
入力バリア レイヤー
(オプション)

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

Feature Layer

arcpy.cartography.SmoothLine(in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option}, {in_barriers})
名前説明データ タイプ
in_features

スムージングの対象となるライン フィーチャ。

Feature Layer
out_feature_class

作成される出力フィーチャクラス。

Feature Class
algorithm

スムージング アルゴリズムを指定します。

  • PAEKPolynomial Approximation with Exponential Kernel の略です。 スムージング後のラインが入力ラインの頂点を通らないように計算します。 これがデフォルトです。
  • BEZIER_INTERPOLATION頂点と頂点の間にベジェ曲線を適合させます。 スムージング後のラインは、入力ラインの頂点を通ります。 このアルゴリズムは許容値を必要としません。 近似のベジェ曲線が出力されます。
String
tolerance

PAEK アルゴリズムで使用する許容値。 許容値には、0 (ゼロ) より大きい値を指定する必要があります。 優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。 スムージング アルゴリズムに BEZIER_INTERPOLATION を使用するときは、プレースホルダーとして 0 を入力する必要があります。

Linear Unit
endpoint_option
(オプション)

これは、現在使用されていない従来のパラメーターです。 以前は、閉じたラインの端点を維持するかどうかを指定するために使用されていました。 このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、ツールのダイアログ ボックスでは非表示になっています。

閉じたラインの端点を維持するかどうかを指定します。 このオプションは、PAEK アルゴリズムでのみ機能します。

  • FIXED_CLOSED_ENDPOINT閉じたラインの端点が維持されます。 これがデフォルトです。
  • NO_FIXED閉じたラインの端点を維持せず、スムージングします。
Boolean
error_option
(オプション)

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

  • NO_CHECKトポロジ エラーは特定されません。 これがデフォルトです。
  • FLAG_ERRORSトポロジ エラーが見つかった場合はフラグを付けます。
  • RESOLVE_ERRORSトポロジ エラーが見つかった場合は解決します。
String
in_barriers
[in_barriers,...]
(オプション)

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

Feature Layer

コードのサンプル

SmoothLine (ラインのスムージング) の例 (Python ウィンドウ)

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

import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SmoothLine("contours.shp", "C:/output/output.gdb/smoothed_contours", "PAEK", 100)
SmoothLine (ラインのスムージング) の例 2 (スタンドアロン スクリプト)

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

# Name: SmoothLine_Example2.py
# Description: Simplify and then Smooth coastlines

# Import system modules
import arcpy
import arcpy.cartography as CA

# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"

# Set local variables
inCoastlineFeatures = "coastlines"
barriers = "C:/data/Portland.gdb/Structures/buildings"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/coastlines_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/coastlines_smoothed"

# Simplify coastlines.
CA.SimplifyLine(inCoastlineFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 
                "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK", barriers)

# Smooth coastlines.
CA.SmoothLine(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "", 
              "FLAG_ERRORS", barriers)

ライセンス情報

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

関連トピック