はじめに
前回の記事 では、ServiceNow の Map レポートで市区町村レベルのヒートマップを作成するため、国土交通省が公開している国土数値情報の行政区域データをダウンロードして、ServiceNow へ取り込めるように加工しました。
今回は加工済みのデータを取り込み、実際に ServiceNow 上で表示するための設定を行っていきます。
以下の手順は PDI インスタンス(バージョン:Xanadu)で動作確認しています。
Map レポート用の設定
Report Map の登録
作成済みの GeoJSON ファイルの内容を ServiceNow に登録します。
ナビゲーションメニューで [All] > [Platform Analytics Administration] > [Map Settings] > [Maps] を選択し、Name が "Japan" のレコードを検索して開きます。
このレコードに各都道府県の地理情報データを紐づけていくのですが、その前に JSON definition フィールド内で北海道(Hokkaido)を検索し、hc-key の値をメモしておきましょう。
関連リスト「Report Maps」で "New" ボタンをクリックすると新規フォーム画面が表示されるので、以下の情報を入力して "Submit" ボタンをクリックします。
- Key : jp-hk (Japan の JSON definition フィールド内で検索した北海道の
hc-key) - Name : Hokkaido
- Level : Level 3
- JSON definition : (データ作成編で作成したGeoJSONファイルのデータを貼り付け)
Map Source の設定
続けて Map Source の設定をしていきます。
ナビゲーションメニューで [All] > [Platform Analytics Administration] > [Map Settings] > [Map Sources] に移動し、Table が "incident" のレコードを検索します。
PDI インスタンスにはデフォルトで「Incident assigned to location (アサイン先ユーザーの場所)」、「Incident on CI asset location(CIの場所)」などが用意されており、Incident テーブルに存在する各種フィールドの情報を利用した Map レポートの構成が可能です。
これらを流用してももちろん構わないのですが、今回は理解を深めるためにインシデントの場所(location)フィールドを直接参照して Map レポートに表示するための Map Source を定義してみます。
リスト画面右上部の "New" ボタンをクリックし、以下を入力します。
- Name: Incident by location (名前は任意)
- Table: Incidelt [incident] (デフォルトのまま)
- Field: Location
入力したら Additional actions から "Save" を選んでクリックします。
入力内容が保存され、関連リンク「Generate map source levels」が表示されるので、そちらをクリックします。
クリックすると一度リスト画面に戻るので、先ほど保存した Map Source レコードを再び開きます。すると、関連リスト「Map Sources」にレコードが作成されています。
level 1 と書かれているレコードをクリックするとその下には level 2 が紐づけられており、更に level 2 をクリックすると level 3 が紐づけられています。
注目すべきは各レコードの Field の値で、level 1 から順に location.country → location.state → location.city となっています。
すなわち、Map レポートはデフォルトでは、Location [cmn_location] テーブル上にあるこれらのフィールドの値を利用して国・都道府県・市区町村レベルのデータを出し分けているのです。
PDI インスタンスには日本地図よりも細かい粒度の情報は登録されていないため、stateフィールドと都道府県のマッピング情報、cityフィールドと市区町村のマッピング情報を登録していきます。
都道府県の Mapping group 登録
先ほど作成した Map Source の level 2 のレコードを開きます。
Data transformation セクションに
- How to use data: Use mapping
- Use these mappings: Region and state mappings
が自動設定されていると思いますので、Use these mappings 右横の "Preview" アイコンからレコードを開きます。
Mapping group のフォーム画面が開き、関連リスト「Locations Mappings」に州/都道府県レベルのマッピング情報が登録されています。
日本の都道府県はまだ登録されていないため、 "New" ボタンをクリックして北海道の情報を登録しましょう。
- Key: 北海道(場所[cmn_location]テーブルの state フィールドに入力する値と一致させる)
- Value: jp-hk(Report Map の登録でメモした北海道の
hc-key) - Map: Japan
Key と Value の値を間違えやすいので注意!
一旦ここまでで動作確認です。適当な Location レコードを作成して、Incident の Location フィールドに紐づけます。
Location には Country, State / Province, City のほか、Latitude(緯度)とLongitude(経度)も設定してください。
[All] > [Platform Analytics Administration] > [Usage and governance] > [Reports] から新規に Map レポートを作成します。
Configure の "Map this data" では、先の手順で作成した Map Source を選択しましょう。
問題なく設定できていれば、北海道に色のついた日本地図が確認でき、さらに北海道をクリックすると緯度経度をもとにデータポイントされた地図が表示されるはずです。
市区町村の Mapping group 登録
市区町村も、都道府県と同様に Mapping group を登録することでヒートマップ化することが可能です。
作成した Map Source の level 3 のレコードを開きます。
Data transformation セクションの How to use data を "Use latitude and longitude" から "Use mapping" に変更し、Use these mappings の "Preview" アイコンからレコードを新規作成(New)します。
任意の名前をつけて "Submit" ボタンをクリックします。
- Name : City mappings
作成した市区町村用の Mapping group に、「データ作成編」で出力した Excel ファイルを使ってマッピング情報をインポートします。
フィルターナビゲーターに "sys_report_map_source_mappings.list" と入力して移動し、列オプションから Import を選択して Easy Import 画面に遷移します。
"Create Excel template" ボタンをクリックしてインポート用のテンプレートファイルをダウンロードしましょう。
ダウンロードしたテンプレートファイルの "Page 1" シートに以下の値を入力します。
- Key: 「データ作成編」で出力したExcelファイルの
name列 - Map: Hokkaido(Report map の登録で作成した北海道の Map 名)
- Map Source Mapping: City mapping(直前で作成した mapping の名前)
- Value: 「データ作成編」で出力したExcelファイルの
hc-key列
再び Easy Import 画面に移動し、作成した Excel ファイルをロードします。
ここまでできたら再度動作確認です。
先ほど使用したレポートで、北海道のヒートマップが表示されれば完成です!
(参考)データの可視化(Data Visualization)用の設定
Report の場合は Incident のフィールドごとに Map Source を都度作成してやらなければなりませんでしたが、Data Visualization を使う場合はもっとシンプルです。
フィルターナビゲーターに "viz_map_source.list" と入力し、Map source テーブルに移動します。
"Location mapping" で始まる4つのレコードがありますので、level 3 のレコードを開き、How to use data を "Use latitude and longitude" → "Use mapping" に、Use these mappings を先ほど作成した "City mappings" に変更して "Update" ボタンをクリックします。
あとは ナビゲーションメニューから [All] > [Platform Analytics] > [Library] > [Data Visualizations] で GeoMap データの可視化を設定していきます。
反映まで少々待つ必要があるようですが、こちらでも問題なくヒートマップが表示されます。
また、Incident のどのフィールドの位置情報を使うかは Group by で自由に(Map sourceを追加せずに)選択可能になっています。
課題
1点課題がありまして、今回利用した国土交通省の国土数値情報には離島の情報も含まれており、特に東京都の場合は島しょ部も含めて描画しようとするため、非常に見づらくなってしまいます。
QGISというソフトウェアを使って地物の表示位置を移動する1 ことも可能(下図参照)なのですが、その場合は緯度経度情報を維持できないため、データポイントの描写が不可となります。
OOTB で用意されている日本地図だと沖縄がインセット化されているので不可能ではないはずですが、私が Highcharts ライブラリの仕様に詳しくないため、実現方法については一旦棚上げ状態となっています。
参考
-
ServiceNow Community 『Adding state/region based maps for reporting』
-
ServiceNow 製品ドキュメント『ジオマップデータ可視化のマップソース』



















