2015年3月19日木曜日

Fusion Tables×Google Apps Script (マッピング編)

こんにちは。井下です。

今回はFusion Tables最大の特徴と言えるマッピングについて書きます。
点でなく、地域の境界でのマッピングについても取り扱います。

点のマッピング
Fusion Tablesを取り上げた最初の記事に、下の画像のようなマッピングを行いました。

このFusion Tablesに入っているデータは都道府県名と人口の数値だけが入っているシンプルなものですが、特別な操作をしなくともマッピングされていました。

ただし、種も仕掛けもなく、都道府県名を位置情報として認識しているわけではありません。
Fusion Tablesのカラムには"Location"という型があり、その型で定義されているカラムの値は位置情報として認識します。
そして、Fusion Tablesでは"東京"や"大阪"など、特定の地名を"Location"として定義したカラムに入れると、その文字から点で表せる位置情報に変換してくれるようになっています。

そのため、特に意識せずとも都道府県を点で表示したマッピングがされていたのです。


お手軽にマッピングができる素晴らしい機能ですが、やはりマッピングするのであれば、地域の境界ごとに色分けしてみたいですね。


地域の境界ごとのマッピング
"Location"に入れられるデータは、地名の文字列だけではなく、"KML"という形式のデータを挿入することができます。この"KML"という形式のデータが、地域の境界を表すデータとして機能します。
そのため、地域ごとで区分したマッピングをするには、大まかに以下の手順を踏むことになります。

  1. 地域ごとの位置情報データを入手する
  2. 位置情報データをKML形式にする
  3. KML形式のデータをFusion Tablesにインポートする

位置情報のデータは形式が様々で、KML形式のデータもあまり多くはありません。
ただ、KML形式以外の位置情報のデータを、KML形式へ変換するツールはフリーでいくつかありますので、まずは位置情報のデータを入手し、そのデータを変換し、最終的にFusion Tablesにインポートするという流れが今のところ一番楽だと思います。
(Fusion TablesはKML形式のインポートをサポートしているので、最初の手順のデータ入手が一番苦労するところかもしれません)

参考までに、私が都道府県の境界ごとの色分けをする際には、位置情報データは以下のサイトからいただきました。
http://itochiriback.seesaa.net/article/245436179.html
(Shapeファイル形式なので、ダウンロード後に変換する必要があります)

Shapeファイル形式からKML形式への変換には"QGIS"というツールを利用しました。こちらは調べれば情報はたくさん出てきますので、利用方法は割愛します。


都道府県のKML形式データをFusion Tablesにインポートすると、次のようなテーブルになりました。

"geometry"カラムに境界のデータが入っています。一応"ObjName_1"カラムも位置情報として変換できるのですが、今回は不要なので変換しません。

では、ここでタブの"Map of geometry"からマッピング結果を見てみましょう。もしもタブが追加されていなければ、タブの右端の"+"から"add Map"をクリックすることで、マッピング結果を見られるタブが追加されます。

まだ色分けこそされていませんが、"点"ではなく、"面"で色がついた地図が出てきました。

次はデータに応じて色分けをできるように設定しましょう。画面右の"Change feature styles..."ボタンをクリックすると、色分けの基準を設定する画面が開きます。

デフォルトの設定だと、特にデータを参照せずに、全ての位置情報を赤に着色するようになっています。
画面から"Bukets"を選択すると、基準となるカラム、色の区分の数、基準となるカラムの範囲、色を設定することができます。

例として次のように設定してみました。
・基準となるカラム:JIS-CODE(インポートしたデータに入っていたカラム。都道府県のID?らしきデータが入っています)
・色の区分の数:4
・基準となるカラムの範囲:48を最大とした自動判別
・色:1~12.75⇒オレンジ
   12.76~24.5⇒黄色
   24.6~36.25⇒緑
   36.26~48⇒水色

設定を終えると、設定した通りのマッピング結果が表示されます。
ちゃんと地域の境界ごとに色分けがされていますね。

これで地域の境界ごとでマッピングすることができましたが、1つ課題が残っています。

今回は色分けする基準として、あらかじめKMLファイル内に入っていたカラムを利用しましたが、普通は自分で用意したデータを色分けの基準にしたいはずです。
KMLファイルを加工して、色分けの基準となるデータを追加すればできないこともありませんが、マッピングのたびに加工をしようとするとかなり手間がかかります。

ある条件を満たしていれば、その手間をかなり減らすことができるのですが、それは次回に紹介しようと思います。


おわりに
今回は紹介できませんでしたが、色分けの方法もグラデーションにする、基準となるカラムの範囲を自分でカスタムするなど、見せ方や区分の仕方はたくさん用意されているので、興味があれば一度お試しください。

次回の予定としては、実用的な利用例として"Google Analyticsから月ごとにデータを取得し、そのデータをマッピングしたFusion Tablesを自動で作成する"ような実装をGoogle Apps Scriptでしてみようと考えています。

0 件のコメント:

コメントを投稿