概要
ラインの鋭角を滑らかにして、見た目の品質やカートグラフィック品質を向上させます。
図
使用法
次の 2 つのスムージング方法があります。
- [PAEK (Polynomial Approximation with Exponential Kernel)] (Python では PAEK) による方法は、スムージング許容値に基づいてラインを滑らかにします。滑らかになったラインには、元のラインよりも頂点が多くなる可能性があります。[スムージングの許容値] パラメーターは、新しい頂点の計算に使用する「移動」距離の長さを制御します。長さが短いほど詳細が維持されますが、処理時間は長くなります。
- [ベジェ挿入] による方法 (Python では BEZIER_INTERPOLATION) は、入力ラインに適合させる近似のベジェ曲線を作成することにより、許容値を使用しないでラインを滑らかにします。
[入力バリア レイヤー] パラメーターは、滑らかになったラインが横切ることを許可されないフィーチャを識別するために使用します。バリア フィーチャには、ポイント、ライン、ポリゴンのいずれかを指定できます。
大きなデータセットを処理する場合は、メモリの制限を超えることがあります。このような場合、[カートグラフィック パーティション] 環境設定で関連するポリゴン フィーチャクラスを特定することにより、パーティション単位で入力データを処理することを検討します。パーティションの境界によって定義されたデータの一部が順次処理されます。結果のフィーチャクラスは、パーティション エッジにおいてシームレスで一致した形状になります。詳細については、「パーティションを使用した大きなデータセットのジェネラライズ」をご参照ください。
出力ライン フィーチャクラスはトポロジ的に正確であるため、 入力データに含まれるトポロジ エラーはすべて、出力ライン フィーチャクラスでフラグが付けられます。出力フィーチャクラスには、入力フィーチャ ID と入力のトポロジ エラーがそれぞれ格納される InLine_FID と SmoLnFlag という 2 つのフィールドが追加されます。SmoLnFlag の値が 1 であればトポロジ エラーが存在することを示し、0 (ゼロ) であればエラーは存在しないことを示します。
構文
SmoothLine(in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option}, {in_barriers})
パラメーター | 説明 | データ タイプ |
in_features | スムージングの対象となるライン フィーチャ。 | Feature Layer |
out_feature_class | 作成される出力フィーチャクラス。 | Feature Class |
algorithm | スムージング アルゴリズムを指定します。
| String |
tolerance | PAEK アルゴリズムで使用する許容値を設定します。許容値には、0 (ゼロ) より大きい値を指定する必要があります。優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。スムージング アルゴリズムに [BEZIER_INTERPOLATION] を使用するときは、プレースホルダーとして 0 を入力する必要があります。 | Linear Unit |
endpoint_option (オプション) | これは、現在使用されていない従来のパラメーターです。以前は、閉じたラインの端点を維持するかどうかを指定するために使用されていました。このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、ツールのダイアログ ボックスでは非表示になっています。 閉じたラインの端点を維持するかどうかを指定します。このオプションは、PAEK アルゴリズムでのみ機能します。
| Boolean |
error_option (オプション) | これは、現在使用されていない従来のパラメーターです。以前は、処理中に生成された可能性のあるトポロジ エラーの処理方法を指定するために使用されていました。このパラメーターは、スクリプトとモデルでの互換性を保つために引き続きこのツールの構文に含まれていますが、ツールのダイアログ ボックスでは非表示になっています。 ラインの交差など、プロセスで発生する可能性があるトポロジ エラーの処理方法を指定します。
| 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: いいえ
- Standard: はい
- Advanced: はい