ディゾルブ(Dissolve) (データの管理)
図
使用法
-
ディゾルブによって集約されるフィーチャの属性は、さまざまな統計情報を使用して、集計したり説明したりできます。属性の集計に使用される統計情報は、「統計タイプ + アンダースコア + 入力フィールド名」という命名規則に従って名前が付けられ、出力フィーチャクラスに単一フィールドとして追加されます。たとえば、POP という名前のフィールドに合計(SUM)の統計情報が使用されている場合、SUM_POP という名前のフィールドが出力されます。
-
[ディゾルブ(Dissolve)] は、出力フィーチャクラスに非常に大きなフィーチャを作成する可能性があります。特に、[ディゾルブ フィールド] に一意の値が少なかったり、すべてのフィーチャを 1 つのフィーチャにディゾルブする場合に起こりやすくなります。非常に大きなフィーチャは、マップの描画時や編集時に、処理または表示上の問題や性能の低下を引き起こす可能性があります。ディゾルブが 1 台のコンピュータ上に最大サイズのフィーチャを出力し、この出力を使用可能なメモリの少ないコンピュータに移動した場合にも、問題が発生する可能性があります。これらの問題を回避するには、[マルチパート フィーチャを作成] パラメータの [SINGLE_PART] オプションを使用して、大きくなりそうなマルチパート フィーチャを多くの小さなフィーチャに分割します。[ディゾルブ(Dissolve)] ツールで作成された極端に大きなフィーチャについては、処理、表示、または性能の問題を解決するために、[フィーチャの分割(Dice)] ツールの使用によるフィーチャの分割が必要になる可能性があります。
-
すべての統計情報計算から NULL 値が除外されます。たとえば、10、5、および NULL の平均値は 7.5 です((10+5)/2)。COUNT ツールは、統計情報計算に含まれている値の数を返しますが、この例では 2 を返します。
-
このツールは非常に大きなデータセットをタイル化し、パフォーマンスとスケーラビリティを向上します。詳細については、「大きなデータセットのジオプロセシング」をご参照ください。
-
物理メモリの使用可能な容量は、1 つの出力フィーチャに処理およびディゾルブできる入力フィーチャの量(と複雑さ)の制限となる場合があります。この制限のために、ディゾルブ処理に使用可能以上のメモリを要求したことによるエラーが発生する可能性があります。これを防ぐために、[ディゾルブ(Dissolve)] は適応型分割アルゴリズムを使用して入力フィーチャを分割処理する場合があります。分割されたフィーチャを判定するには、このツールの結果に [頻度(Frequency)] ツールを実行し、[頻度フィールド] パラメータに対して、ディゾルブ処理で使用したのと同じフィールドを指定します。頻度値が 2 のレコードが分割されています。ArcGIS で使用できないほど大きなフィーチャが作成されないように、タイル境界は出力フィーチャ内に保持されます。
注意:適応型分割アルゴリズムを使用して入力を分割処理したディゾルブの出力に対して、再び [ディゾルブ(Dissolve)] を実行しても、出力中のフィーチャの数はほとんど減りません。出力フィーチャの最大サイズは、実行時に使用可能なメモリサイズによって決まります。そのため、タイルを含む出力は、ディゾルブがこれ以上リソースを使用すると、メモリ不足や使用不可能なフィーチャなどを引き起こす恐れがあることを示しています。さらに、ディゾルブで作成された出力に対して、再び [ディゾルブ(Dissolve)] を実行すると、ほとんど成果を得られずに相当な性能低下を招くだけでなく、予期しない障害を引き起こす可能性さえあります。
-
[ディゾルブ フィールド] パラメータの [フィールドの追加] ボタンは、ModelBuilder だけで使用されます。ModelBuilder では、先のツールが実行されていないか、出力データが存在しないために、[ディゾルブ フィールド] パラメータにフィールド名が表示されない場合があります。[フィールドの追加] ボタンで必要なフィールドを追加することで、ツールのダイアログ ボックスを完了して引き続きモデルを作成することができます。
-
[ラインの接合] パラメータを [DISSOLVE_LINES] と [UNSPLIT_LINES] の 2 つのオプションで使用すると、ライン入力だけに適用されます。デフォルトの [DISSOLVE_LINES] オプションが指定されている場合、ラインは 1 つのフィーチャにディゾルブされます。[UNSPLIT_LINES] が指定された場合、共通の端点(疑似ノード)を持つ 2 つのラインだけが 1 つの連続したラインにマージされます。
-
[入力フィーチャ] ジオメトリ タイプがポイントまたはマルチポイントであり、[マルチパート フィーチャの作成] がオンの場合は(Python で multi_part が MULTI_PART に設定されている場合)、出力がマルチポイント フィーチャクラスになります。一方、[マルチパート フィーチャの作成] がオフの場合は(Python で multi_part が SINGLE_PART に設定されている場合)、出力がポイント フィーチャクラスになります。
構文
パラメータ | 説明 | データ タイプ |
in_features |
集約対象のフィーチャ。 | Feature Layer |
out_feature_class |
集約されたフィーチャを含む、作成対象のフィーチャクラス。 | Feature Class |
dissolve_field [dissolve_field,...] (オプション) |
フィーチャを集約するフィールド。 [フィールドの追加] ボタンは ModelBuilder だけで使用され、ダイアログ ボックスを完了してモデルの作成を続行できるように、必要なフィールドが追加されます。 | Field |
statistics_fields [[field, {statistic_type}],...] (オプション) |
属性を集計するフィールドと統計情報。テキスト属性フィールドは、統計情報の [FIRST] または [LAST] を使用して集計されます。数値属性フィールドは、任意の統計情報を使用して集計されます。すべての統計情報計算から NULL が除外されます。
| Value Table |
multi_part (オプション) |
マルチパート フィーチャが出力フィーチャクラスで許可されるかどうかを指定します。
| Boolean |
unsplit_lines (オプション) |
ライン フィーチャのディゾルブ方法を制御します。
| Boolean |
コードのサンプル
次の Python ウィンドウ スクリプトで、Dissolve(ディゾルブ)ツールをイミディエイト モードで使用する方法を示します。
import arcpy
from arcpy import env
env.workspace = "C:/data/Portland.gdb/Taxlots"
arcpy.Dissolve_management("taxlots", "C:/output/output.gdb/taxlots_dissolved",
["LANDUSE", "TAXCODE"], "", "SINGLE_PART",
"DISSOLVE_LINES")
次のスタンドアロン スクリプトで、Dissolve(ディゾルブ)ツールの使用方法を示します。
# Name: Dissolve_Example2.py
# Description: Dissolve features based on common attributes
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Taxlots"
# Set local variables
inFeatures = "taxlots"
tempLayer = "taxlotsLyr"
expression = arcpy.AddFieldDelimiters(inFeatures, "LANDUSE") + " <> ''"
outFeatureClass = "C:/output/output.gdb/taxlots_dissolved"
dissolveFields = ["LANDUSE", "TAXCODE"]
# Execute MakeFeatureLayer and SelectLayerByAttribute. This is only to exclude
# features that are not desired in the output.
arcpy.MakeFeatureLayer_management(inFeatures, tempLayer)
arcpy.SelectLayerByAttribute_management(tempLayer, "NEW_SELECTION", expression)
# Execute Dissolve using LANDUSE and TAXCODE as Dissolve Fields
arcpy.Dissolve_management(tempLayer, outFeatureClass, dissolveFields, "",
"SINGLE_PART", "DISSOLVE_LINES")