ラインの単純化 (Simplify Line) とポリゴンの単純化 (Simplify Polygon) の詳細

[ラインの単純化 (Simplify Line)] ツール、[ポリゴンの単純化 (Simplify Polygon)] ツール、および [共有エッジの単純化 (Simplify Shared Edges)] ツールは、ラインとポリゴンを単純化して、小さな縮尺でも表示できるようにフィーチャの複雑さを緩和します。これらのツールは、固有の特性と形状を維持しながらフィーチャの複雑さを緩和するために、比較的重要ではない頂点を識別および削除します。 単純化にはさまざまなアルゴリズムがあり、それぞれが少し異なる結果を生成します。

単純化のアルゴリズム

重要なポイントを保持 (Douglas-Peucker)

重要なポイントを保持 (Douglas-Peucker) (Python では algorithm='POINT_REMOVE') オプションは、高速で単純なラインの単純化アルゴリズムを提供します。このオプションは、ラインの基本的な形状を表す重要ポイントを保持し、他のすべてのポイントを削除します。アルゴリズムは、まずラインの端点を傾向線で接続します。傾向線までの各頂点の距離が、垂直方向に計測されます。許容値よりも傾向線に近い頂点は削除されます。続いて、ラインが傾向線から最も遠い頂点によって分割され、2 本の新たな傾向線が生成されます。残りの頂点については、これらの傾向線までの距離が計測されます。このプロセスは、許容値内のすべての頂点が削除されるまで繰り返されます。このオプションは、Douglas と Peucker (1973) が定義したアルゴリズムに基づいています。

重要なポイントを保持 (Douglas-Peucker) はデータ圧縮や冗長な詳細の除外を行うのに効率的です。ただし、出力されるラインには、ラインのカートグラフィック品質を低下させる見栄えの悪い鋭角やスパイクが含まれる可能性があります。重要なポイントを保持 (Douglas-Peucker) は、データの削減や圧縮が比較的少量である場合、および高いカートグラフィック品質が不要な場合に使用します。

重要な屈曲を保持 (Wang-Müller)

重要な屈曲を保持 (Wang-Müller) (Python では algorithm='BEND_SIMPLIFY') アルゴリズムは、形状認識技術を適用して屈曲を検出し、その特性を分析して、重要でないものを除外します。線形フィーチャは一連の屈曲で構成されていると考えることができます (Wang, 1996)。このとき各屈曲は、連続する頂点において屈曲角度の符号 (正または負) が同じであると定義されます。各屈曲の幾何学的プロパティの一部は、指定された単純化許容値に直径が等しい参照半円のプロパティと比較されます。これらの測定により、屈曲を保持または除去するかどうか、つまり屈曲をそのベースライン (屈曲の端点を接続したライン) で置き換えるかどうかを判定します。単純化は反復して実行され、先に小さい屈曲が除去され、結果として大きな屈曲が構成されます。生成されたラインは、重要なポイントを保持 (Douglas-Peucker) で得られる結果よりも、元のラインの主要な形状に忠実で、カートグラフィック品質も高くなります。このオプションは、Wang and Müller (1998) が定義したアルゴリズムに基づいています。

加重有効エリアの保持 (Zhou-Jones)

加重エリアの保持 (Zhou-Jones) アルゴリズム (Python の algorithm='WEIGHTED_AREA') は、最初に各頂点の有効エリアである三角形を識別する仕組みになっています。次に、各エリアの平坦度、歪度、凸性を比較するために、それらの三角形が一連のメトリクスによって重み付けされます。加重エリアを参考にしてそれらに対応する頂点を削除することで、可能な限り特徴を維持しながら、ラインを単純化します。このオプションは、Zhou and Jones (2005) が定義したアルゴリズムに基づいています。

有効エリアの保持 (Visvalingam-Whyatt)

[有効エリアの保持 (Visvalingam-Whyatt)] (Python では algorithm='EFFECTIVE_AREA') アルゴリズムは、各頂点とその 2 つの近傍が形成する三角形のサイズに基づく相対的重要性を頂点に割り当ててから、最も重要性の低い頂点を削除します。最小の三角形に関連する頂点を削除することで、ラインまたはアウトラインの性質に対する影響を最小限に抑えることができます。これは反復的に行われる処理なので、頂点を一通り削除した後、残りの頂点をもとに三角形が再計算され、この処理が続けて行われます。このオプションは、Visvalingam and Whyatt (1992) が定義したアルゴリズムに基づいています。

トポロジ整合性の維持

このツールでは、処理中にトポロジが維持されます。トポロジ エラーは発生しません。単純化によってトポロジ違反が発生する場合、これらのツールはジオメトリを 2 つのパーツに分割してから、それぞれを別々に単純化します。これは、再帰的な処理です。サブパーツもさらに分割される場合があります。この方法でトポロジを維持できない場合は、そのフィーチャの処理を中断して、近隣フィーチャを処理してから再開し、トポロジを維持できるかどうかが確認されます。

レガシー:

以前のバージョンでは、処理中にトポロジ エラーが生成される可能性がありました。これらのエラーを識別し、必要に応じて解決するためのパラメーターが用意されていました。これらのツールでトポロジ エラーが発生することはなくなったので、エラーの確認と解決の必要性はなくなりました。[トポロジ エラーの確認] (Python では error_checking_option) と [トポロジ エラーを解決] (Python では error_resolving_option) パラメーターは、スクリプトとモデルの互換性のためにツールの構文に含まれていますが、実際の機能はなくなり、ツールのダイアログには表示されません。

入力フィーチャクラス内に存在したトポロジ エラーにフラグを付けるために、SimPgnFlag フィールド ([ポリゴンの単純化 (Simplify Polygon)] の場合) または SimLnFlag フィールド ([ラインの単純化 (Simplify Line)] の場合) が出力フィーチャクラスに追加されています。以前のバージョンでは、これらのフィールドを使用して、ツールの処理によって発生したトポロジ エラーにフラグを付けていました。また、トポロジの解決でも、以前のバージョンは、フィーチャごとに許容値を変更して、それらの値を MinSimpTol フィールドと MaxSimpTol フィールドに格納していました。現在の実装では、これらの許容値フィールド内の値は同じで、[単純化許容値] パラメーターに指定された値と等しくなります。これらのフィールドのいずれかに依存する既存のモデルまたはスクリプトを必ず変更してください。

[入力バリア レイヤー] パラメーターを使用すると、単純化されるラインまたはポリゴンとクロスしてはならないフィーチャを含む 1 つ以上のフィーチャクラスを定義できます。この例としては、単純化された道路を配置できない湖と河川、等高線がクロスできない標高点やその他の測量マーカー、単純化されたデータが完全に内部に留まる必要がある行政区分などが挙げられます。

結果の解析と品質向上

ツールはラインとポリゴンのアウトラインを 1 つずつ単純化します。ラインまたはアウトラインが長くなるほど、結果の見栄えは向上します。ソース データを収集または構築する際に、次のことに注意してください。可能な場合は常に、ラインの端点を鋭角なセクションではなく、長く滑らかなセクションに配置します。

入力フィーチャクラスにおけるトポロジの問題 (交差ポイントがない状態で他のフィーチャとオーバーラップするフィーチャ) には、入力フィーチャクラス内のフィールドにフラグが付けられます。このフィールドの名前は、SimPgnFlag ([ポリゴンの単純化 (Simplify Polygon)] の場合) と SimLinFlag ([ラインの単純化 (Simplify Line)] の場合) です。これらのフィールドの 1 という値は、入力フィーチャクラス内のそのフィーチャにトロポジ エラーが存在することを示しています。

参照用に、入力フィーチャのオブジェクト ID に対応する ID フィールドも出力フィーチャクラスに追加されています。このフィールドは、InPoly_FID ([ポリゴンの単純化 (Simplify Polygon)] ツールの場合) または InLine_FID ([ラインの単純化 (Simplify Line)] ツールの場合) と呼ばれます。また、使用された許容値を格納するために、MinSimpTol および MaxSimpTol フィールドが出力に追加されています。

長さがゼロのラインに単純化されたラインの端点 ([ラインの単純化 (Simplify Line)] の場合)、または面積がゼロのポリゴンや [最小エリア] パラメーターで定義された最小エリアより小さなポリゴンに単純化されたポリゴン ([ポリゴンの単純化 (Simplify Polygon)] の場合)、あるいは両方 (共有エッジの単純化 (Simplify Shared Edges) の場合) を表すポイント フィーチャのポイント出力フィーチャクラスが作成されます。空のジオメトリまたは [最小エリア] パラメーターで定義された最小エリアより小さなポリゴンに単純化されたポリゴン。

大規模データセットの操作

これらのツールにおけるトポロジの処理では、複数のフィーチャを同時に考慮する必要があります。大規模なデータセットを操作するとき、メモリ制限を超える可能性があります。この場合、パーティションごとに入力データを処理することを検討してください。これには、[カートグラフィック パーティション] 環境設定で、入力データをカバーおよび分割する、関連のポリゴン フィーチャを特定します。パーティションの境界によって定義されたデータの一部が順次単純化されますが、出力フィーチャクラスはパーティションのエッジにおいてシームレスかつ一致しています。詳細については、「パーティションを使用した大きなデータセットのジェネラライズ」をご参照ください。

参照

Douglas, David H., and Thomas K. Peucker. 1973. "Algorithms for the Reduction of the Number of Points Required to Represent a Digitised Line or its Caricature." The Canadian Cartographer, 10(2): 112–122.

Wang, Zeshen, and Jean-Claude Müller. 1998. "Line Generalization Based on Analysis of Shape Characteristics." Cartography and Geographic Information Systems 25(1): 3–15.

Zhou, Sheng, and, Christopher B. Jones. 2005. "Shape-Aware Line Generalisation with Weighted Effective Area." In Developments in Spatial Handling: 11th International Symposium on Spatial Handling, edited by Peter F. Fisher, 369–80.

Visvalingam, M., and, J. D. Whyatt. 1992. "Line Generalisation by Repeated Elimination of the Smallest Area," Cartographic Information Systems Research Group (CISRG) Discussion Paper 10, The University of Hull.

関連トピック