Alteryxではじめる空間分析-空間的なマッチング

Alteryx

Alteryxで行う空間分析について解説するシリーズです。

今回は、空間分析の本丸とも言える空間的なマッチングについて解説していきたいと思います。

空間的なマッチングとは?

空間的なマッチングとは、2つの空間的なオブジェクトの位置関係を特定するもので、重なり合っているのか、一部だけ重なっているのか、内部にあるのか、そもそもまったく重なっていないのか、ということを調べることです。一般的には、重なっているものを抽出するような際に使われます。

GISの世界では一般的に以下のような関係を調べます。

この他、境界矩形を考慮したマッチングのケースもあります。

この空間的な位置関係の把握を行うことで、例えばある地域にある顧客を抽出してカウントしたり、ポリゴン同士が重なっている部分を取得し面積を計算したり、といった複雑な処理が可能になります。

境界矩形とは?

これまで何度か境界矩形というものが出てきましたが、一体何なのでしょうか?

これは、各空間オブジェクトすべてを内包する四角形のことです。空間オブジェクトの緯度経度の最大値、最小値を求め、それらで四角形を作ると境界矩形が作成できます。これは、空間情報ツールなどでも意図的に作成することができますが、そもそも各ツール内で境界矩形を考慮したような機能を持っているケースもあります。

以下のサンプルでは、オレンジ色の三角形に対して描いた境界矩形を緑色の四角形のポリゴンで示しています。

Alteryxではどのように空間マッチングを行うのか?

Alteryx Desinerで空間マッチングを行う場合は、空間マッチツールを使います。

このツールは入力が2つあり、それぞれのデータストリーム間の空間オブジェクトの位置関係を調べます。空間データはデータ量が多いケースが多く、大量のデータが入力されるとその分時間もかかります。ただし、このツールはマルチスレッド化されているツールですので、PCのスペックが高ければ処理速度も高速化されます。

基本的にT入力は一通り条件に合うか合わないかをチェックしたいデータを入力します。U側はT入力のそれぞれのレコードに対してマッチングをかけていくため、何度もマッチングに使われます。

つまり、出力側を見ると、M出力(Match)とU出力(Unmatch)のレコードのユニークなレコード数を合計したものは、T入力のレコード数と一致します(U入力のうち複数マッチするものがあればM入力側に複数出力されます)。ですので、U入力のレコード数が多いと非常に時間がかかります(何度も検査されるため)。

例えば、T入力に5レコード入力し、U入力に10レコード入力するとします。T入力のうちU入力にマッチしたものが3レコード、マッチしなかったものが2レコードだとすれば、U出力は2レコードが出力されます。M出力側は、U入力のうちマッチするものが複数あればその分M側に出力されます。すべて1つしかマッチしない場合は、M出力は3レコードになります。

大量のデータを処理する場合の注意点

空間データは場合によってはマッチング対象が一億レコードもある、といったケースもよく見かけます。このような大量データのマッチングをかけるときは、なるべくデータ量を減らすことが必要です。少なくとも空間データの属性データ(面積、名称等)は先に削除してからマッチングをかけましょう。各レコードを区別するためにはレコードIDツールであらかじめレコード番号などを振っておけば、あとから属性データを紐づけることが可能です。

利用できるマッチングの条件について

それでは実際に利用できるマッチングの条件について見ていきましょう。実はこのツールのオプション名の日本語訳が微妙です・・・。

  • ターゲットとユニバースの交差地点
  • 対象がユニバースのSpatialObjを含む
  • 対象のユニバース内にある地点
  • ターゲットとユニバースの接触地点
  • ターゲットとユニバースの接触または交差地点
  • ターゲット境界矩形がユニバースに重なる地点
  • カスタムDE-9IM相関

ターゲットとユニバースの交差地点(Where Target Intersects Universe)

これはよく使うオプションになるかと思いますが、T入力とU入力が重なるかどうかを判定します。このケースではT入力、U入力どちらに何を入力しても同じ結果になります。以下の図ではAをT入力側のデータ、BをU入力側のデータと考えてください。

また、このケースでは、重なった部分のポリゴンを作成するオプション「交差オブジェクトを出力」が利用可能です。これを使えば、わざわざマッチング後に空間プロセスツールで交差オブジェクトを作成する必要はありません。

対象がユニバースのSpatialObjを含む(Where Target Contains Universe)

これと次のオプションの「対象のユニバース内にある地点」は非常によく似ています。どちらも「含む」、つまり領域内に入っているかどうかを判定するものですが、どちらに含むか、というのが逆になっているオプションが次のオプション「対象のユニバース内にある地点」です。図示すると以下のようになります。

このオプション「対象がユニバースのSpatialObjを含むは」、T入力の空間オブジェクト内に、U入力の空間オブジェクトがすっぽり入るかどうかを判定します。

対象のユニバース内にある地点(Where Target Within Universe)

上のオプションで解説した通り、上のオプションの逆です。つまり、以下のようにT入力の空間オブジェクトが、U入力の空間オブジェクト内にすっぽり入るかどうか、を判定します。

これは、T入力側を一通りUとマッチするかどうかでマッチした、しないで振り分けていくものなので、T入力側の方が小さい形状のものの場合はこちらのオプションを使いします。逆に、T入力側のポリゴン側が大きい場合はContainsのオプションの方を使います。

ターゲットとユニバースの接触地点(Where Target Touches Universe)

接触は個人的にはほとんど使ったことがありません。T入力とU入力が接触するかどうかという判定を行います。

ターゲットとユニバースの接触または交差地点(Where Target Touches or Intersects Universe)

このオプションは、交差と接触いずれかのパターンを抽出するオプションです。

ターゲット境界矩形がユニバースに重なる地点(Where Target Bounding Rectangle Overlaps Universe)

このオプションは、T入力、U入力、いずれも境界矩形を作成し、その境界矩形が重なるかどうかを判別します。

カスタムDE-9IM相関

上記の条件でできないケースはこのカスタムDE-9IM相関を使うことで解決できます。つまり好きに条件を決められるのがこのオプションです。しかし、これ最初意味不明なので使いにくいオプションです。しかし、このオプションが使いこなせれば複雑なマッチング条件も自由自在に設定することができます。ただし、日本語での情報が極端に少ないのでご注意ください。詳細は、WikipediaのDE-9IMを御覧ください。

空間マッチツールの設定画面について

改めて空間マッチツールの設定画面を見てみましょう。

基本的には、T入力とU(ユニバース)入力でマッチングを行う空間オブジェクトのフィールドを選択し、マッチング条件を設定するだけです。

出力する項目については、セレクトツールと同様の機能がついているため、不要な項目はここで落とすことができます。

マッチング条件として、「ターゲットとユニバースの交差地点」を選択したときのみ、「交差オブジェクトを出力」オプションをオンにすることができます。これはデフォルトではIntersectPolyという名称の空間オブジェクトとして生成されます。

実際にやってみる

それでは、実際にポリゴン内にあるポイントデータの抽出をやってみましょう。

大量のデータから特定の地域でポイントデータを抽出

今回は警視庁の交通事故データから渋谷区にあるデータだけ抽出してみたいと思います。交通事故データは以下のとおり全国分入っています。

交通事故データ 出典:警察庁ウェブサイト(https://www.npa.go.jp/publications/statistics/koutsuu/opendata/2022/opendata_2022.html)
「交通事故統計情報のオープンデータ」を加工して作成

上のものを表示するために、以下のような処理をしています。

緯度経度が0のものを含んでいるのでまず取り除いています。その後、緯度経度を表示できる形式にフォーミュラツールで変換しています。警察庁のデータは60進数の度分秒形式で記載されているため変換が必要です。最終的にはポイント作成ツールで空間オブジェクトにすれば表示することができます。

ここから渋谷区のデータのみ抽出していきましょう。渋谷区のポリゴンは以下のものを使います。

※境界データについて:出典 政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)

あとは、交通事故データをT入力へ、渋谷区のポリゴンをU入力へ接続します。マッチングのオプションとしては、ポリゴンの境界上のポイントも含みたい場合は「ターゲットとユニバースの接触または交差地点」を選択します。ポリゴン内部のみでよければ、「ターゲットとユニバースの交差地点(Intersects)」もしくは「対象のユニバース内にある地点(Within)」を指定します。

これにより以下のように抽出されます。

背景となっている渋谷区のポリゴンですが、もっと複雑な形状で巨大なポリゴンの場合は表示に非常に時間がかかるため、ご注意願います(各レコードすべてに同じポリゴンが格納されているため、その分描画に時間がかかります)。

新規オープン店舗の影響を予測する

次に、新規オープン店舗の影響を予測してみましょう。以下のように渋谷駅周辺に店舗を展開している架空のお店があります。

それぞれのお店の商圏は300mと定義しています。つまり既存店の商圏は、商圏分析ツールを使って以下のように表現できます。

さらに、新規店舗も加えた商圏を作成してみると以下のようになります。

それでは、この新規店舗の商圏は他の店舗の商圏に対してどの程度の影響を与えるのでしょうか?新規店舗の商圏と、既存店舗のみの商圏の重なりを見てみましょう。このために、空間マッチツールで重なり合う部分を抜き出してみましょう。

以下のようなワークフローになります。新規店舗含めた商圏から新規店舗分の商圏を抜き出し、既存店舗のみの商圏と重ねてマッチした部分が既存店で影響を受ける商圏となります。

以下の地図の青い部分が新店舗の影響を受ける部分です。

元々の商圏から影響を受けた商圏を面積比で計算すると、以下のようになります。

S0001で22%、S0002で13%程度の売上減が見込まれる、ということになります。

サンプルワークフローダウンロード

まとめ

  • Alteryx Designerを使った空間的なマッチングを行う方法をご紹介しました。
  • 空間的なマッチングを行うために、空間マッチツールの使い方をご紹介しました。
  • サンプルとして、大量のポイントデータから特定のポリゴン(エリア)内のデータの抽出と、新規オープン店舗が既存店舗に与える影響を空間的なマッチングから計算する例をご紹介しました。

コメント

タイトルとURLをコピーしました