見出し画像

Looker Studio ラインマップ の作り方 / BigQuery の始め方

Looker Studio の解説 YouTube でこんなコメントをいただきました!

ラインマップの用途がわかりません。解説してもらえると嬉しいです!

ということで、使い方を解説してみました!

まず、Looker Studio になって解説している記事が少なく、データポータル で検索をかけてみると、ヘルプと既に開設された記事が出てきました!

上記で作れる方は、ソース元である上記を参考になさってください!

ここからは、調べた結果を自分なりに。

まず、Looker Studio のラインマップとは。

一般公開データセット US Roads

このような道路状況など、Google マップ 上に線を描けるツールになってます!

まず、これを使う時の条件として、2つ!

BigQuery

BigQuery データソースに接続する場合にのみ使用できます。

Google マップのリファレンス より

BigQuery とは…

BigQuery は、機械学習、地理空間分析、ビジネス インテリジェンスなどの組み込み機能を使用してデータの管理と分析を支援する、フルマネージドのエンタープライズ データ ウェアハウスです。

BigQuery  ドキュメント ガイド より

難しい!って思った方は、

Google スプレッドシート よりもたくさんのデータを扱えて、便利なやつ!!

って覚えてくれればいいかなと思います🤣笑

これをデータソースにしないと扱えないんです。

地理情報の扱い方

Looker Studio でグラフを作るとき、長さとか座標とか、グラフによっていろんなデータがありますよね。

今回は、ジオデータ(ポリゴン)というものが使われています。

緯度経度で場所を指定する方法になります!
小学校の社会で習いますよね!

東経135…..なんていうやつ!

今回は、BigQuery の始め方 的な感じでも使えると思います。

それでは始めて行きます。

前半で、一般公開されているデータセットを使って、Looker Studio でラインマップを表示

後半で、自分でラインマップ用のデータを作って表示させます。

[前半] 一般公開されているデータセットの利用

こちらは、前述した

と、ほぼ同じなので、飛ばしてもらって大丈夫です。
良い方は[後半]へ飛んでください。

BigQuery の準備

まずは、一般公開されているデータセット(オープンデータっていうやつ)にアクセスしていきます!

初めての方だと次の表な表示になるのかな?🙄

ここで、必要項目にチェックを入れて、「同意して続行」をクリックすると、「 US Roads 」というデータを見れます。

「データセットを表示」をクリックすると、ホーム画面にいきます!
ここが、管理画面になります!

「プロジェクトの選択」から

「新しいプロジェクト」をクリックします!

名前が適当に決められるので、適宜入力して「作成」をクリックしてください!

ようこそ!って言われます👍

左側にある「エクスプローラ」の下に「bigquery-public-data」というものがあり、その中にずらっと一覧が出てくるかなと思います。
もしなければ、 bigquery-public-datageo_us_roads で検索をかけてみてください!

geo_us_roads のプルダウンを開くと、またデータがたくさん出てきます!
そこで、3点リーダー(アクションを表示)をクリックして、

「クエリ」をクリックしてください!

そうすると、下記のような文が出てくるのですが、この時、

SELECT と FROM の間には何も入っていない状態になっていますので、間に、* (アスタリスク)を入れてください!
半角です!

このように、SELECT と FROM の間に * を入れてください。

そしたら実行をクリックします!
このデータの中身を見ることができます!

今回は、

road_geom
road_id
full_name
route_type
matfcc_feature_class_code

のデータが入っていることがわかりますね!

この road_geom というデータが、Google マップ に線を引くための情報になるんです。

よく見ると、1つのセルに、

LINESTRING( 数値 数値 , 数値 数値 , ,,,)

のようになっていることがわかりますね!
これが、経度 緯度になっています。

このように書かれると、ラインを引けるのですね!🤔

Looker Studio の準備

こちらからアクセスしましょう!

空のレポートから作成しましょう!

初めての方だと、下記のような表示が出るかなと思います。

日本に設定をして、続行します。

アカウント設定も適宜行っていただいて、続行してください。

Looker Studio と BigQuery の連携

BigQuery を選択すると、下記のような表示なるので、承認してください。

連携するデータは、
「一般校秋データセット」「geo_us_roads」「all_roads_02」を選んで、右下の「追加」をクリックします。

「all_roads_02」でなくてもいいです!

いいの?って聞かれるので、「レポートに追加」をクリックしましょ!

最初は、表が自動的に入りますが、これは入りません!
削除して大丈夫です。

では、ついにラインマップを入れてみましょう!

「グラフを追加」から「ラインマップ」をクリックします。

なんか、最初、必ずこんな感じにエラーが起きるんですよね。

この「ディメンションが無効です」というところを × で消すと治ります。

少し待っていると、こんな感じのマップが表示されました!

拡大していくと、ラインが引けていることがわかりますね!

[後半]ラインマップ用のデータとラインマップの作成

ここから、GAS も使って、ラインマップで使えるデータを作成していきたいと思います!

GAS を使うと言いましたが、なぜそうするかというと。

このラインマップを作るためには、データの形式を

LINESTRING( 経度 緯度 , 経度 緯度 , ……)

のように、点を繋いでいく形で線を引いているからです。

オープンデータから持ってきてもいいですが、自作でこれを作るのはなかなか苦しいですよね。

一つ一つ、経度と緯度を確認して、コピペして…なんてできません!!!笑

ということで、下記の手順でデータを作っていきたいと思います。

  1. GAS で Google マップ を表示

  2. マップ上の地点をクリック

  3. クリックされた地点の経度と緯度を Google スプレッドシート に記録

  4. 記録された経度と緯度を LINESTRING( 経度 緯度 ) の形式に変換する

  5. 変換し終わったデータは消す

GAS で Google マップ を表示

こちらから Google スプレッドシート をコピーしてください!

この経度と緯度の列に値が保存されていきます!

geo_data のシートを見ると

このようなデータが入っています。

サンプルとして2件入れてあります。

プログラムの中身

それでは、「拡張機能」「AppsScript」をクリックして開いてみてください。

2件のプログラムが入っています。

コード.gs の中身

function doGet() {
  var template = HtmlService.createTemplateFromFile('地図');
  template.data = getData();
  return template.evaluate();
}

function getData() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  return data;
}

function saveData(lat, lng) {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow([lng, lat]);
}

function dataCreate() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var ss = sheet.getSheetByName('data');
  var sht = sheet.getSheetByName('geo_data');
  var lastRow = ss.getLastRow();
  var data = ss.getRange(2, 1, lastRow - 1, 2).getValues();
  var linestring = '';
  for (i = 1; i < data.length; i++) {
    linestring += data[i][0] + ' ' + data[i][1] + ',';
  }
  linestring = linestring.substring(0, linestring.length - 1);
  sht.appendRow(['LINESTRING(' + linestring + ')']);
  ss.getRange(2, 1, lastRow, 2).clearContent();
}

地図.html の中身

<!DOCTYPE html>
<html>

<head>
  <script src="https://maps.googleapis.com/maps/api/js?key=API_KEY"></script>
  <script>
    function initMap() {
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 15,
          center: {lat: 34.971698 ,lng:138.3890637}
        });
        map.addListener('click', function(e) {
          google.script.run.saveData(e.latLng.lat(), e.latLng.lng());
        });
      }
  </script>
</head>

<body onload="initMap()">
  <div id="map" style="height: 500px; width: 100%;"></div>
</body>

</html>

いくつか、変更できるとこがあります✏️

まず、5行目の

  <script src="https://maps.googleapis.com/maps/api/js?key=API_KEY"></script>

にある、API_KEY というところを、自分のAPIキーに変更します!

ここが今回一番難しいかなと思います…。

というか、めーーーっちゃ長い記事になってる🤣笑

Google Maps Platform から行います!!!!!
頑張って!!!

始めてだと、下記のような画像になりますので、表示通りに進めてみてください!

API は使った分だけ課金されるシステムになっているので、請求先を入力する必要

API の利用は課金制になっているので、請求先を指定する必要があります。

1か月毎200ドルの無料枠があり、その範囲内であれば無料でAPIが使用できます。
これがどのくらいかというと、API の利用が1日1000回 使っても2ドルくらいなので、課金されるくらいはいかないかなと思います。

一方で、自分のAPI キー が流出すると大変なことになるので、共有することは控えてください。

参考のヘルプです。こちらもご確認ください!

「API とサービス」から

+API とサービスの有効化

Maps JavaScript API を選択して、

「有効にする」をクリックします。

有効にすると、「認証情報」から「鍵を表示します」で確認することができます。

このキーをコピーしてください!

このキーはめちゃくちゃ大事です!

そして、5行目の API_KEY のところに入れてください!

  <script src="https://maps.googleapis.com/maps/api/js?key=API_KEY"></script>

変更したら💾(保存)しましょう。

一度、コード.gs から実行をしてください。
権限の承認がありますので、許可をしてください!

デプロイ

デプロイから「新しいデプロイ」をクリック

「設定からウェブアプリ」をクリックします。

「アクセスできるユーザー」は自分のみにしておきます。

URL が発行されるので、クリックすると地図が出ます!

現在は、静岡県を中心にしてあります。

ちょっと寄り道

このスタート地点を変更するには、

          zoom: 15,
          center: {lat: 34.971698 ,lng:138.3890637}

上記の 15 という数値を変えると、ズームインとズームアウトができます!

lat が緯度、lng が経度 になっているので、ここを変えると、スタート地点が変更できます!

スタート地点にしたい緯度経度はどこから??

ですが。

Google マップ でその地点をクリックすると、URL に表示されていますので、そこからコピペしちゃいましょう!😄

本題に戻ります!!!

デプロイされた地図をクリックしていくことで、スプシに記録されていきます👍

記録ができたら、

実行する関数を「dataCreate」にして実行してください!

記録されたデータが削除され、

先使用権に新しく生成されます!

csv のダウンロード

次にダウンロード!

BigQuery へアップロード

こちらから BigQuery へ入ります。

エクスプローラーの3点リーダーをクリックして、「+データを追加」

「ローカルファイル」を選択します。

「ファイルを選択」「参照」からファイルを選択します!

データセットは、既存のものか、「新しいデータセットの作成」で良いです!

ID を任意に設定してください!

テーブル名も任意に設定します!

「スキーマ」にあるフィールドを追加をクリックして、

フィールド名を geo_data
タイプを GEOGRAPHY

としてください。

「スキップするヘッダー行」を1にします。

「テーブルを作成」をクリックしてください!

このような通知が出れば無事終了です!!

Looker Studio との連携

それでは、連携していきましょう!

空のレポートから!

BigQuery を選択して、

先ほど作ったテーブルを選んでいきます!
追加をしましょう!

「グラフを追加」から、「ラインマップ」を選択しましょう!

先ほどと同じように、ディメンションが無効ですを❌で消すと…..。

記録した通りに、ラインが引けていますね!

どんな使い方ができるかな!?と思いましたが、
道路に限らず、マップ上にいろんな線がひけるので、工夫次第でいろんな用途があるかな?🤔

  • 通学路

  • 防災関係

  • 区域

  • 経路

  • 農業関係

みたいな感じで!

今回はかなり長かったし、初めて BigQuery を触ると、画面が違ったりして、難しいかもしれません….。

不具合あれば質問いただければと思います!

Twitter

Facebook

ポートフォリオ

YouTube チャンネル

いちばんやさしい Google Apps Script


何かと0から1を作るのは大変だと思います。学校はどこも似たような問題課題に対応していると思います。それなのに、先生って自分だけで頑張ろうとするんですよね。ボクの資料やnoteが1になって、学校ごとの現状に合わせてカスタムしていただければと思います‼️