自治体が公開している地理空間データをAlteryxで前処理してTabelauで可視化してみた #tableau #alteryx
はじめに
ゴールデンウィークは人が多いので、あえてどこにも出かけない系の、大阪オフィス唯一のDI部メンバー、tamaです。
前回のエントリにて、Tableau Desktop 2018.1の新機能「SQL Serverの空間データに直接接続」をご紹介しました。そして今回、この機能を使用して、私が住んでいる奈良県葛城市が公開している地理空間データを可視化してみました。(下記にビジュアライゼーションを貼り付けます)
今回はTabelauだけではなく、Alteryxも使用してみました。データ取得→Alteryxで前処理→Tabelauで可視化…といった、王道パターン的な流れで作業したので、本エントリはそれをご紹介します。
関連する過去エントリ
- Project Maestro(Beta)で奈良県の統計データを前処理してみた #tableau #Maestro | Developers.IO
- 続・Project Maestro(Beta)で奈良県の統計データを前処理してみた(Join編) #tableau #Maestro | Developers.IO
- Tableau 2018.1 新機能紹介:SQL Serverの空間データに直接接続できるように #tableau | Developers.IO
作業環境
対象のデータ
- 葛城市オープンデータ - 葛城市
- 以下のシェープファイル(.shp)
- 市内のAED設置場所
- 避難場所
- 土砂災害警戒区域(急傾斜地)
- 土砂災害警戒区域(土石流)
- 浸水想定区域
- 以下のシェープファイル(.shp)
データ前処理
- Alteryx Designer x64 2018.1.3
- 日本語ベータ版
データを置くところ
- Amazon RDS for SQL Server
- db.t2.micro
- 汎用(SSD)
- 20GB
- SQL Server 2017 Express Edition
データ可視化
- Tableau Desktop 2018.1.0
実践
データを取得する
上記の葛城市オープンデータのページから、該当のシェープファイルをダウンロードします。シェープファイルを公開している地方自治体というのは、比較的珍しいのではないでしょうか。
データを前処理する
さて、ここで登場するのがAlteryxです。Alteryxで作成したワークフローがこちらになります。これはシェープファイル1つ分のワークフローになります。本当は複数のシェープファイルをいい感じに一発で処理できると思うのですが、私のAlteryxレベルはまだまだなので、ひとまずこちらのワークフローをファイルの数だけ作成して実行しました。
さっきから「前処理」とは言っているものの、今回はいかにも「処理」って感じのことはしません。葛城市に限らないのですが、公共が公開しているシェープファイルは、基本的に文字コードがアレな感じなことがほとんどで、Tabelauにそのまま読み込んでも文字化けすることが非常に多いです。ですので、AlteryxでSQL Serverにアップするついでに文字コードも修正しちゃおうっていう話です。
各ツールについて見てきます。
データ入力
シェープファイルを読み込む部分です。さきほど公共団体のシェープファイルはTabelauでは文字化けする…という話をしましたが、案の定、Alteryxでも文字化けしてますね…。
基本的には読み込むシェープファイルを指定するだけですが、忘れてはならない設定が1つあります。それが「投影(Projection)」の設定です。(上記画像の赤枠)
測地系と投影法
地理空間データというのは、当たり前ですが地図上に何らかのデータを表すものですが、実はその表し方には種類が色々あり、シェープファイルを読み込む時は、そのファイルの設定を正しく指定しておかないと、処理がうまくいきません。(Alteryxの場合、特にエラーは出ずデータは読み込めますが、データ出力等がうまくいかなくなります。)
測地系や投影法に関する詳しい説明は後述の参考リンクをご覧いただければと思いますが、今回のデータに関してザックリした解説をします。
葛城市オープンデータのページをちゃんと読むと、シェープファイルの仕様が明記されています。
本ページで公開しているShapeファイルは、以下の仕様で作成されています。
世界測地系 平面直角座標系第6系
「世界測地系」「平面直角座標系第6系」…これは「Japan Plane Rectangular CS VI(EPSG:2448)」にあたります。これをAlteryxのデータ入力時に設定しておく必要があります。
投影の設定
投影の部分を選択すると、投影メニューが出てきます。ここで、Japan Plane Rectangular CS VIを指定するのですが、イチから探すと結構骨が折れますので、検索でパパっと出しましょう。投影法のEPSGコード(今回は2448)を入力して検索することができますので、それで指定すれば、投影法の設定は完了です。
フォーミュラ
フォーミュラツールを使用して、文字コードを変換します。使用した関数はこちら。
ConvertFromCodePage([変換したいカラム名], 50220)
ConvertFromCodepage関数で、カラムをUnicodeに変換します。ちなみに元データは「ISO-2022-JP 」なので、下記リンクを参考に、該当の文字コードを指定します。
セレクト
ここでは特別なことはしておらず、不要なカラム(変換前のカラム)を除去しているだけです。
データ出力
後は出力したいSQLServerの接続情報を入力すれば、テーブル作成からデータ投入まで一気に処理できます。データ入力時とは違い、ここの設定は初期設定で問題ありません。
Tabelauでデータを読み込む
無事、データをSQLServerに出力できたということで、Tabelauで直接つないでみましょう。
空間データとして問題なく読み込めました。(上記画像は避難場所のデータ)
この後からVizの作成に入っていきますが、ここからはどのようなビジュアライゼーションを作成したいかによって作業は変わってきます。私はとりあえず災害系の空間データを1つの地図に表示させたかったので、いくつかのテーブルをユニオンしてみました。
Tabelauでビジュアライゼーションする
後はビジュアライゼーションを作るだけです。
葛城市は西に二上山という山があり(この山を越えると大阪府です。)、そのあたりは一帯が土砂災害のおそれがあるようです。また、東の(田舎にしては)発展している街の方は、多少浸水するおそれのある地域が広がっています。
AEDや避難場所は一定数あるので、いざという時のために自宅近くの場所を確認しておきます。
おわりに
Tabelau 2018.1からSQLServerの地理空間データに対応したので、シェープファイルの取り回しが楽になったと思います。今まで地理空間の分析なんて、専門家以外触れられないと思っていましたが、サクッと扱える時代になりましたね。
奈良からは以上です。