ポリゴンの単純化(Simplify Polygon) (カートグラフィ)
サマリ
基本的な形状を維持しながら不要な屈曲を取り除くことによってポリゴンを単純化します。
図
使用法
単純化する方法には 2 つあります。
- [POINT_REMOVE] は、2 つの方法のうち、より速く単純化を行うことができる方法です。これは、余分な頂点を取り除きます。この方法は、とりわけデータが既知の場合に、データ圧縮またはより粗い単純化のために使用します。結果として生成されるポリゴンの鋭角(鋭いコーナー)は、許容値が大きくなるにつれ、大幅に鋭くなるため、ポリゴンの見栄えが悪くなることがあります。
- [BEND_SIMPLIFY] は、より遅い方法ですが、一般的に、より見栄えの良い元の形状をより忠実に表す結果を生成します。これは、ポリゴンの不要な屈曲を取り除きます。この方法は、単純化の度合いを抑え、より精密にしたい場合に使用します。
-
[最小エリア] パラメータは、単純化されたポリゴンに対してのみ適用されます。単純化プロセスの完了後に最小領域より小さいサイズに縮小されたポリゴンはすべて、出力フィーチャクラスから除去されます。これは、共通のエッジを共有する一連の隣接するポリゴンの場合は、そのすべてのポリゴンの合計面積に適用されます。
-
このツールは、2 つの出力フィーチャクラスを生成します。1 つは単純化されたポリゴンを格納するためのライン フィーチャクラスであり、もう 1 つは面積ゼロに単純化されたポリゴンを表すポイントを格納するためのポイント フィーチャクラスです。出力ポイントの名前および場所は、_Pnt という接尾辞の付いた出力ポリゴン名から自動的に生成されます。出力ポリゴンにはすべての入力フィールドが含まれ、出力ポイントには入力フィールドは一切含まれません。
マルチパート ポリゴンは、個別のパートとして単純化することができます。
出力のトポロジ エラーを処理するためのオプションは 3 つあります。
- NO_CHECK:単純化プロセスによって発生したトポロジ エラーは確認されません。処理はより速く行われます。データのトポロジの観点からの正確性に自信がある場合にのみ、このオプションを使用します。
- FLAG_ERRORS:単純化プロセスによって発生したトポロジ エラーにフラグが付けられます。トポロジ エラーを識別することのほうがエラーを解決することよりも重要である場合に、このオプションを使用します。このオプションは、編集セッションでは使用できません。
- 出力ポリゴンには、フィーチャにトポロジ エラーがあるかどうかを示す 2 つの新しいフィールドが含まれます。[InPoly_FID] には入力フィーチャの ID が含まれ、[SimPlyFlag] にはトポロジ エラーが含まれます。
- [InPoly_FID] フィールドは、単純化されたポイントをそれぞれの入力ポリゴンに関連付けます。
- [SimPlyFlag] フィールドの値が 1 であればエラーが発生したことを示し、0 であればエラーは発生しなかったことを示します。
- フラグの値は、トポロジ エラーが解決された後も保持されます。[SimPlyFlag] フィールドを使用して、トポロジ エラーが発生したフィーチャを調べます。
- RESOLVE_ERRORS:単純化プロセスによって発生したトポロジ エラーを修復します。処理時間は長くなります。このオプションは、編集セッションでは使用できません。
- 指定した許容値が大半のポリゴンについて適切であっても、すべてのポリゴンについて適切であるとは限りません(特に密集したエリアの場合)。1 回目の単純化の後にトポロジ エラーが検出された場合は、関連する境界線分が特定され(すべてのポリゴンではなく)、より小さい許容値が使用されます。
- 1 回目に使用された許容値の 50% の値が、新しい許容値として使用されます。この新しい許容値は、これらの線分を再度単純化するときに使用されます。この操作は、トポロジ エラーが検出されなくなるまで反復されます。
- 出力ポリゴン フィーチャクラスには、入力と同じ数のポリゴンが含まれ、反復によって各ポリゴンが単純化されるときに実際に使用された最大許容値を格納する [MaxSimpTol] と最小許容値を格納する [MinSimpTol] の 2 つの新しいフィールドが含まれます。エラーが発生しなかった場合、[MaxSimpTol] および [MinSimpTol] の値は、指定された単純化の許容値と同じになります。
- [単純化の許容値] の値が比較的大きい値であれば、大きいポリゴンの近くにある小さいポリゴンが大きいポリゴンの中に含められることがあります。この空間リレーションシップ エラーは、プログラムによって検出されません。
- [NO_CHECK] オプションと [FLAG_ERRORS] オプションを使用する場合、単純化プロセスの間に自己交差ジオメトリが作成されることがあり、それが作成された場合は、自動的に修復されます。たとえば、ポリゴンが自己交差する場合、そのポリゴンは、どのパートも交差しないように修復されてマルチパート ポリゴンになりますが、そのポリゴンはまだ自己交差しているように見えます。
出力ポイントは、[NO_CHECK] または [FLAG_ERRORS] が使用される場合、または [長さゼロのラインをポイントとして保持] チェックボックスがオンになっている場合に設定されます。入力ポリゴンに複数のパートが含まれており、その 1 つが単純化されたポイントになった場合は、そのパートを表すポイントも出力ポイントに含められます。
構文
パラメータ | 説明 | データ タイプ |
in_features |
単純化するポリゴン フィーチャ。 | Feature Layer |
out_feature_class |
作成される出力ポリゴン フィーチャクラス。 | Feature Class |
algorithm |
ポリゴンの単純化アルゴリズムを指定します。
| String |
tolerance |
単純化の度合いを決定する許容値。許容値には、0(ゼロ)より大きい値を指定する必要があります。優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。
| Linear unit |
minimum_area (オプション) |
単純化されたポリゴンのために保持される最小領域を設定します。デフォルト値は 0 であり、すべてのポリゴンが保持されます。指定する値の単位は自由に選択できます。デフォルトはフィーチャの単位です。 | Areal unit |
error_option (オプション) |
ラインの交差、ラインの重なり、単純化された長さゼロのラインなどのプロセスで発生する可能性があるトポロジ エラーの処理方法を指定します。
| String |
collapsed_point_option (オプション) |
プロセスで単純化された面積ゼロのポリゴンが検出された場合に、ポイントとして保持するかどうかを指定します。このオプションが適用されるのは、[NO_CHECK] または [FLAG_ERRORS] が指定されている場合のみです。
| Boolean |
コードのサンプル
次の Python ウィンドウ スクリプトは、SimplifyPolygon(ポリゴンの単純化)ツールをイミディエイト モードで使用する方法を示しています。
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)
次のスタンドアロン スクリプトは、SimplifyPolygon(ポリゴンの単純化)ツールの使用方法を示しています。
# Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inLakeFeatures = "lakes"
eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed"
# Eliminate small islands in lake polygons.
DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, "CONTAINED_ONLY")
# Simplify lake polygons.
CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 200, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")