Qlikのレイヤ表示で銭湯マップをつくってみる(その1)

こんにちは!Yokoです。
このところ疲れてるなあ…と思っていたところ、先週の金曜日に友人から「豊島園の庭の湯に行こう」との嬉しいお誘い🤗
19:00に豊島園駅に集合し、いざ庭の湯!と入口の前までたどり着くと「11月10日から14日まで館内工事中のため休館」という表示が… えっ?今日までですか?😢
庭の湯は諦めるしかないけど、温泉には入りたい…
「ほか行こうかあ」
「後楽園?」
「遠くない?」
結局、2駅電車に乗り、桜台の「久松湯」に行くことにー
久松湯も温泉なんですよね。
温泉に浸かって、風呂上がりに練馬でビールを飲んで帰りました。まあ、これはこれで良かったです。
そこで、電車で行ける銭湯ってどこがあるのかな〜とネットで検索しても、どこもイマイチなので、いっそのことQlikで路線や駅から検索できる「東京23区 電車で行ける銭湯マップ」を作ってみよう…というのが今回の企画です。

目次

「東京23区 電車で行ける銭湯マップ」の作成手順

思い立ったのはいいものの、どうやって作ろうか…
Qlikのマップはレイヤ表示ができるので、東京23区の駅のマップと銭湯のマップを重ねればいいんだよね。
こんな手順で作っていくことにします。

1
素材集め

路線・駅のデータ、銭湯のデータを集める。マップ表示するにはデータに緯度経度があればベターだけど、そんなのあるのかな?

2
Qlikに取り込む

Qlikに取り込んでレイヤ表示する。まあ、これは楽勝かな

3
検索機能の実装

駅の緯度経度と銭湯の緯度経度を同期させて、駅に近い銭湯を表示できるようにする。これは経験ないけどやれそう

路線・駅のデータ、銭湯のデータを準備

果たして、こんなデータあるんだろうか?
路線・駅の緯度経度データのありかは知ってます。でも、銭湯の緯度経度のデータなんてある?
まずは、路線・駅のデータから行きますね。

まずは、路線・駅のデータは駅データ.JPという素晴らしいサイトがあります。このサイトで提供されている駅のデータは住所、緯度・経度が入っており、その駅がどの事業者のどの路線なのかも紐づくようになっています。無料で使ってもいいということなので、駅データ.JPさんのデータを活用させていただくことにします。


会員登録が必要ですので、会員登録した上で、以下のファイルをダウンロードします。

  • 駅(stationYYYYMMDDfree.csv)
  • 路線(lineYYYYMMDDfree.csv)
  • 事業者(companyYYYYMMDD.csv)

「YYYYMMDD」は日付ですが、僕は現段階での最新のファイルを取得しました。

銭湯のデータですが、まずはネットで検索してみました。行政機関が提供しているデータはありそうですが、提供している区はごくわずかで、サイト上の表示もまちまちなので、スクレイピングもできそうにありません。道のり遠いなあ…
とりあえず、自前で収集してみました。
住所の表記も異なっていますが、これを合わせるのは大変なので、そのままでいいかな…
住所がわかっても緯度・経度はありませんので、ジオコーディングする必要があります。
※住所を基に、地図上の位置を示す緯度・経度などの地理座標値(ジオコード)に変換する処理のことです。

静的ジオコーディング

銭湯データの住所を基に、ジオコーディングを行ってみます。
今回は、銭湯データが随時追加されることを考慮するわけではないので、ノーコードで一括取得することにします。
取得方法は簡単、東京大学さんが提供している「CSVアドレスマッチングサービス」を使ってみます。

CSVアドレスマッチングサービス

このサイトに銭湯データをアップしますと、緯度・経度つきのgeocode.cgiというファイルがダウンロードされます。
このファイルをエディタなどで開いて、CSVに変換すればOKです。

これで、緯度・経度つきの銭湯データができあがりました。
ネットで検索した限り、このようなデータはなさそうなので、希少かもしれませんね。ここからダウンロードできるようにしたので、必要な方はご活用下さい。
おそらく、公表されている銭湯のデータで緯度経度つきというのはないと思います😉
(もれがあったらすみません)

Qlikに住所ファイルをロードする

これで、緯度・経度付きの路線・駅データ、銭湯データができあがりました。
早速、Qlikのデータロードエディタでスクリプトを作成します。

//銭湯データ
1010:
LOAD
    No. as 銭湯ID,
    銭湯名,
    区,
    住所,
    緯度,
    経度
FROM [lib://Amazon_S3_linernotesbucket/Blog/station/東京23区銭湯データ.csv]
(txt, utf8, embedded labels, delimiter is ',', msq);

//駅データ
station:
LOAD
    station_cd as 駅コード,
//    station_g_cd,
    station_name as 駅名,
//     station_name_k,
//     station_name_r,
    line_cd as 路線コード,
    pref_cd as 駅_都道府県コード,
    post as 駅_郵便番号,
    address as 駅_住所,
    lon as 駅_経度,
    lat as 駅_緯度,
//    open_ymd,
//     close_ymd,
//     e_status,
     e_sort as 駅_ソート順
FROM [lib://<データパス>/station20251015free.csv]
(txt, utf8, embedded labels, delimiter is ',', msq)
WHERE pref_cd = 13;

//路線データ
Left keep(station)
line:
LOAD
    line_cd as 路線コード,
    company_cd as 事業者コード,
    line_name as 路線名
//     line_name_k,
//     line_name_h,
//     line_color_c,
//     line_color_t,
//     line_type,
//     lon,
//     lat,
//     zoom,
//     e_status,
//     e_sort
FROM [lib://<データパス>/line20250604free.csv]
(txt, utf8, embedded labels, delimiter is ',', msq);

//事業者データをJoin
Left Join(line)
LOAD
    company_cd as 事業者コード,
//     rr_cd,
    company_name as 事業者名
//     company_name_k,
//     company_name_h,
//     company_name_r,
//     company_url,
//     company_type,
//     e_status,
//     e_sort
FROM [lib://<データパス>/company20251015.csv]
(txt, utf8, embedded labels, delimiter is ',', msq);

以下、スクリプトの補足です。

  • station
    • 30行目 e_sort as 駅_ソート順 →路線の中でのソート順(これ取れてるの素晴らしいよね)
    • 33行目 WHERE pref_cd = 13 →今回は都内に限定するので都道府県コード=13とする
  • line
    • 36行目 Left keep(station) →stationの路線コードに存在する路線のみに限定する

データモデルはこのようになりました。
1010テーブルとstationがつながっていませんが、何も一致する項目がないので、このままで良いかと思います。

まとめ

今回は銭湯のデータをあっちこっちから集めるのに時間がかかってしまい、データロードまでで終わってしまいました。
駅データ.JPや東京大学のCSVアドレスマッチングサービスは便利ですよね。
地図上で検索を掛けたいという時は気軽に使えそうです。

次回は、Qlikのマップチャート上で、駅と銭湯のマップを重ね合わせて表示する方法を解説していきます。
ではまた!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次