お問い合わせ
3 分で読むことができます。

【Qlik Sense】世界地図以外のカスタムマップを作成する

2025年1月30日

はじめに


お疲れ様です。Deckです。

この記事ではマップオブジェクトの背景をカスタマイズし、好きなものに変える方法を解説します。

手順


Qlik Sense新規アプリを作成します。

ロードスクリプトの編集から、以下のスクリプトを入力してリロードを行います。

SUB CREATEMAPGRID(SUB_VAR_NAME,SUB_VAR_X, SUB_VAR_Y)
[temp_]:
Load
Iterno()-1 As [$(SUB_VAR_NAME).X]
AutoGenerate 1 While IterNo() -1 <= $(SUB_VAR_X);

Join([temp_])
Load
Iterno()-1 AS [$(SUB_VAR_NAME).Y]
AutoGenerate 1 While IterNo() -1 <= $(SUB_VAR_Y);

[$(SUB_VAR_NAME)_grid]:
Load *,
'('&[$(SUB_VAR_NAME).X]&'|'&[$(SUB_VAR_NAME).Y]&')' as [$(SUB_VAR_NAME).Point]
resident [temp_];

drop tables [temp_];
END SUB;
Call CREATEMAPGRID('Floorplan',50,35);

QMCから「Content libraries」に移動します。

コンテンツライブラリーの新規作成を行い、名前を入力します。

デフォルトのまま「Apply」をクリックします。

「Upload」ボタンをクリックします。

アップロードするファイルを指定します。

シートの編集に移動し、新しいマップオブジェクトを作成します。

マップ設定で、ベースマップをなしに設定します。

新規背景レイヤーを作成し、ラベルは「部屋」とします。

URLは「/Content/CustomMap_20250109/unnamed.jpg」とします。

画像の位置として、最上部を0、左を0、最下部を35、右を50とします。

新規ポイントレイヤーを作成し、ポイントの項目に「Floorplan.Point」を選択します。

場所の設定から「[緯度]項目と[経度]項目」をオンにします。

緯度には「Floorplan.Y」、経度には「Floorplan.X」を入力します。

オプションから「自動ズームから除外する」をオンにします。

ロードスクリプトの編集から、次のスクリプトを追加します。

SweetSpots:
Load * Inline
[
Spot, X,Y, maxPerson
table, 11,27, 8
kitchen, 31,25, 4
living room,11,10, 6
stairs, 21,17, 1
];

マップから、新規ポイントレイヤーを追加します。

ポイントの項目に「Spot」を設定します。

場所から「[緯度]項目と[経度]項目」をオンにします。

緯度は[Y]とし、経度は[X]とします。

オプションから「自動ズームから除外する」をオンにします。

ここまで設定すると、マップは以下のようになっているはずです。

次に、マップに面(エリア)を追加します。

ロードスクリプトの編集から、次のスクリプトを入力します。

RoomArea:
load *,
//you have to switch X and Y using GeoMakePoint, don't ask why. i may answer in the comments
GeoMakePoint(Y,X) as geopoint,
;
Load * Inline
[
shape,AreaName, X, Y, pathorder
1, technic room, 35,22, 1
1, technic room, 44,22, 2
1, technic room, 44,31, 3
1, technic room, 35,31, 4
2, wc, 35,9, 1
2, wc, 33,5, 2
2, wc, 35,5, 3
2, wc, 44,5, 4
2, wc, 44,9, 5
3, kitchen, 24,31, 1
3, kitchen, 24,28, 2
3, kitchen, 32,28, 3
3, kitchen, 32,22, 4
3, kitchen, 35,22, 5
3, kitchen, 35,31, 6
4, dining room, 7,23, 1
4, dining room, 18,31, 2
4, dining room, 19,19, 3
5, kitchen, 25,26, 7
5, kitchen, 29,26, 8
5, kitchen, 29,21, 9
5, kitchen, 25,21, 10
];

//Helper to idnetifiy if feature consists of multiple shapes
idCount_MAP:
mapping load
AreaName,
count(DISTINCT shape)
resident RoomArea
group by AreaName
;

//First only Features with single shapes
RoomAreaMap:
Load
AreaName,
//construct the path that makes the area; specify the order of the points along the path
// you need a pair of '[' and ']' for each level of possible sub-areas. in most cases 3 pairs holds.
'[[['&concat(geopoint,',',pathorder)&']]]' as area
Resident RoomArea
where Applymap('idCount_MAP',AreaName,0) = 1
group by AreaName
;
//IMPORTANT works only when this tag is applied to the area
Tag field area with $geomultipolygon;

レイヤーの追加から「エリアレイヤー」を選択します。

エリアレイヤーの軸に「area」を設定します。

オプションのレイヤー表示から「自動ズームから除外する」をオンにします。

エリアレイヤーが追加され、各部屋のエリアが表示されるようになりました!

おわりに


以上でカスタムマップの導入方法の解説を終わります。

Qlik Senseで標準以外の地図でマップチャートを使いたい場合、この方法をぜひ使ってみてください。

Topics: Qlik Sense
Deck

Written by Deck

Qlik_No1_2022
QSナレッジ事例バナー
DXバナー
Qlikseminar
qs_trial
Qllikseminar
Vizlibナレッジ
Vizlibセミナー
qv_knowledge
book_kawaii
Snowflake_バナー

新着記事

タグ別の記事

全て表示