ディゾルブ (Dissolve) (データ管理)

サマリー

指定した属性に基づいてフィーチャを集約します。

ディゾルブ操作に代替ツールを使用できます。 詳細については、[ペアワイズ ディゾルブ (Pairwise Dissolve)] ツールのドキュメントをご参照ください。

ディゾルブ ツールの詳細

ディゾルブ ツールの図
ディゾルブ ツールの図

使用法

  • このツールによって集約されるフィーチャの属性は、さまざまな統計情報を使用して、集計したり説明したりできます。 属性の集計に使用される統計情報は、「統計タイプ + アンダースコア + 入力フィールド名」という命名規則に従って名前が付けられ、出力フィーチャクラスに単一フィールドとして追加されます。 たとえば、POP という名前のフィールドに SUM の統計情報の種類が使用されている場合、出力には SUM_POP という名前のフィールドが含まれます。

  • [ディゾルブ (Dissolve)] は、出力フィーチャクラスに非常に大きなフィーチャを作成する可能性があります。特に、[ディゾルブ フィールド] パラメーターに個別値が少なかったり、すべてのフィーチャを 1 つのフィーチャにディゾルブする場合に起こりやすくなります。 非常に大きなフィーチャは、マップの描画時や編集時に、処理または表示上の問題や性能の低下を引き起こす可能性があります。 ディゾルブが 1 台のコンピューター上に最大サイズのフィーチャを出力し、この出力を使用可能なメモリの少ないコンピューターに移動した場合にも、問題が発生する可能性があります。 これらの問題を回避するには、[マルチパート フィーチャを作成] パラメーターを使用して、大きくなりそうなマルチパート フィーチャを多くの小さなフィーチャに分割する、シングルパート フィーチャを作成します。 [ディゾルブ (Dissolve)] ツールで作成された極端に大きなフィーチャについては、処理、表示、または性能の問題を解決するために、[フィーチャの分割 (Dice)] ツールの使用によるフィーチャの分割が可能です。

  • すべての統計計算から NULL 値が除外されます。 たとえば、10、5、NULL の平均は 7.5 (= (10 + 5) / 2) です。 カウントには、統計計算に含まれる値の数が返されます。つまり、この場合は 2 です。

  • パフォーマンスとスケーラビリティの向上のため、このツールは、タイル プロセスを使用して非常に大きなデータセットを処理します。 詳細については、「大きいデータセットのタイル化処理」をご参照ください。

  • 物理メモリの使用可能な容量は、1 つの出力フィーチャに処理およびディゾルブできる入力フィーチャの量 (と複雑さ) の制限となる場合があります。 この制限のために、ディゾルブ処理に使用可能以上のメモリを要求したことによるエラーが発生する可能性があります。 これを防ぐために、[ディゾルブ (Dissolve)] は適応型分割アルゴリズムを使用して入力フィーチャを分割処理する場合があります。 分割されたフィーチャを判定するには、このツールの結果に [頻度 (Frequency)] ツールを実行し、[頻度フィールド] パラメーターに対して、ディゾルブ処理で使用したのと同じフィールドを指定します。 頻度値が 2 のレコードが分割されています。 ArcGIS で使用できないほど大きなフィーチャが作成されないように、タイル境界は出力フィーチャ内に保持されます。

    注意:

    適応型分割アルゴリズムを使用して入力を分割処理したディゾルブの出力に対して、再び [ディゾルブ (Dissolve)] を実行しても、出力中のフィーチャの数はほとんど減りません。 出力フィーチャの最大サイズは、実行時に使用可能なメモリ サイズによって決まります。タイルを含む出力は、ディゾルブがこれ以上リソースを使用すると、メモリ不足や使用不可能なフィーチャなどを引き起こす恐れがあることを示しています。 さらに、ディゾルブで作成された出力に対して、再び [ディゾルブ (Dissolve)] ツールを実行すると、ほとんど成果を得られずに性能低下を招くだけでなく、予期しない障害を引き起こす可能性さえあります。

  • [ラインの接合] パラメーターはライン入力に対してのみ適用されます。 デフォルトが指定された場合、ラインをシングル フィーチャにディゾルブします。そうでなければ、共通の端点 (疑似ノード) を持つ 2 つのラインだけが 1 つの連続したラインにマージされます。

  • [入力フィーチャ] パラメーター値のジオメトリ タイプがポイントまたはマルチポイントであり、[マルチパート フィーチャの作成] パラメーターがオンの場合は、出力がマルチポイント フィーチャクラスになります。 一方、[マルチパート フィーチャの作成] パラメーターがオフの場合は、出力がポイント フィーチャクラスになります。

パラメーター

ラベル説明データ タイプ
入力フィーチャ

集約対象のフィーチャ。

Feature Layer
出力フィーチャクラス

集約されたフィーチャを含む、作成対象のフィーチャクラス。

Feature Class
ディゾルブ フィールド
(オプション)

フィーチャが集約されるフィールド。

Field
統計フィールド
(オプション)

属性値を含み、特定の統計の計算に使用される数値フィールドを指定します。 複数の統計とフィールドの組み合わせを指定できます。 すべての計算から NULL 値が除外されます。

テキスト属性フィールドは、最初と最後の統計を使用して集計されます。 数値属性フィールドは、任意の統計を使用して集計されます。

使用できる統計タイプは次のとおりです。

  • [合計] - 指定したフィールドの値が加算されます。
  • [平均] - 指定したフィールドの平均が計算されます。
  • [最小] - 指定したフィールドのすべてのレコードの最小値が特定されます。
  • [最大] - 指定したフィールドのすべてのレコードの最大値が特定されます。
  • [範囲] - 指定したフィールドの値の範囲 (最大 - 最小) が計算されます。
  • [標準偏差] - 指定したフィールド内の値の標準偏差が計算されます。
  • [個数] - 計算に含まれる値の数が特定されます。 NULL 値以外の値の数がカウントされます。 フィールド内の NULL 値の数を調べるには、対象となるフィールドに対するカウントを作成し、NULL 値を含まない別のフィールド (OID など) に対するカウントを作成して、この 2 つの値の差を求めます。
  • [最初] - 入力の最初のレコードの指定したフィールドの値を使用します。
  • [最後] - 入力の最後のレコードの指定したフィールドの値を使用します。
  • [中央値] - 指定したフィールドのすべてのレコードの中央値を計算します。
  • [分散] - 指定したフィールドのすべてのレコードの分散を計算します。
  • [個別値] - 指定したフィールドの個別値の数を数えます。
  • [連結] - 指定したフィールドの値を連結します。 この値は、[連結区切り文字] パラメーターを使用して区切ることができます。
Value Table
マルチパート フィーチャの作成
(オプション)

マルチパート フィーチャが出力フィーチャクラスで許可されるかどうかを指定します。

  • オン - マルチパート フィーチャが出力フィーチャクラスで許可されます。 これがデフォルトです。
  • オフ - マルチパート フィーチャが出力フィーチャクラスで許可されません。 個々のフィーチャがパートごとに作成されます。
Boolean
ラインの接合
(オプション)

ライン フィーチャのディゾルブ方法を指定します。

  • オフ - ラインは 1 つのフィーチャにディゾルブされます。 これがデフォルトです。
  • オン - ラインは、2 つのラインが共通の終点頂点を持つ場合のみディゾルブされます。
Boolean
連結区切り文字
(オプション)

[連結] オプションを [統計情報フィールド] パラメーターに使用した場合に、値の連結に使用する文字。

String

arcpy.management.Dissolve(in_features, out_feature_class, {dissolve_field}, {statistics_fields}, {multi_part}, {unsplit_lines}, {concatenation_separator})
名前説明データ タイプ
in_features

集約対象のフィーチャ。

Feature Layer
out_feature_class

集約されたフィーチャを含む、作成対象のフィーチャクラス。

Feature Class
dissolve_field
[dissolve_field,...]
(オプション)

フィーチャが集約されるフィールド。

Field
statistics_fields
[[field, {statistic_type}],...]
(オプション)

属性値を含み、特定の統計の計算に使用される数値フィールドを指定します。 複数の統計とフィールドの組み合わせを指定できます。 すべての計算から NULL 値が除外されます。

テキスト属性フィールドは、最初と最後の統計を使用して集計されます。 数値属性フィールドは、任意の統計を使用して集計されます。

使用できる統計タイプは次のとおりです。

  • SUM - 指定したフィールドの値が合計されます。
  • MEAN - 指定したフィールドの平均が計算されます。
  • MIN - 指定したフィールドのすべてのレコードの最小値が特定されます。
  • MAX - 指定したフィールドのすべてのレコードの最大値が特定されます。
  • RANGE - 指定したフィールドの値の範囲 (最大 - 最小) が計算されます。
  • STD - 指定したフィールド内の値の標準偏差が計算されます。
  • COUNT - 計算に含まれる値の数が特定されます。 NULL 値以外の値の数がカウントされます。 フィールド内の NULL 値の数を調べるには、対象となるフィールドに対するカウントを作成し、NULL 値を含まない別のフィールド (OID など) に対するカウントを作成して、この 2 つの値の差を求めます。
  • FIRST - 入力の最初のレコードの指定したフィールドの値を使用します。
  • LAST - 入力の最後のレコードの指定したフィールドの値を使用します。
  • MEDIAN - 指定したフィールドのすべてのレコードの中央値を計算します。
  • VARIANCE - 指定したフィールドのすべてのレコードの分散を計算します。
  • UNIQUE - 指定したフィールドの個別値の数を数えます。
  • CONCATENATE - 指定したフィールドの値を連結します。 この値は、concatenation_separator パラメーターを使用して区切ることができます。
Value Table
multi_part
(オプション)

マルチパート フィーチャが出力フィーチャクラスで許可されるかどうかを指定します。

  • MULTI_PARTマルチパート フィーチャが出力フィーチャクラスで許可されます。 これがデフォルトです。
  • SINGLE_PARTマルチパート フィーチャが出力フィーチャクラスで許可されません。 個々のフィーチャがパートごとに作成されます。
Boolean
unsplit_lines
(オプション)

ライン フィーチャのディゾルブ方法を指定します。

  • DISSOLVE_LINESラインは 1 つのフィーチャにディゾルブされます。 これがデフォルトです。
  • UNSPLIT_LINESラインは、2 つのラインが共通の終点頂点を持つ場合のみディゾルブされます。
Boolean
concatenation_separator
(オプション)

CONCATENATION オプションを statistics_fields パラメーターに使用した場合に、値の連結に使用する文字。

String

コードのサンプル

Dissolve の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで Dissolve 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/Portland.gdb/Taxlots"
arcpy.management.Dissolve("taxlots", "C:/output/output.gdb/taxlots_dissolved",
                          ["LANDUSE", "TAXCODE"], "", "SINGLE_PART", 
                          "DISSOLVE_LINES")
Dissolve の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトで、Dissolve 関数を使用する方法を示します。

# Name: Dissolve_Example2.py
# Description: Dissolve features based on common attributes

# Import system modules
import arcpy

arcpy.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"]

# Run MakeFeatureLayer and SelectLayerByAttribute.  This is only to exclude 
# features that are not desired in the output.
arcpy.management.MakeFeatureLayer(inFeatures, tempLayer)
arcpy.management.SelectLayerByAttribute(tempLayer, "NEW_SELECTION", expression)

# Run Dissolve using LANDUSE and TAXCODE as Dissolve Fields
arcpy.management.Dissolve(tempLayer, outFeatureClass, dissolveFields, "", 
                          "SINGLE_PART", "DISSOLVE_LINES")