概要
並列処理方法を使用して、入力フィーチャの周囲に指定した距離のバッファー ポリゴンを作成します。
[ペアワイズ バッファー (Pairwise Buffer)] ツール は、[バッファー (Buffer)] ツールに非常に似ています。[ペアワイズ バッファー (Pairwise Buffer)] ツールには、バッファー フィーチャを並列処理できる機能があります。
図
使用法
このツールは、並列処理ファクター環境を優先します。この環境が設定されていない場合 (デフォルト) や 100 に設定されている場合、フル並列処理が有効になり、ツールはコンピューター上のすべての論理コアに作業を分配しようとします。この環境を 0 に設定すると、並列処理は無効になります。ファクターを 1 ~ 99 に指定すると、ツールは数式 (並列処理ファクター / 100 * 論理コア) の小数部を切り上げた整数を適用して、使用する論理コアの割合を決定します。この数式の結果が 0 または 1 の場合、並列処理は有効化されません。
このツールは、空間インデックスを持つ入力フィーチャを使用します。インデックスが正しいかどうかわからない場合は、[空間インデックスの追加 (Add Spatial Index)] ツールを使用して、インデックス (特にシェープファイル) を作成するか、既存のインデックスを再構築します。
「バッファー (Buffer) の詳細」で説明したように、[バッファー (Buffer)] ツールの重要な機能は、バッファーが構築される方法を決定する [方法] パラメーターです。バッファーを構築するための 2 つの基本的な方法であるユークリッドと測地線は、次のとおりです。
- ユークリッド バッファーは、二次元のデカルト平面内で距離を計測します。そこでは、直線距離、すなわちユークリッド距離が、平面 (デカルト平面) 上の 2 点間で計算されます。ユークリッド バッファーの方が一般的なバッファーであり、投影座標系内の比較的狭い領域 (UTM ゾーンなど) に集中するフィーチャの周辺の距離を解析する場合に適しています。
- 測地線バッファーは、地球の実際の形状 (楕円体、より正確にはジオイド) を形成します。平面 (デカルト平面) 上の 2 点間ではなく、曲面 (ジオイド) 上の 2 点間の距離が計算されます。以下の状況の場合、測地線を作成することを必ず検討してください。
- 入力フィーチャが分散している場合 (複数の UTM ゾーンや、グローブ全体さえ含む広い領域をカバーしている場合)
- 入力フィーチャの空間参照 (地図投影法) によって、面積などの他の特性を保護するために距離が歪んでしまう場合。
[方法] パラメーターは、バッファーの作成方法を決定します。
- [平面](Python では method="PLANAR") がデフォルトのオプションです。このオプションを指定すると、入力の座標系に基づいて、使用する方法が自動的に決定されます。
- 入力フィーチャで投影座標系が使用されている場合、ユークリッド バッファーが作成されます。
- 入力フィーチャで地理座標系が使用されており、[バッファー距離] を距離単位 (度などの角度単位ではなく、メートル、フィートなど) で指定した場合、測地線バッファーが作成されます。
- このオプションでは、ArcGIS 10.3 よりも前の [バッファー (Buffer)] ツールと同じ結果が生成されます。
- [測地線](Python では method="GEODESIC") を指定すると、入力データの座標系にかかわらず、形状を維持した測地線バッファーが作成されます。形状を維持した測地線バッファーは、出力の測地線バッファーを作成する前に、入力フィーチャを高密度化して、入力フィーチャの形状をより厳密に表現したバッファーを作成します。バッファーの形状と、その形状が元の入力フィーチャにどの程度近似しているのかが気になる場合 (とりわけ入力データが地理座標系を使用している場合) は、このオプションを使用して調査することをお勧めします。このオプションを使用すると、[平面] オプションを使用して測地線バッファーを作成する場合よりも時間がかかることがありますが、入力フィーチャの形状に正確に一致したバッファーが作成されます。
メモ:
フィーチャクラスの座標系は、[投影変換 (Project)] ツールを使用して変更できます。または、[バッファー (Buffer)] ツールを実行する前に [出力データの座標系] ジオプロセシング環境を設定して、バッファーの作成時にこの座標系を使用することができます。
[平面] 方法を使用する際は、正距円錐図法や正距方位図法などの、距離の歪みを最小にし、地理的に入力に適した投影法を使用して、投影された入力から作成されるバッファーの精度を上げることができます。
ジオデータベース フィーチャクラスへの出力を使用して、投影座標系でフィーチャをバッファー処理する際、作成されたジオメトリには、多くの場合、円弧線分が含まれます (特にポイントのバッファー処理の場合は、出力は常に円弧になります)。円弧を含むバッファーが別の座標系に投影変換される場合、元のバッファーのサイズと位置が変換される (ただしバッファーの形状は変わらない) ため、再投影変換後のバッファーは、元のバッファーがカバーする面積を正確に表していません。円弧を含むバッファーを投影変換する場合、まず [頂点の挿入 (Densify)] ツールを使用して円弧線分を直線に変換してから、高密度のバッファーを再投影変換します。
出力フィーチャクラスの BUFF_DIST フィールドには、各フィーチャのバッファー処理に使用するバッファー距離が、入力の座標系の距離単位で格納されます。バッファーの作成に [測地線] 方法を使用している場合、入力したバッファー距離は常にメートルに変換されます。
入力に BUFF_DIST という名前のフィールドが存在する場合、そのフィールドの値は出力で上書きされます。[すべて] または [リスト] (Python では ALL または LIST) の [ディゾルブ タイプ] を使用する場合、出力にこのフィールドはありません。
出力フィーチャクラスの ORIG_FID フィールドには、バッファーが作成された入力フィーチャのフィーチャ ID が格納されます。入力に ORIG_FID という名前のフィールドが存在する場合、そのフィールドの値は出力で上書きされます。[すべて] または [リスト] の [ディゾルブ タイプ] を使用する場合、出力にこのフィールドはありません。
ポリゴン フィーチャをバッファー処理する際には、負数のバッファー距離を使用してポリゴン フィーチャ内部にバッファーを作成することができます。負数のバッファー距離を使用すると、ポリゴンの境界を指定距離分減らすことができます。
注意:
負数のバッファー距離が大きすぎてポリゴンが消失する場合は、NULL ジオメトリが生成されます。警告メッセージが表示され、NULL ジオメトリのフィーチャは出力フィーチャクラスに書き出されません。
入力のフィールドをバッファー距離の取得に使用する場合、フィールド値として、数値 (5 など) または有効な距離単位の付いた数値 (5 キロメートルなど) のいずれかを使用できます。フィールド値が数値の場合、距離には、入力の空間参照の距離単位を使用すると見なされます。ただし、入力が地理座標系の場合を除きます。地理座標系の場合、値はメートル単位と見なされます。フィールド値に指定された距離単位が無効であるか、認識できない場合、デフォルトで入力の空間参照の距離単位が使用されます。
[ディゾルブ フィールド] パラメーターの [フィールドの追加] ボタンは、ModelBuilder だけで使用されます。ModelBuilder では、先のツールが実行されていないか、出力データが存在しないために、[ディゾルブ フィールド] パラメーターにフィールド名が表示されない場合があります。[フィールドの追加] ボタンを使用すると、[ディゾルブ フィールド] リストに必要なフィールドを追加して、[バッファー (Buffer)] ツールのダイアログ ボックスを終了させることができます。
構文
PairwiseBuffer(in_features, out_feature_class, buffer_distance_or_field, {dissolve_option}, {dissolve_field}, {method}, {max_deviation})
パラメーター | 説明 | データ タイプ |
in_features | バッファーを作成する入力のポイント フィーチャ、ライン フィーチャ、またはポリゴン フィーチャ。 | Feature Layer |
out_feature_class | 出力バッファーを格納するフィーチャクラス。 | Feature Class |
buffer_distance_or_field | バッファー処理する入力フィーチャの周囲の距離。距離は、直線距離を表す値か、各フィーチャをバッファー処理する距離を含む入力フィーチャのフィールドのいずれかとして指定できます。 距離の単位が指定されないか、不明と入力された場合、入力フィーチャの空間参照の距離単位が使用されます。 スクリプト内で距離を指定する際、使用する距離の単位が「Decimal Degrees」のように 2 つの単語に分かれている場合は、「20 DecimalDegrees」のように 1 つに結合します。 | Linear Unit; Field |
dissolve_option (オプション) | バッファーの重複を削除するために実行されるディゾルブ操作のタイプ。
| String |
dissolve_field [dissolve_field,...] (オプション) | 入力フィーチャの中で、出力バッファーをディゾルブするフィールド。(入力フィーチャから引き継がれる) リスト フィールドの属性値を共有するバッファーがディゾルブされます。 | Field |
method (オプション) | バッファーを作成する際に使用する方法を指定します (平面または測地線)。
| String |
max_deviation (オプション) | 結果の出力バッファー ポリゴン境界が、トゥルー バッファー境界から乖離する最大距離。 トゥルー バッファー境界は曲線です。一方、結果のポリゴン境界は密集化したポリラインです。このパラメーターを使用すると、出力ポリゴン境界がトゥルー バッファー境界に近似する程度を選択できます。 パラメーターが設定されていない場合や 0 に設定されている場合、ツールによって最大偏差が決定されます。デフォルト値を使用することを強くお勧めします。最大オフセット偏差が小さすぎる場合、(ツール自体やそれ以降の解析において) パフォーマンスが大幅に低下する可能性があります。 詳細については、[頂点の挿入 (Densify)] ツールのドキュメントに含まれる max_deviation パラメーターの情報をご参照ください。 | Linear Unit |
コードのサンプル
次の Python ウィンドウ スクリプトは、PairwiseBuffer ツールの使用方法を示しています。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.PairwiseBuffer_analysis("roads", "C:/output/majorrdsBuffered", "100 Feet", "LIST", "Distance")
幹線道路から大きな影響を受けている領域を除外した、植生の領域を検出します。
# Name: PairwiseBuffer.py
# Description: Find areas of suitable vegetation that exclude areas heavily impacted by major roads
# import system modules
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
# Select suitable vegetation patches from all vegetation
veg = "vegtype"
suitableVeg = "C:/output/Output.gdb/suitable_vegetation"
whereClause = "HABITAT = 1"
arcpy.Select_analysis(veg, suitableVeg, whereClause)
# Buffer areas of impact around major roads
roads = "majorrds"
roadsBuffer = "C:/output/Output.gdb/buffer_output"
distanceField = "Distance"
sideType = "FULL"
endType = "ROUND"
dissolveType = "LIST"
dissolveField = "Distance"
arcpy.PairwiseBuffer_analysis(roads, roadsBuffer, distanceField, dissolveType, dissolveField)
# Erase areas of impact around major roads from the suitable vegetation patches
eraseOutput = "C:/output/Output.gdb/suitable_vegetation_minus_roads"
xyTol = "1 Meters"
arcpy.Erase_analysis(suitableVeg, roadsBuffer, eraseOutput, xyTol)
環境
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい