バッファー (Buffer) の詳細 (解析)

[バッファー (Buffer)] ツールは、指定した距離に基づき、入力フィーチャの周囲にバッファー ポリゴンを作成します。

バッファー ルーチンは入力フィーチャの各頂点をトラバースし、バッファーのオフセットを作成します。 出力バッファー フィーチャは、これらのオフセットから作成されます。

ラインの周囲へのオフセットの作成

以下の図は、ラインの周囲へのオフセットの作成を段階的に示しています。

  • 入力ライン フィーチャ

    入力ライン フィーチャ

  • 入力ライン フィーチャの周囲に作成されたオフセット

    ライン オフセット

  • オフセットから取得したバッファー

    バッファー ポリゴンの出力

バッファー距離

バッファー距離パラメーターの値として、固定値、または数値を含むフィールドを指定できます。

例 1: 固定距離

この例は、次のパラメーター オプションを使用した場合のライン フィーチャクラスのバッファーを示しています。

  • [バッファーの距離 [値またはフィールドを指定]] - 距離 20
  • [サイド タイプ] - [すべて]
  • [エンド タイプ] - [フラット]
  • [ディゾルブ タイプ] - [すべてディゾルブ]

ラインのバッファー例 1

バッファー距離は一定であるため、すべてのフィーチャは同じ幅でバッファー処理されます。

例 2: フィールドからの距離

この例は、次のパラメーター オプションを使用した場合のライン フィーチャクラスのバッファーを示しています。

  • [バッファーの距離 [値またはフィールドを指定]] - 値が 10、20、30 の数値フィールド
  • [サイド タイプ] - [すべて]
  • [エンド タイプ] - [フラット]
  • [ディゾルブ タイプ] - [すべてディゾルブ]

ラインのバッファー例 2

バッファー距離はフィールド値に依存するため、同じ処理にさまざまなバッファー幅を適用できます。

サイド タイプのライン バッファーのディゾルブ

サイド タイプ バッファーでのディゾルブ オプションの違いについて以下で説明します。

  • [すべてディゾルブ] - できる限り、入力ライン フィーチャが最初に疑似ネットワーク内で接続されます。 このネットワーク内で接続されているライン フィーチャの最長のライン フィーチャが片側でバッファー処理されます。 入力の他のいずれのフィーチャにも接続していない場合にのみ、個々のフィーチャがバッファー処理されます。 これは短い距離で効果的です (通常は道路や河川を表すラインのバッファー処理に使用されます)。 場合によっては、距離が大きいと、一見すると正しく見えないバッファーが出力されますが、バッファーが大きいと、出力を理解するためのポストツール操作なしでは処理できない非常に大きなオーバーラップが生じることがあります。

    片側バッファーは、出力バッファーが他の入力ライン フィーチャの間違った側を操作する場合でも結果のバッファー出力を正しい側に維持しようと試みます。

    すべてディゾルブ オプションを使用したサイド タイプのバッファー出力

  • [なし] - 片側バッファーが入力ラインを個別にバッファー処理します。 出力で結果のバッファーの相互干渉は考慮されません。

    なしオプションでのサイド タイプのバッファー出力

[すべてディゾルブ] オプションを使用しているときに、入力フィーチャの複雑度と指定されたバッファー距離により、片側バッファーの作成が内部で失敗することがあります。 その場合、若干異なる値でバッファー処理が再度試みられます。 このプロセスは効率が低くなる傾向にあり、指定された側でのバッファーの維持方法を決定できないことにより、バッファー エリアが欠落することがあります。 結果の出力バッファーは間違ったサイドの他の入力フィーチャと交差している可能性があります。 サイド タイプで [すべてディゾルブ] オプションを使用している場合、らせん、ループ、方向が一貫しないライン セグメントを含む入力ラインによってこれらの問題が発生することがあります。

ユークリッド バッファーと測地線バッファー

[バッファー (Buffer)] ツールの重要な機能の 1 つは、バッファーの作成方法を指定する [メソッド] パラメーターです。 バッファーを構築する基本的な方法には、ユークリッド (平面) バッファーと測地線バッファーの 2 種類があります。

  • ユークリッド バッファーは、二次元のデカルト平面内で距離を計測します。そこでは、直線距離、すなわちユークリッド距離が、平面 (デカルト平面) 上の 2 点間で計算されます。 ユークリッド バッファーは、投影座標系内の比較的狭い領域 (UTM ゾーンなど) に集中するフィーチャの周辺の距離を解析する場合に最適です。

    投影座標系には、投影で距離、面積、およびフィーチャの形状が歪む領域があります。これは、投影座標系を使用した場合に実際に生じます。 たとえば、State Plane 投影座標系または UTM 投影座標系を使用する場合、フィーチャは投影原点 (州または UTM ゾーンの中心) に近いほど正確になりますが、投影原点から遠くに移動すると変形します。 同様に World 投影座標系を使用すると、ある領域の変形は最小限に抑えられますが、別の領域では変形が大きくなります (メルカトル図法では、赤道近くの変形は抑えられますが極点では大きくなります)。 変形の大きな領域と小さな領域の両方にフィーチャが存在するデータセットに対して、ユークリッド バッファーは、変形の小さな領域では正確に、変形の大きな領域では不正確になります。

  • 測地線バッファーでは、楕円体の曲率を考慮して、日付変更線と極の近くおよびこれらと交差するデータを正確に処理します。 測地線バッファーは、データが広大な地理的範囲をカバーする場合や、入力座標系が距離の計算に適さない場合に最適です。 測地線バッファーは平面マップ上では異常な外観を示すことがありますが、グローブに表示した場合、正常な外観になります。

データが広大な地理的範囲をカバーする場合や、入力座標系が距離の計算に適さない場合は、測地線バッファーを選択します。

[メソッド] パラメーターには、次のオプションがあります。

  • [平面] - バッファー処理方法は [入力フィーチャ] パラメーター値の座標系に基づきます。 これがデフォルトです。
    • 入力フィーチャで投影座標系が使用されている場合、ユークリッド バッファーが作成されます。
    • 入力フィーチャで地理座標系が使用されており、[バッファー距離] 値を距離単位 (度などの角度単位ではなく、メートル、フィートなど) で指定した場合、測地線バッファーが作成されます。
  • [測地線] - 入力座標系にかかわらず、形状が正確に維持された測地線バッファーが作成されます。 頂点を接続するラインが測地線に沿ったカーブであることを前提にしません。 代わりに、入力フィーチャの形状をより正確に表すバッファーを作成するために、入力フィーチャクラスの空間参照内でフィーチャのバッファーが作成されます。 バッファーの形状が重要であり、それらの形状が元の入力フィーチャにいかに正確に一致しているかが問題になる場合 (特に、入力データで地理座標系が使用されている場合) は、このオプションを使用することをお勧めします。 このオプションを使用すると、[平面] オプションを使用して測地線バッファーを作成する場合よりも時間がかかることがありますが、入力フィーチャの形状に正確に一致したバッファーが作成されます。

測地線バッファーの例

この例では、いくつか選択した世界の都市について、1000 キロメートルの測地線バッファーとユークリッド バッファーを比較しています。 測地線バッファーは、ポイント フィーチャクラスを地理座標系でバッファー処理することによって生成しました。ユークリッド バッファーは、ポイント フィーチャクラスを投影座標系でバッファー処理することによって生成しました (各ポイントは、投影および非投影のデータセットの両方とも、同じ都市を表現しています)。

世界全体を表す通常の投影座標系 (メルカトル図法など) の 1 つでデータセットを処理する場合、投影の歪みは赤道の近くで最小になりますが、極点の近くでは大きくなります。 つまり、メルカトル投影されたデータセットでは、赤道近くでの距離の計測とバッファー オフセットは極めて正確ですが、赤道から離れるほど不正確になります。

ユークリッド バッファーと測地線バッファー

1 つ目の図は、入力ポイントの位置を示しています。 参考のために、赤道と本初子午線を示しています。 2 つの図は、メルカトル図法で表示されています。

2 つ目の図では、赤道近くの各点に測地線バッファーとユークリッド バッファーがあり、それらは一致しています。 赤道近くの各点では、メルカトル図法で正確な距離が計測されています。 しかし、ポイントが赤道から離れるほど、ユークリッド バッファーが測地線バッファーと比べて小さくなり、距離の歪みが大きくなっています。 これは、メルカトル図法では極点の領域が引き伸ばされるために起きます (グリーンランドや南極など、極点に近い大陸の面積は、赤道近くの大陸と比べ巨大になります)。 1000 キロメートルのユークリッド バッファーは、すべて同じサイズになります。これは、ユークリッド バッファーのルーチンが、投影されたマップの距離がどこでも同じ (ブラジルの 1000 キロメートルはロシア中央部の 1000 キロメートルと同じ) であると想定しているためです。 しかし、投影された距離は赤道から離れるほど歪むため、この想定は正しくありません。 グローバル スケールで距離を解析するような場合は、あらゆる領域で正確性が保たれる測地線バッファーを使用します。これに対してユークリッド バッファーは、歪みの大きな領域では不正確になります。

注意:

測地線バッファーとユークリッド バッファーをグローブ上に表示することで、測地線バッファーの方が正確であることが明らかになります。

グローブ上のユークリッド バッファーと測地線バッファー

これらは、上記の例で作成したものと同じ 1000 キロメートルのユークリッド バッファーと測地線バッファーです。 グローブ上に表示すると、それぞれのユークリッド バッファーは、同じバッファー距離を使用したにもかかわらず、異なったサイズになっています (アラスカのバッファーがブラジルのバッファーより小さく見えます)。 マップの距離がすべての場所で同であるという、誤った想定に基づいてバッファーが作成されているため、このような結果となっています。 対照的に測地線バッファーは、グローブ上に表示した場合、それぞれが正しく一定のサイズになっています。これらの測地線バッファーは、投影座標系の歪みの影響を受けていないため、正確です。

測地線バッファーについてのその他の情報

入力ポリライン フィーチャおよび入力ポリゴン フィーチャの各頂点は、測地線で接続されていることが前提になります (測地線は、楕円体上の 2 点間の最短経路です)。 目的とする頂点間の経路が測地線に沿っていない場合は、明示的に入力の密度を高める必要があります。 ジオメトリの密度は、[頂点の挿入 (Densify)] ツールを使用して高めることができます。 [測地線] メソッドを使用して、入力フィーチャの形状に正確に一致したバッファーを取得します (下記を参照)。

測地線バッファーでは平面バッファーよりも複雑な計算が行われるため、完了までにより多くの時間がかかることがあります。 どれだけ多くの時間がかかるかは、主にフィーチャ内の頂点の数と密度によります。 フィーチャ内の頂点の数と密度が増えるにしたがい、バッファー フィーチャの作成に必要な時間が増えます。

形状を正確に維持する測地線バッファー

ラインまたはポリゴンに対してバッファー処理を実行する場合、[測地線] メソッドでは、入力フィーチャクラスの空間参照に含まれるフィーチャをバッファー処理することで測地線バッファーが生成され、バッファーが入力フィーチャの目的の測地線形状に適合するようになります。

[測地線] メソッドを使用すると、それぞれの出力バッファーに差異がほとんどないことがわかります。 これは、形状を維持するバッファー作成処理に適した頂点密度が入力フィーチャにない場合に、形状を正確に維持する測地線メソッドの効果が最も明確に現れるからです (通常は、フィーチャが粗く、不正確になる)。 [測地線] メソッドの使用を決定する前に、入力データを把握しておくことが重要です。

たとえば、次の図に示すフィーチャは粗く、グローブの大部分で頂点がほとんどありません (ラインの屈曲部にのみ頂点が存在します)。

入力フィーチャ

[平面] メソッドを使用してこのラインを 500 キロメートルまでバッファー処理すると、次のような出力バッファー フィーチャ (ピンク色) になります。

平面メソッドを使用してバッファー処理が実行された入力

予期しない結果になる場合もありますが、上記の説明にあるとおり、[平面] メソッドを使用する (測地線バッファーを作成する) 場合、入力ポリライン フィーチャの各頂点が測地線で接続されていること (次の図に紫色で示す) が前提となります。

各頂点が測地線で接続されていることを前提とする入力の図

このケースでは、入力フィーチャ (青色)、作成された測地線 (紫色)、および測地線バッファー (ピンク色) の組み合わせにより、効果的な出力が生成されます。

平面メソッドを使用してバッファー処理された測地線

おそらく、この結果は期待していたものではないはずです。

[測地線] メソッドを使用する場合、頂点を接続するラインが測地線に沿ったカーブであることを前提としていません。 [測地線] メソッドを使用して作成された測地線バッファーを次の図に緑色で示しています。

測地線メソッドを使用して維持された形状

これで、入力フィーチャの形状を正確に維持する測地線バッファーが作成されました。

BUFF_DIST フィールド

出力フィーチャクラスの BUFF_DIST フィールドには、入力の座標系の距離単位で値が格納されます。 たとえば、50 メートルのバッファー距離がツールで指定されているのに、入力の座標系がフィートの距離単位を使用しているような場合、50 メートルがフィート単位に変換されて BUFF_DIST フィールドに出力されます。 これには次の例外が適用されます。

  • 入力が地理座標系を持ち、バッファー距離がキロメートル、マイルなどの距離単位で指定されている場合、BUFF_DIST フィールドの値はメートル単位になります。
  • 入力の空間参照が不明の場合、変換は適用されず、BUFF_DIST フィールドの値は、指定された値になります。

BUFF_DIST の単位変換が実行される場合、されない場合についてのシナリオを、次の表にまとめます。

入力フィーチャの座標系バッファーの距離単位単位変換

地理学

角度または距離

メートルに変換される

投影

角度

入力座標系の単位に変換される

投影

リニア

入力座標系の単位に変換される

地理または投影

不明

入力座標系の単位と想定される

不明

角度または距離

変換されない

BUFF_DIST 単位変換 ([平面] メソッド)

入力フィーチャの座標系バッファーの距離単位単位変換

地理学

角度または距離

メートルに変換される

投影

角度

メートルに変換される

投影

リニア

メートルに変換される

地理または投影

不明

入力座標系の単位と想定される

不明

角度または距離

変換されない

BUFF_DIST 単位変換 ([測地線] メソッド)

空間参照プロパティ

注意:

BUFF_DIST 値の単位は、必ず設定時の出力座標系環境の単位になります。

関連トピック