施設を最適な場所に建てるためや、どのエリアでビジネスを始めるかを決めるために、例えば「駅から700m以内にコンビニが何軒あるか」といったことを調べることがあります。そういう時には、GIS(地図情報システム)を使うことが多いのですが、簡易な分析であればTableauでも簡単にできます。
用意するもの
- ポイントデータ2種類
- ポイントデータは、緯度経度つきのCSV、shapefile、geojson、gdbなどTableauで読めるものなら何でもOKです。
- 2種類必要なのは、片方が円の中心、もう片方がカウントする対象です。
以下では、例として、駅ポイントを円の中心、コンビニポイントをカウントする対象として説明します。
操作方法
方針
駅ポイントから全てのコンビニポイントへの距離を計算し、一定距離以下のものでフィルターしてカウントします。力技です。
ポイント間のリレーション設定
距離の計算をするためには、まず、駅ポイントとコンビニポイントにリレーションを設定する必要があります。通常、リレーションではキーになる項目を設定しますが、駅ポイントとコンビニポイントのすべての組み合わせについて距離を計算する必要があるため、以下の図のように、フィールドを選択するのではなく計算の編集で数字の「1」を入力します。
距離の計算
駅とコンビニ間の距離の計算はDISTANCE([駅ポイント],[コンビニポイント],"m")
とするだけです。なお、ジオメトリはポイントである必要があります(ラインやポリゴンはダメ)。緯度経度を含むCSVの場合は、MAKEPOINT([緯度],[経度])
を使うことでポイントのジオメトリフィールドを作成することができます。
距離でフィルターするか、[距離]<=700
といった判定式でフィルターして、コンビニポイントのカウントをすれば完成です。判定式[距離]<=700
の700をパラメーターにすれば、円の半径を操作できるようになります。
別解
なお、別解として、物理テーブルの結合で行うこともできます。物理テーブルでの結合は、データソースの(論理)テーブルをダブルクリックすることでできます。
そのうえで、計算の編集で駅ポイントのBUFFER(700m円)を作成し、それとコンビニポイントのintersectsで結合します。ちなみに「intersects」はジオメトリの結合をしようとする時しか出てこない親切設計なので、普通に使っているだけでは気づかないかもしれませんね。
別解の欠点
標準機能のintersectsで実現するのは感覚的に理解しやすい操作ですが、次のような欠点もあるので、それを理解したうえで使う必要があります。
- BUFFERのサイズを動的に変更できない。
BUFFERのサイズ(この場合700)をフィルターやパラメーターを使って、動的に変更することができません。リレーションを使った場合は、距離のフィルターで変更することができますし「200m-700mの間」といった指定も可能です。 - 集計がしづらい
結合の特性を理解していないと、同じ値が何回も集計されてしまうことがあります。
まとめ
以上のように、GISを使わなくても、Tableauで簡単な商圏分析ができます。ぜひ活用してみてください。