こんにちは。エクスチュアの田中寛人です。
今回はTableauのマッピング機能を用いた時に、ポリゴンデータから東京都における小笠原諸島などの任意の地域を除外する方法、
さらにそれらを都道府県ごとのデータにまとめる方法についてお伝えします。
ちなみに、なぜ小笠原諸島や大島などを東京都から除外したいかというと、
Tableau製品の地図情報の認識はバージョンを重ねるごとに更新されており、
Tableau2018.1からは小笠原諸島群が東京都として認識されている影響で、
小笠原諸島の方々には大変申し訳ないですが、マップが少し見にくい状態になってしまうのです。
修正前 修正後
※比較しやすいように画像では、東京都のみを表示しています。
結論から申し上げると、都道府県ごとのマッピングだとTableauの機能だけでは対処できず、QGISという地理情報編集ソフトを利用する必要があります。
………え???
「QGISなんて使ったことないし、そんな面倒なことしたくないよ!」と思う方もいるかもしれません。
しかし、全く使ったことが無い僕でも簡単に対処出来ました。
分かりやすく書いたので僕を信じて下さい!!!
では、どのように余分な地域をマッピングから除外するのでしょうか?
1.市区町村レベルのポリゴンデータをダウンロードする。
全国のポリゴンデータは以下の国土交通省のページから簡単に手に入ります。
出典:国土数値情報ダウンロードサービス(行政区域)
2.QGISをダウンロードする。
QGISダウンロードページ
バージョンは3.6verがおすすめです。
3.QGIS上で、1でダウンロードしたデータを開く。
手順1でダウンロードした市区町村ごとのデータを展開した後、シェイプファイル(拡張子が.shp)を選択し、ドラック&ドロップでQGISに読み込ませてください。
ここで確認して欲しい事が1つあります。
画面上部の「レイヤ」→「属性テーブルを開く」から文字化けしていないことを確認してください。
もし、文字化けしている時は、「レイヤ」→「レイヤのプロパティ」→「データソースエンコーディング」→「System」を選択してください。
※それでも直らない場合は、「データソースエンコーディング」から「Shift-JIS」や「UTF-8」を選んで「属性テーブルを開く」から確認してください。
4.東京都から除外を行うエリアを除外する
今回は東京都のポリゴンデータが見づらくなる要因である
‘三宅支庁’,’八丈支庁’,’小笠原支庁’,’大島支庁’,’所属未定地’を除外します。
メニューの「レイヤ」→「フィルター」をクリックし、以下のコードをコピーして赤枠に貼り付けてください。
“N03_003” NOT IN (‘三宅支庁’,’八丈支庁’,’小笠原支庁’,’大島支庁’)
AND
“N03_004” NOT IN (‘所属未定地’)
※NOT INとは、()内のモノを含まないという意味です。
補足
手順5で任意の地域を除外することが出来ます。
例えば、沖縄と佐渡島を除外したい場合は上部の画像赤枠に
“N03_001” NOT IN (‘沖縄県’)
AND
“N03_004” NOT IN (‘佐渡市’)
と入力します。
また、任意のフィールドを選択した上で、赤枠の「全ての」をクリックすると、そのフィールド内の全てのレコードを参照することが出来ます。
フィルターにかけたい地域をダブルクリックすることで条件式に追加できるため、簡単にフィルターを活用できます。
さらに細かい粒度(N03_007の市区町村コードなど)でフィルターをしたいときは、QGISのラベリング機能を利用すると便利です。
「レイヤ」→「ラベリング」をクリックし、②の「このレイヤのラベル表示」を選択後、③で表示させたいフィールドを選択します。
画像では「N03_007」(市区町村コード)を表示させています。
この場合、佐渡市は’15224’ということが分かったので、佐渡市を除外したい時は、
“N03_007” NOT IN (‘15224’)
と入力するだけです。
少し補足が長くなってしまいましたが、話を本題に戻します。
5.データを簡素化する。
メニューの「ベクタ」→「ジオメトリツール」→「ジオメトリの簡素化」→「許容範囲」から簡素化をしてください。
この簡素化によって多少形状は荒くなります。しかし、容量削減と今後の処理時間削減のためには必要な処理です。
「許容範囲」は任意の範囲を選択できますが、県単位なら0.000001か0.00001がお勧めです。
※許容範囲を大きくすればするほどデータは軽量化しますが、あまり許容範囲が大きい数だと手順8でエラーが発生します。
また、市区町村単位のデータが欲しい場合は上記の手順は省いても結構ですが、都道府県単位のデータが欲しい方は簡素化をお勧めします。
6.1つの市区町村に対して1つのポリゴンデータを対応させる。
メニューの「ベクタ」→「ジオメトリツール」→「ジオメトリの集約」を選択してください。
赤枠の「属性(フィールド)」から「N03_007」(市区町村コード)を選択してください。
実行後、「レイヤ」→「属性テーブルを開く」を選択すると、1つの市区町村コードに対して1行のフィールドになっているのが確認できると思います。
7.各都道府県ごとに地物をまとめる。
手順7は都道府県単位のデータを作成したい方向けなので、市区町村単位のデータで問題ない方は手順8へ飛んでください。
メニューの「ベクタ」→「空間演習ツール」→「融合(Dissolve)」をクリックし、赤枠の「基準となる属性」から「N03_001」(都道府県)を選択し実行してください。
この処理によって地物が都道府県ごとにまとまっているのが分かります。
実際に「レイヤ」→「属性テーブルを開く」を選択すると、全47行で1つの都道府県に対して1行になっているのが確認できると思います。
※ここに表示されるデータは、都道府県ごとに見た時に、融合前に一番上にあった値を引き継ぎます。
8.保存する。
メニューの「レイヤ」→「名前を付けて保存」を選択する。
①の出力ファイル形式は「GeoJSON」がお勧めです。
②で任意のファイル名、保存場所を選択する。
③でエンコーディングが「UTF-8」になっていることを確認してください。
※参考(読まなくても結構です)
シェイプファイル形式でも可視化に関しては問題ないですが、シェイプファイルと一緒に出力される別ファイルも同じ階層に位置していないとマップに使用できません。一方で「GeoJSON」形式では、それ単体で可視化できます。
9.保存したジオジェイソンファイル(拡張子が.geojson)をTableauに接続後、通常通りマッピングして完成。(画像では便宜上、東京都だけのフィルターをかけています)
おわりに
今回は、外部データを用いることで小笠原諸島や大島をマップから除外する方法を紹介しました。
慣れればとても簡単な作業ですので、この記事が少しでも参考になれば幸いです。小笠原諸島群だけでなく、任意の地域を除外することが可能なので、様々なシーンに応用できる汎用性の高いスキルだと思います。
僕はTableau初心者ですが、とても奥が深く使い方が千差万別でいつも感銘を受けます。勉強する中で新しい知見を得たら随時発信していきたいと思うので、よろしくお願いします。
ーーー
エクスチュアは国内では希少なTableau Certified Professionalも在籍するTableauのパートナー企業です。
また、Google Cloud Platform、Adobe Marketing Cloudといったマーケティングテクノロジーに精通した経験豊富なスタッフが、御社のビッグデータ分析をサポートします。
お問い合わせはこちらから
ブログへの記事リクエストはこちらまで