空間演算ツールの実行例を紹介します。
QGISの空間演算ツールは重なった地物同士を切り取ったり融合したりするツールです。
ツールの名称を見ただけではどれがどのような結果になるのかわかりづらいと思います。
今回はこれらの処理の基本的な挙動を実際の実行例を示しながら紹介します。
空間演算ツールとは
位置の関係を条件として重ね合わされた情報を分析する空間演算はGISならではの分析手法であり、空間演算ツールは最もよく利用されるツールの一つです。
QGISには複数のツールが用意されていて多彩な切り取りや融合を実行することができるのですがツールの名称を確認するだけではそれぞれの違いが分かりづらいです。
現在のQGISのバージョンで用意されている空間演算ツールは以下の9つです。
バッファ(buffer)
「バッファ」は地物から指定した距離のバッファを発生させるツールです。
ポイントデータにバッファを発生させると指定した距離を半径に持つ円を描くことができます。このツールは、属性値の大きさ応じてポイントデータのシンボルサイズを変更する方法でポイントデータから一定距離の円を作成する際に使用しました。
ポイントだけでなく、ベクタデータであればラインやポリゴンであってもバッファを発生させることが可能です。
通常のバッファ処理では、設定ウインドウで以下の情報を設定します。
- 入力レイヤ:バッファを発生させる地物が含まれるレイヤ
- 距離:バッファの距離を単位とともに指定する
- セグメント:バッファの滑らかさ
以下の実行例では、長方形の地物に対して「バッファ」を行いました。
横線模様で表示されているのが新たに作成された地物です。元の地物は薄い灰色で示しています。
「バッファ」ツールではこのように地物に対して一定距離で発生したバッファが新たな地物として作成されます。
切り抜く(clip)
「切り抜く(クリップ)」は重なりあう地物Aと地物Bがあった場合に、重なりあう部分の形状が地物Aから切り抜かれます。つまり重なりあう部分だけが残されます。
地物Aはポイント、ライン、ポリゴンどのベクタデータでも大丈夫ですが、切り抜く方の地物Bはポリゴンデータである必要があります。
データが持つ属性値は、地物Aのもののみが引き継がれます。
設定ウインドウでは以下のレイヤを選択します。
- 入力レイヤ:地物Aが含まれるレイヤ
- オーバーレイレイヤ:地物Bが含まれるレイヤ
以下の実行例では、六角形の地物Aを円形の地物Bに対して「切り抜き」を行いました。
横線模様で表示されているのが新たに作成された地物です。元の地物AとBは薄い灰色で示しています。
「切り抜く」ツールではこのように地物Aと地物Bが重なる部分のみの地物が作成されます。
属性値は地物Aの内容になっています。
凸包(Convex hull)
「凸包」はwikipediaによると「与えられた集合を含む最小の凸集合である」という意味の用語です。
GISでは全ての地物が含まれる最小の凸型の多角形が作成されます。
地物はポイント、ライン、ポリゴンどのベクタデータでも利用できます。
設定ウインドウでは以下のようにレイヤを選択します。
- 入力レイヤ:凸包したい地物が含まれるレイヤ
以下の実行例では、非規則な形状のラインデータに対して「凸包」を行いました。
黒線で表示されている多角形が新たに作成された地物です。元のラインデータは薄い灰色で示しています。
「凸包」ツールではこのように元となる地物が全て含まれる最小の凸型の多角形が作成されます。
注意点としては、地物毎に凸包が行われるので異なる属性を持つ地物の場合はそれぞれで凸包処理が行われます。
複数の地物全体を囲う多角形を作りたい際は後で説明する「融合」処理を行い一つの地物に変換しないといけません。
特にポイントデータの場合は、通常は異なる属性値を持つ複数の地物となっているので、そのまま凸包してもエラーが出てうまくいきません。
ポイントデータで凸包を行う場合は融合処理を行うか、プロセッシングツールボックスの「最小境界ジオメトリ」を使う必要があります。
プロセッシングツールボックスの「最小境界ジオメトリ」からジオメトリタイプで「凸包」を選択して実行する方法であれば融合処理しなくても複数の地物を囲う多角形を作れます。
差分(difference)
「差分」は重なりあう地物Aと地物Bがあった場合に、重なりあう部分の形状が地物Aから切り取れます。地物Aの一部が欠けたような形状になります。
ポイント、ライン、ポリゴンどのベクタデータでも利用できますが、ライン同士であればライン同士の一部がぴったりと重なっている必要があります。
データが持つ属性値は、地物Aのもののみが引き継がれます。
設定ウインドウでは以下のレイヤを選択します。
- 入力レイヤ:地物Aが含まれるレイヤ
- オーバーレイレイヤ:地物Bが含まれるレイヤ
以下の実行例では、六角形の地物Aを円形の地物Bで「差分」を行いました。
横線模様で表示されているのが新たに作成された地物です。元の地物AとBは薄い灰色で示しています。
「差分」ツールではこのように地物Aから重なり合う部分が切り取られたような地物が作成されます。
属性値は地物Aの内容になっています。
融合(dissolve)
「融合」は複数の地物が融合され一つの地物に変わります。
重なりあう地物があった場合は一つにつながった形状になります。
離れている地物では形状は変わりませんが属性値が統合され一つの地物として扱われます。
地物はポイント、ライン、ポリゴンどのベクタデータでも利用できます。
設定ウインドウでは以下のようにレイヤを選択します。
- 入力レイヤ:融合したい地物が含まれるレイヤ
以下の実行例では、いろいろな形状でバラバラに配置された複数の地物を融合しました。
横線模様で表示されているのが新たに作成された地物です。
重なりあう地物同士が融合され一つにつながった形状になっています。
重なりあう地物がない場合は、形状は変わりませんが属性値が統一され同じ模様で表示されています。
フィールドを指定して融合することもできます。
このデータには「形状タイプ」というフィールドを作り、地物の形状に合わせて「円形」、「長方形」、「多角形」3種類の属性値を設定しています。
融合する際にこの「形状タイプ」フィールドを指定すると、地物の形状ごとに融合処理が行われます。
融合するフィールドを指定する場合は、設定ウインドウで以下のようにレイヤと属性を選択します。
- 入力レイヤ:融合したい地物が含まれるレイヤ
- 基準となる属性:融合したいフィールド
今度は、横線模様、縦線模様、点模様の3つのタイプの地物が新たに作成されました。
それぞれ属性値が「円形」、「多角形」、「長方形」の地物です。
このように属性値が同じ地物同士だけを融合処理することができます。
交差(intersect)
「交差(インターセクト)」は、処理の結果作成される地物の形状は「切り抜く」と同じです。
重なりあう地物Aと地物Bがあった場合に重なりあう部分の形状が地物Aから切り抜かれ、重なりあう部分だけが残されます。
異なるのはデータが持つ属性値で、地物Aと地物Bの両方の属性値が引き継がれます。
「切り抜く」の場合は地物Aの属性値のみがのこされ、地物Bの属性値は消えてしまいます。
ポイント、ライン、ポリゴンどのベクタデータでも利用できますが、ライン同士であればライン同士の一部がぴったりと重なっている必要があります。
設定ウインドウでは以下のレイヤを選択します。
- 入力レイヤ:地物Aが含まれるレイヤ
- オーバーレイレイヤ:地物Bが含まれるレイヤ
以下の実行例では、六角形の地物Aを円形の地物Bで「交差」を行いました。
横線模様で表示されているのが新たに作成された地物です。元の地物AとBは薄い灰色で示しています。
作成される地物の形状は「切り抜く」と全く同じです。
「切り抜く」ツールでは地物Aの属性値のみが引き継がれるのに対して、「交差」では両方の属性値が引き継がれます。
対称差(symmetrical difference)
「対称差」は重なりあう地物Aと地物Bがあった場合にどちらにも一致しない部分のみが切り抜かれます。重なりあわない部分のみが一つの地物として残されるため、重なりあう部分だけが残される「切り抜く(クリップ)」の逆の形状となります。
データが持つ属性値は、地物Aと地物Bの両方の属性値が引き継がれます。
ポイント、ライン、ポリゴンどのベクタデータでも利用できますが、ライン同士であればライン同士の一部がぴったりと重なっている必要があります。
設定ウインドウでは以下のレイヤを選択します。
- 入力レイヤ:地物Aが含まれるレイヤ
- オーバーレイレイヤ:地物Bが含まれるレイヤ
以下の実行例では、六角形の地物Aを円形の地物Bで「対称差」を行いました。
横線模様で表示されているのが新たに作成された地物です。
「対称差」ツールではこのように二つの地物の重なり合わない部分のみが新たな地物として作成されます。
属性値は両方の地物のものが引き継がれます。
和集合(union)
「和集合」は重なりあう地物Aと地物Bがあった場合に重なる部分と重ならない部分を別の地物として分解します。切り抜かれることはなく、重なり方によって異なる属性値を持つ複数の地物が作成されます。
データが持つ属性値は、地物Aと地物Bの両方の属性値が引き継がれます。
ポイント、ライン、ポリゴンどのベクタデータでも利用できますが、ライン同士であればライン同士の一部がぴったりと重なっている必要があります。
設定ウインドウでは以下のレイヤを選択します。
- 入力レイヤ:地物Aが含まれるレイヤ
- オーバーレイレイヤ:地物Bが含まれるレイヤ
以下の実行例では、六角形の地物Aを円形の地物Bで「和集合」を行いました。
横線模様、縦線模様、点模様の3つのタイプの地物が新たに作成されました。
それぞれ「地物Aのみの領域」、「地物Bのみの領域」、「重なりある領域」です。
このように「和集合」では重なり方が異なる部分が全て異なる地物として新たに作成されます。
選択物の隣接ポリゴンの融合(eliminate)
「選択物の隣接ポリゴンの融合」は、同じレイヤ内の重なりあう地物同士を指定した条件で融合します。
これまでの処理とは雰囲気が異なる処理です。
この処理を使用できるのは以下の画像のように重なっている複数の地物が含まれるベクタデータです。
この処理を行うには、まずこれらの地物を一つないし複数選択します。
以下の例では左下の長方形の地物を選択しました。
黄色になっている地物が選択状態にある地物です。
そして、選択した地物と重なりあう地物を融合するのがこの処理なのですが、全ての重なりあう地物と融合を行うのではなく、融合する地物を重なり具合を基準として指定することができます。
設定ウインドウでは以下のようにレイヤと融合する条件を選択します。
- 入力レイヤ:選択した地物が含まれるレイヤ
- 結合する隣接ポリゴンの基準:融合する条件
融合する基準は3種類あり「最大の面積」、「最小の面積」、「最大の共通境界」から選択できます。
それぞれ実行例を示しながら説明します。
①最大の面積
選択した地物が重なりあう地物のうち、最も面積が大きい地物とだけ融合されます。
この例で選択した長方形の地物に重なりあう地物のうち、最も面積が大きいのは右上に位置する円の形状の地物です。
下の実行結果では、右上の大きな円の地物のみが長方形の地物と融合し、その他の二つの地物は元のまま存在しています。
②最小の面積
選択した地物が重なりあう地物のうち、最も面積が小さい地物とのみ融合されます。
この例で選択した長方形の地物に重なりあう地物のうち、最も面積が小さいのは右下に位置する円の形状の地物です。
下の実行結果では、右下の小さな円の地物のみが長方形の地物と融合し、その他の二つの地物は元のまま存在しています。
③最大の共通境界
選択した地物が重なりあう地物のうち、重なりあう境界の長さが最も大きい地物とのみ融合されます。
この例で選択した長方形の地物に重なりあう地物のうち、最も境界の長さが大きいのは左上に位置する六角形の形状の地物です。
下の実行結果では、左上の六角形の地物のみが長方形の地物と融合し、その他の二つの地物は元のまま存在しています。
これらの処理では、データが持つ属性値は融合される地物(選択していない地物)の属性値が引き継がれます。
まとめ
いかがでしたでしょうか?
QGISでよく使用するツールの一つである空間演算ツールの実行例を紹介しました。
実際の実行例を確認していくとそれぞれの違いが分かりやすかったのではないでしょうか。
空間的な重なり具合で情報を分析する空間演算ツールはGISでとてもよく利用するツールです。
複雑な分析でなければ、GISを利用する目的のかなり多くの部分がこれらのツールで達成されると思います。
今回は基本的な処理の挙動がわかりやすいように、シンプルな形状の架空のデータを使用して実行例を紹介しました。
実際のデータで行うまた違った印象になることもあると思いますので、ぜひいろいろなデータを使って試してみるとよいと思います。