テーブル結合と空間的位置関係に基づく結合


分析をしていると,空間データに含まれる情報と非空間情報,すなわち単なる表形式のデータベースが混在することがあります。我々の研究は,定量的,定性的な情報を「いかに空間に落とし込むか?」が重要です。
GISではその要求に応えるために,「テーブル結合」あるいは「リレート」という機能があります。

下の図を見てみます。

*画像出典 ArcGIS Resource Center(テーブルの結合とリレートについて)


左のテーブルがポリゴンの空間データ。右のテーブルが非空間データだと思ってください。
左の空間データは既にあり,地域を示す「ID」もふられていて識別が可能です。
一方,右のテーブルはExcelなどで独自に分析したデータだとします。これにも地域を表す「ID」が含まれている。

空間情報はある。地点や地域の識別も可能。データの分析もその単位で可能。そういった場合に,分析を別のツールやプログラムで行っておいて,2つの情報をGIS上でリンクさせ,空間化する。それが「テーブル結合」です。


テーブル結合

上で述べたとおり,テーブル結合には2つのデータが必要です。上では空間データと非空間データと書きましたが,空間データ同士でも構いません。
ここでは,ポイントデータとExcelのデータをテーブル結合してみたいと思います。


○ポイントデータの準備

今回は,4つのポイントを用意します。それぞれに「ID」というフィールドに通し番号1~4が付されています。
この数値は属性テーブルを開いて,「エディタ」-「編集の開始」で入力を行います。




○Excelのデータを準備

昔はExcelの形式よりもDBF形式やCSV形式ばかりで読み込んでいましたが,Excelで集計や分析を行う人がほとんどでしょうから,Excelを読み込んでみたいと思います。
以下のようなデータを簡単に入力してみます。IDが先ほどのポイントデータと結合するために基準になります。Dataは人通りとでもしておきましょうか。Nameは調査員。



このデータを保存(*.xlsx,*.xlsどちらでも可)し,ArcMapに読み込みます。
「レイヤの追加」から,保存したExcelのあるフォルダに移動します。


どちらでも良いですが,Excelファイルをダブルクリックします。すると,Excelファイル内の「タブ」=シート名が表示されます。
「Sheet1$」を読み込みます。



○テーブル結合

それでは,読み込んだポイントデータとExcelの結合を行います。
結合先となるポイントデータのレイヤを右クリックし,「属性の結合とリレート」-「結合」をクリックします。




下のような画面がでます。設定は以下の通りです。

  • 赤枠1の部分で「テーブルの属性を結合」を選択します。
  • 赤枠2はポイントデータのどのフィールドに結合するのか指示です。ここでは「ID」。
  • 赤枠3は結合するExcelデータの情報を入れます。結合するデータ「Sheet1$」,マッチングに利用するフィールドは「ID」です。
設定が終われば,「OK」をクリックします。



結合が正常に終われば,ポイントレイヤの属性テーブルを開いてみます。




このように「Point_Sample」のポイントデータに,Excelのデータが結合されているのがわかります。


○データの表示設定


ポイントレイヤと結合が成功しましたので,表示設定も今まで通り「レイヤプロパティ」から設定が可能です。
以下のように,フィールドに「Data」フィールドが追加されているのがわかります。



極端な表示例ですが,テーブル結合の成功です。



以上のように,既存のデータでも構いませんし,新しく分析するデータが空間データと結合できるんだということを知っておくだけでも分析の可能性が広がります。結局重要なのは,分析の単位や空間スケールをどうするかということです。この点を注意してデータを整備,構築すれば分析内容や解釈に傾注できますね。



空間的位置関係に基づき,他のレイヤからテーブルデータを結合する

テーブル結合を実行する際に,「テーブルの属性を結合」ともう一つ,「空間的位置関係に基づき,他のレイヤからテーブルデータを結合」というメニューがあります。この分析はポイント,ポリゴン,ライン間の関係を「位置関係」により結合したり,集計をしたりする機能です。
ここではポイント対ポリゴン,ポイント対ポイントの例を見てみます。

○ポイント対ポイント(ポイント間の最短距離や最近隣のポイントを特定する)

先ほどと同様に,テーブル結合を行います。「Point_Sample」レイヤを右クリックし,結合の画面を表示します。「このレイヤへの結合対象は?」を「空間的位置関係に基づき,他のレイヤからテーブルデータを結合」にします。結合元のデータを「PointSample.shp」,結合対象のデータを仮想的に人工のデータを入れた「OD_pointdata.shp」とします。




下の画面で,上の赤枠を選択しておきます。
この分析ですと,上の図で青いポイントの近くにある赤のポイントの数やそれらの最大値,最小値などを新しいフィーチャとして作成するということになります。



とりあえず平均,最小値,最大値にチェックを入れて実行してみましょう。
あたらしく追加されたレイヤの属性テーブルを見てみます。


先ほどの青の▲にデータが格納されています。
「Count_」には,青のに近いと判定された赤のの数が入っています。また,「Max_Pop」や「Min_Pop」などは,カウントされたの属性値の最大値や最小値を表しています。「Avg_Pop」は平均値です。
これの属性値を元に地図の表示を変えてみます。下の図は「Count_」をもとに表示した例です。左上の集計ポイントに近くにが多いという結果になっています。




次に,先ほどの結合の画面の下にある「各距離から最短距離にある~」を実行してみます。




結果の属性テーブルを開きます。

この属性テーブルをみると,「Point_Sample」の「ID」=1のポイントに最も近い「OD_pointdata」のIDは「34」。その地点間の距離は「107.34481m」という結果になっているのがわかります。




このように,テーブル結合は地点間の関係性をも集計していくれる機能を持っています。


○ポリゴン対ポイント(ポリゴンの中に含まれるポイントの属性値を格納する)

次は,ポリゴンの中に含まれるポイントの属性を集計してみます。
ポリゴンはメッシュデータを使ってみます。右のようなメッシュデータをベースに集計を行います。




今回はこのメッシュデータを右クリックして
「テーブル結合」の画面を出します。
同じく「空間的位置関係に基づき,~」で結合を行います。
赤枠で囲ったところに書いているように,「各ポリゴンの属性テーブルに,そのポリゴン内に含まれるポイントフィーチャの数値属性の集計値を追加します。~」となります。その集計値をどうするかということで,「平均」,「最小値」,「最大値」を追加してみましょう。




結果がレイヤとして追加されますので,属性テーブルを開きます。
合計や平均値などが含まれていると思います。
これで集計自体は完了ですので,表示を変えてみましょう。



レイヤプロパティから表示を変更します。以下の図はメッシュに含まれるポイントデータ「Pop」の合計値です。


どうでしょうか。各メッシュに含まれるポイントの位置関係(ポイントの属性値までは見えませんが...)とも一致していると思います。



以上のように,テーブル結合や空間的な位置関係による結合を行うことで,様々なデータの利用はもとより,データ間の関係性=空間分布の特性が明確になるわけです。
上の例のように,ポイントとポリゴンだけでなく,ラインとの関係なども結合することができますので試してみてください。

また,「空間的位置関係に基づき,他のレイヤからテーブルデータを結合」については,書籍やテキストによってはこのような機能を「オーバーレイ」などと言ったりします。


Comments