パーティションを使用した大きなデータセットのジェネラライズ
データの複数テーマを状況に応じて考慮するジオプロセシング ツールは、処理が始まる前にすべての入力データをメモリに読み込む必要があります。大きなデータセットまたは膨大な入力データセットによって、これらのツールのメモリの制限を容易に超える可能性があります。分割は、大量のデータをより小さく扱いやすいフィーチャのセットに分割する方法です。
分割されたデータにツールを実行すると、各パーティションが順次処理されます。パーティションの境界上または境界付近のフィーチャは、不一致が起こらないように密接して処理されます。各パーティション外の別データは、ツールによって読み込まれ、処理中に考慮されます。ただし、その時点ではパーティション内のフィーチャだけが変更されます。結果的に、シームレスな最終出力が生成されます。
通常、すべての入力レイヤ全体で 100,000 を超えるフィーチャがある場合、分割を使用してツールを実行します。以下のツールで分割が使用できます。
- ポリゴンの集約(Aggregate Polygons)ツール
- 道路形状の単純化(Collapse Road Detail)ツール
- 建物ポリゴンの集約(Delineate Built-Up Areas)ツール
- シンボル表現の競合を検出(Detect Graphic Conflict)ツール
- 道路のマージ(Merge Divided Roads)ツール
- 建物の競合を解決(Resolve Building Conflicts)ツール
- 道路の競合を解決(Resolve Road Conflicts)ツール
- 道路網の間引き(Thin Road Network)ツール
分割を有効にする方法
上記リストのジオプロセシング ツールで分割を有効にするには、[カートグラフィック パーティション] ジオプロセシング環境設定に分割フィーチャクラスを指定します。この設定を使用すると、適用できるツールで、一度にすべてではなくパーティション単位で順次、入力フィーチャを処理できるようになります。
分割フィーチャとして、入力データを概念的に論理チャンクに分割するポリゴン フィーチャクラスを指定できます。分割フィーチャクラスは、対象エリアを十分にカバーし、入力フィーチャを均等に分割する必要があります。理想的なのは、すべての入力レイヤからのフィーチャを対象として、各パーティションにおよそ 50,000 を超えないフィーチャを含めることです。パーティションが大きすぎる場合にも、メモリの制限を超えてしまいます。一方で、非常に小さいパーティションを使用すると、ツールの状況に応じた処理機能が低下して、処理結果の品質が損なわれる可能性があります。
パーティションとして使用するもの
分割フィーチャのソースは複数あります。印刷されたマップの連続セットに表示されるデータ範囲など、固有の論理パーティションをすでに含んでいるワークフローもあります。マップ シートがポリゴンとしてモデル化される場合、理想的なパーティションができます。この場合、[インデックス フィーチャ(格子状)の作成(Grid Index Features)] ツールを使用して、矩形ポリゴン フィーチャのグリッドを作成します。これらは、入力データが対象エリア全体に比較的均一に分散されている場合に妥当なパーティションを作成します。
Web マッピングでは、キャッシュ タイル スキーマによって適切なパーティションのセットを作成できます。[マップ サービス キャッシュ タイル スキーマ → ポリゴン(Map Server Cache Tiling Scheme To Polygons)] ツールを使用して、このスキーマを表すポリゴンのグリッドを作成します。マップ シートの範囲の使用と同様に、これは、入力フィーチャが均一に分散されている場合に有効なワークフローです。
ワークフローによっては、データセットに、県または郵便番号など、隣接するパーティションを形成するフィーチャクラスを含む場合もあります。これらのフィーチャが入力フィーチャを適切にカバーして分割していると考えられる場合は、パーティションとしての使用が可能になります。これは、データがさまざまな密度で分布している場合にすぐれた方法です。たとえば、郵便番号のポリゴンは、住宅の密度が高い場所で小さくなります。したがって、郵便番号は、建物の競合を解決する場合にすぐれたパーティションを作成します。
そのまま使用できる適切なポリゴンがない場合は、特に分割を目的としてポリゴンを作成することができます。[カートグラフィック パーティションの作成(Create Cartographic Partitions)] ツールを使用して、ほぼ等しい数の入力フィーチャを取り囲むポリゴンの連続したセットを作成します。
パーティション要件
- 各パーティションのサイズは、ツールの処理能力を超える入力データを取り囲まないように設定する必要があります。この閾値は、通常、すべての入力レイヤからのフィーチャの数とそのフィーチャの複雑さから決定されます。これは、使用するツールやパラメータの設定によっても多少異なります。原則として、およそ 50,000 を超えない入力フィーチャを含むパーティションを考えます。
- 分割フィーチャは、有効な空間参照を持つポリゴン フィーチャクラスまたはポリゴン シェープ ファイルです。
- 分割フィーチャは、トポロジ的に正しい必要があります。隣接するポリゴンのエッジは、一致している必要があり、重なりがあってはいけません。分割フィーチャの間のホールは、許容されます。ただし、分割フィーチャは、マルチパート ポリゴンまたはホールを持つポリゴンであってはいけません。ポリゴンは、シンプルで、重なり合わないジオメトリである必要があります。
- 各パーティション ポリゴンは、ゼロより大きい領域を持つ必要があります。NULL または空のパーティションは、処理されず、警告が出されます。これらのパーティションは、処理中に無視されます。
- 分割フィーチャは、この設定を反映するツールによって処理される入力フィーチャの論理的分割である必要があります。入力フィーチャは、分割フィーチャに均等に分配される必要があります。
- 入力フィーチャの範囲は、分割フィーチャにカバーされている必要があります。
- 分割ジオメトリは、できるだけ単純である必要があります。ジオメトリが複雑だと、分割が有効の場合のツールのパフォーマンスに影響をおよぼします。
分割の処理方法
分割を([カートグラフィック パーティション] ジオグラフィック環境設定で分割フィーチャクラスを指定して)有効にすると、パーティション対応のツールによって、各セクションの入力データがパーティションで指定されたとおりに処理されます。パーティションは、各パーティションの object ID の順に処理されます。マップの特定のエリアのみを処理する場合は、マップのレイヤを環境変数として使用して、処理の前に関係する分割フィーチャを選択します。
データが分割されても、1 つのパーティションの入力データの量がまだ処理ツールのメモリの制限を超える場合があります。このような場合、そのパーティションの処理は失敗となり、次のパーティションへ進みます。ジオプロセシング メッセージに、処理されなかったパーティションが示されます。分割フィーチャクラスに STATUS という名前のフィールドが追加され、処理を試みた後のフィーチャクラスの状態を示す、次のいずれかのステートメントが設定されます。
- 0 - 処理されていません
- 1 - 処理しています
- 2 - 正常に処理されました
- 3 - メモリが不足しています
- 4 - エラー
STATUS フィールドに設定された処理状態を保存する必要がある場合は、パーティション対応のツールを実行する前に、データに新しいフィールドを追加して、STATUS フィールドと等しいフィールド値を計算します。