顧客住所データをQlik Senseの地図上にマッピングしたい
更新日:2023年9月26日
【この記事のインデックス】
■住所ごとに地図ポイントのデータがあれば、Qlik Sense上の表示は簡単!
Qlik Sense は[マップ]というチャートが標準で用意されているので、データさえあれば簡単に地図上にデータを表示することができました。それこそ、緯度・経度やKMLのポイントデータがあれば、ドラッグ&ドロップ程度の操作で実現できました。
<簡単な手順>
下図の表にあるように、[住所] , [緯度] , [経度] のデータをサンプルにしてマップを作ってみました。
・[マップ]チャートをシートに配置して、
・右側のプロパティで[レイヤー]→[レイヤーの追加]をします。

・[ポイントレイヤー]を選択して、
・[データ]→[追加]で項目を追加します。ここでは「住所」を追加します。
・[場所]→[緯度][経度]にそれぞれ「緯度」「経度」を設定します。

■緯度、経度データをどうやって準備するか??
住所ごとの緯度、経度データを入手するために、いろいろと試してみた結果、「位置参照情報 ダウンロードサービス」に辿り着きました。市区町村の番地レベルのデータを都道府県単位でダウンロードできるので、ひとまずはこのデータがあれば日本国内の住所をカバーできるのだと思います。
「住所」と合わせて「大字町丁目コード」も入っているので、住所の特定もやりやすそう。
▼国土交通省_位置参照情報 ダウンロードサービス
★参考)[都道府県単位]のボタンから全データを選択してダウンロードすれば、各都
道府県ごとの47個のZipファイルがダウンロードできます。CSV形式なので取
り扱いもしやすいです。
あとは、手持ちの顧客住所データと関連付けすれば顧客住所を地図上に表示できそうです!
ただ、手持ちの住所の表記ゆれや名寄せがうまくできればという最大の条件付きですが。。。
■手持ちの住所データを緯度経度に変換できるのか??
国土交通省のダウンロードデータは大量のデータになるので、手持ちデータとの突き合わせは大変なケースも多いかと思います。
別の方法で、手持ちの住所データを手っ取り早く地図データに変換できる方法も調べてみました。こちらもいろいろと試した結果、「Google Earth Pro」を使った方法に辿り着きました。
★↑こちらの記事を参考にさせて頂きました!
<大まかな操作の流れ>
・Google Earth Proをインストールして、住所データファイルをインポートします。
・ウィザードに沿っていけばスムーズにインポートできました。

・インポートが終わると左の[▼場所]にインポートファイルが表示されます
・チェックを入れると地図上にマッピングされます(カエルの卵みたいです)
・あとは、このマッピング情報を[名前を付けて場所を保存]すればOKです。

実際に試してみたところ、無償版(?)のGoogle Earth Proでは、1ファイル2500件ま
でしか変換できませんでした。数が多いと大変かもしれません。
以上のような操作で簡単に地図データをダウンロードできましたが、ダウンロードできるファイルの種類がKMLデータだったので困りました・・・。
■KMLによるQlik Senseの地図表示
地図データには一般的にKMLというファイルがあるようです。XML形式のデータで地図に関連するデータが格納されているというものです。ここではKMLについて深く調べるのはさておき、取得したKMLでQlik Senseの地図表示に挑戦しました。
結果、KMLファイルに含まれる「Point」項目をマップのレイヤーに追加すれば地図上に表示することができました。
ざっと見ると、KMLに含まれる「Point」は、[経度,緯度] という形式で格納されているようで、Qlik Senseはこのデータで地図上にマッピングしてくれるようです。
★KMLファイルのPoint項目
[経度,緯度]
例:[139.7070931,35.5779355]
▼Qlik Senseロード時に、KMLとしてロードするか?XMLとしてロードするか?
以下は、KMLとXMLによるQlik Senseでの地図表現の違いを試した内容です。興味のある方は参考にご覧ください。
ちなみに、できるだけ分かりやすいように、サンプルデータは下記のようにシンプルな住所CSVデータを作成しました。このCSVを上述の手順でGoogle Earth Proにインポートして、KMLファイルに保存しました。
住所
東京都大田区池上1
東京都大田区池上2
東京都大田区池上3
Google Earth Proにて保存されたKMLファイルをとりあえずQlik Senseロードしてみると、下図のようなロード前のプレビューを見ることができました。
上段は「KMLファイル」としてプレビューしている画面です。「住所サンプル.Point」に緯度経度のようなデータが確認できましたが、どうも元データの「住所」が見当たりません。
そこで、
下段のように「XMLファイル下段の図のように「XMLファイル」としてプレビューすると、複数のテーブルがプレビューできて、そのうちのひとつに元データの「住所」と緯度経度のような「Point/coordinates」を確認することができました。

★KMLとしてロードしたデータをマップレイヤーに追加した例
[住所サンプル.Point]をマップレイヤーに追加することで地図上に表示できました。

★XMLとしてロードしたデータをマップレイヤーに追加した例
[Point/coordinates]をマップレイヤーに追加しましたが地図上に表示できませんでした。

★XMLとしてロードしたデータを加工してマップレイヤーに追加した例
KMLの書式に合わせて加工した項目([Point/coordinates 加工])をマップレイヤーに追加すると地図上に表示できました。

※Point/cordinatesの加工サンプル数式
[Point/coordinates] に格納されている値 139.*****,35.******,0
を
[Point/coordinates 加工]のように [139.*****,35.******] に変換します。
★数式サンプル
='['& SubField([Point/coordinates],',0',1) &']'
Subfield関数 ⇒ ’,0’ より前の値を返しています。
'['& ⇒ &により文字列 '[' を連結しています。
&']' ⇒ &により文字列 ']' を連結しています。
■まとめ
Qlik Senseで地図上にポイント表示するための方法として、
①国土交通省から住所に対応した緯度経度データを入手する方法
②住所データをGoogle Earth ProでKML変換して、地図ポイントデータを入手する方法
が確認できました。
KMLを利用する際は、Qlik Senseロード時にKMLデータとしてロードすると、元の住所データが取れないので、KMLデータとしてロードして、ポイント項目を [経度,緯度] に加工するのがおすすめだと思います。
Comments