バッファ(解析ツール)の仕組み
バッファの作成方法
バッファ ルーチンは入力フィーチャの各頂点をトラバースし、バッファのオフセットを作成します。出力バッファ フィーチャは、これらのオフセットから作成されます。
ラインの周囲にオフセットを作成する
入力ライン フィーチャ
入力ライン フィーチャの周囲に作成されたオフセット
オフセットから取得したバッファ
バッファ距離の説明
バッファ距離パラメータは、固定値として、または数値を含むフィールドとして入力できます。
例 1:固定距離
次に示すのは、距離 20、エンド タイプ FLAT、サイド タイプ FULL、およびディゾルブ タイプ ALL を使ったライン フィーチャクラスのバッファです。
バッファ距離は一定であるため、すべてのフィーチャは同じ幅でバッファ処理されます。
例 2:フィールドからの距離
この例では、距離の数値フィールドに 10、20、30 の値を指定し、エンド タイプ FLAT、サイド タイプ FULL、およびディゾルブ タイプ ALL を使ったライン フィーチャクラスのバッファを示しています。
バッファ距離はフィールド値に依存するため、同じ処理にさまざまなバッファ幅を適用できます。
ユークリッド バッファと測地線バッファ
[バッファ] ツールの重要な機能は、測地線バッファを生成できることです。測地線バッファは、バッファの計算のうち、地表の実際の形状(楕円体か、より正しくはジオイド)の計算に使用されます。その距離は、グローブ上の 2 点間で計測されます。別の種類のバッファであるユークリッド バッファは、二次元のデカルト平面内で距離を計測します。そこでは、直線距離、すなわちユークリッド距離が、平面上の 2 点間で計算されます。ユークリッド バッファの方が一般的なバッファであり、投影座標系内の比較的狭い領域(UTM ゾーンなど)に集中するフィーチャの周辺の距離を解析する場合に、適しています。測地線バッファは、比較的に分散したフィーチャについて、より正確なバッファ オフセットを提供します(複数の UTM ゾーンや、グローブ全体さえ含む広い領域をカバーします)。
ユークリッド バッファを実行すると、技術的に誤った結果が得られる場合があります。ユークリッド バッファを実行する場合、フィーチャを投影座標系で格納すると非常に危険です。フィーチャの距離、面積、および形状に変形が生じる恐れがあります。これは、投影座標系を使用する限り避けられません。たとえば、State Plane 投影座標系または UTM 投影座標系を使用する場合、フィーチャは投影原点(州または UTM ゾーンの中心)に近いほど正確になりますが、投影原点から遠くに移動すると変形します。データセットが狭い領域に集中していない場合や、その狭い領域の外にオフセットを作成するほど大きなバッファ距離を使用している場合は、ユークリッド バッファは不正確になります。同様に World 投影座標系を使用すると、ある領域の変形は最小限に抑えられますが、別の領域では変形が大きくなります(メルカトル図法では、赤道近くの変形は抑えられますが極点では大きくなります)。変形の大きな領域と小さな領域の両方にフィーチャが存在するデータセットに対して、ユークリッド バッファは、変形の小さな領域では正確に、変形の大きな領域では不正確になります。一方、測地線バッファは、すべての領域で正確になります。
測地線バッファはユークリッド バッファと比べて常に正確ですが、ユークリッド バッファと比べて生成に時間がかかるというデメリットがあります。この性能上の違いは、ユークリッド バッファが非常に単純な二次元距離公式を使用して生成されるのに対して、測地線バッファの計算が極めて複雑であるために生じています。
測地線バッファ アルゴリズムは、バッファの入力が地理座標系(非投影)であり、[バッファの距離] を距離単位(度などの角度単位ではなく、メートル、フィートなど)で指定した場合に使用されます。
測地線バッファの例
この例の目的は、いくつか選択した世界の都市について、1000 キロメートルの測地線バッファとユークリッド バッファを比較することにあります。測地線バッファは、ポイント フィーチャクラスを地理座標系でバッファ処理することによって生成しました。ユークリッド バッファは、ポイント フィーチャクラスを投影座標系でバッファ処理することによって生成しました(各ポイントは、投影および非投影のデータセットの両方とも、同じ都市を表現しています)。
世界全体を表す通常の投影座標系(メルカトル図法など)の 1 つでデータセットを処理する場合、投影の歪みは赤道の近くで最小になりますが、極点の近くでは大きくなります。つまり、メルカトル投影されたデータセットでは、赤道近くでの距離の計測とバッファ オフセットは極めて正確ですが、赤道から離れるほど不正確になります。
左の図は、入力ポイントの位置を示しています。参考のために、赤道と本初子午線を示しています。2 つの図は、メルカトル図法で表示されています。
右の図では、赤道近くの各点に測地線バッファとユークリッド バッファがあり、それらは一致しています。赤道近くの各点では、メルカトル図法は正確な距離の計測に役立っています。しかし、ポイントが赤道から離れるほど、ユークリッド バッファが測地線バッファと比べて小さくなり、距離の歪みがかなり大きくなっているのがわかります。これは、メルカトル図法では極点の領域が引き伸ばされるために起きます(グリーンランドや南極など、極点に近い大陸の面積は、赤道近くの大陸と比べ巨大になります)。1000 キロメートルのユークリッド バッファは、すべて同じサイズになります。これは、ユークリッド バッファのルーチンが、投影されたマップの距離がどこでも同じ(ブラジルの 1000 キロメートルはロシア中央部の 1000 キロメートルと同じ)であると想定しているためです。しかし、投影された距離は赤道から離れるほど歪むため、この想定は正しくありません。グローバル スケールで距離を解析するような場合は、あらゆる領域で正確性が保たれる測地線バッファを使用する必要があります。これに対してユークリッド バッファは、歪みの大きな領域では不正確になります。
測地線バッファとユークリッド バッファをグローブ上に表示することで、測地線バッファの方が確かに正確であることが明らかになります。
これらは、上記の例で作成したものと同じ 1000 キロメートルのユークリッド バッファと測地線バッファです。グローブ上に表示すると、それぞれのユークリッド バッファは、同じバッファ距離を使用したにもかかわらず、異なったサイズになっています(アラスカのバッファがブラジルのバッファよりかなり小さく見えることに注目してください)。マップの距離がすべての場所で同であるという、誤った想定に基づいてバッファが作成されているため、このような結果となっています。対照的に測地線バッファは、グローブ上に表示した場合、それぞれが正しく一定のサイズになっています。これらの測地線バッファは、投影座標系の歪みの影響を受けていないため、正確です。
測地線バッファについてのその他の情報
入力ポリライン フィーチャおよび入力ポリゴン フィーチャの各頂点は、測地線で接続されていることが前提になります(測地線は、楕円体上の 2 点間の最短経路です)。目的とする頂点間の経路が測地線に沿っていない場合は、まず、明示的に入力の密度を高める必要があります。ジオメトリの密度は、[頂点の挿入(Densify)] ツールを使用して高めることができます。
出力バッファがたどる経路は、通常、測地線に沿ったカーブではありません。計算で求めたバッファのカーブが、理論上のバッファのカーブから外れることが許される範囲は、最大 10 メートルまでです。このオフセット カーブの計算手法は、tracés parallèles と呼ばれています。この手法の詳細については、
- 「Murphy B., Collier P., Mitchell D. and Hirst W. (1999) - "Maritime Boundary Generation from Straight Baselines Defined as Geodesics"」、「Proceedings of the International Conference on Technical Aspects of Maritime Boundary Delineation and Delimitation.. Monaco, 9–10 September, 1999」をご参照ください。
[BUFF_DIST] フィールド
出力フィーチャクラスの 「BUFF_DIST」 フィールドの値は、入力フィーチャの座標系の距離単位です。たとえば、50 メートルのバッファ距離がツールで指定されているのに、入力データセットの座標系がフィートの距離単位を使用しているような場合、50 メートルがフィート単位に変換されて [BUFF_DIST] フィールドに出力されます。これには、次のような 2 つの例外があります。
- 入力フィーチャが地理座標系を持ち、バッファ距離がキロメートル、マイルなどの距離単位で指定されている場合、[BUFF_DIST] フィールドの値はメートル単位になります。
- 入力フィーチャの空間参照が [不明] の場合、変換は適用されず、[BUFF_DIST] フィールドの値は、入力とまったく同じ値になります。
[BUFF_DIST] の単位変換が実行される場合、されない場合についてのシナリオを、次の表にまとめます。
入力フィーチャの座標系 |
バッファの距離単位 |
単位変換 |
---|---|---|
地理 |
角度または距離 |
メートルに変換される |
投影 |
角度 |
入力座標系の単位に変換される |
投影 |
線形 |
入力座標系の単位に変換される |
地理または投影 |
不明 |
入力座標系の単位と想定される |
不明 |
角度または距離 |
変換されない |
[BUFF_DIST] 値の単位は、常に設定時の出力座標系環境の単位になります。