4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ServiceNow】Mapレポートで市区町村レベルまで可視化する(データ作成編)

Last updated at Posted at 2025-09-29

はじめに

ServiceNow のレポート機能には様々な種類がありますが、その一つにマップ(Map)が存在します。Map レポートではデータを地理的なヒートマップとして表示したり、緯度経度をもとにしてデータポイントを表示したりすることができます。

この Map レポート、OOTB だとアメリカなどの一部の国では国→州→郡のレベルまで可視化できるのですが、日本の場合は国→都道府県レベルまでしか可視化できません。

Mapレポートの例

市区町村レベルでのより詳細な分析を行いたい場合には、独自に地理情報データを用意して ServiceNow に組み込む必要があります。

今回は、国土交通省が公開している国土数値情報の行政区域データを利用して、ServiceNow の Map レポートで市区町村レベルのヒートマップを実現するためのデータを作成してみたいと思います。

元データの入手

以下のページから「ダウンロードしたい都道府県」にチェックを入れ、「年度で絞り込み」で年度を指定し、ダウンロードボタンをクリックします。なお、データの利用に当たって使用許諾条件には目を通しておくようにしましょう。

以降は、北海道の国土数値情報 行政区域データ 2025年(令和7年)を参考に説明していきます。

ダウンロードされたzipファイルを展開すると様々なファイルが含まれていますが、その中にある GeoJSON ファイル N03-20250101_01.geojson を加工していきます。

GeoJSON ファイルの加工

Python の GeoPandas ライブラリを使って、先ほど展開した GeoJSON ファイルを加工していきます。

  • 利用した環境:Jupyter Notebook

GeoJSON ファイルの読み込みと確認

GeoPandas ライブラリがない場合は以下を実行してインストールしてください。

!pip install geopandas

まずはファイルを読み込みます。GeoPandas はその名のとおり、地理情報データを Pandas のような感覚で操作することができるライブラリです。
plot() メソッドを使うと地図を描画することができます。

import geopandas as gpd

in_path = "N03-20250101_01.geojson"

# GeoJSON を読み込み
gdf = gpd.read_file(in_path)

# 地図を描写
gdf.plot()

属性の追加・削除

ServiceNow のマップで利用するために必要な name 属性および hc-key 属性を追加します。name はレポート上での市区町村名の表示に、hc-key は各市区町村の地物と ServiceNow のロケーション [cmn_location] テーブルとのマッピングに利用されます。

ダウンロードした GeoJSON には以下のような属性が存在します。

スクリーンショット 2025-09-25 5.12.50.png

各属性の説明は行政区域データのページを参照していただくとして、今回は N03_003(郡名)、N03_004(市区町村名)、 N03_005(政令指定都市の行政区名) を連結した文字列を name 、N03_007(全国地方公共団体コード)に jp- という prefix をつけた文字列を hc-key として属性を追加します。

# N03_003 〜 N03_005 までを連結した文字列を name 列として追加
gdf["name"] = gdf["N03_003"].fillna("") + gdf["N03_004"].fillna("") + gdf["N03_005"].fillna("")

# N03_007 列に "jp-" を付与した値を hc-key 列として追加
gdf["hc-key"] = "jp-" + gdf["N03_007"].astype(str)

これ以降 N03_001 〜 N03_007 の属性は不要ですので、除去してしまいます。

gdf = gdf[["name", "hc-key", "geometry"]]
gdf

属性削除後のDataFrame

ここまで完了したら、GeoJSON ファイルを一旦保存します。

# 属性変更済みのGeoJSONデータを保存
out_path = "Hokkaido.geojson"
gdf.to_file(out_path, driver="GeoJSON", encoding="utf-8")

あわせて、namehc-key の組み合わせを Excel 形式で保存しておきましょう。
後ほど ServiceNow にインポートして使います。

# name, hc-keyの組み合わせを重複を除いて抽出
unique_pairs = gdf[["name", "hc-key"]].drop_duplicates()

# Excel形式で保存
unique_pairs.to_excel("Hokkaido.xlsx", index=False)

座標系の変換

ここからは、地理情報データを編集・変換・簡略化するためのWebサービス Mapshaper を使って加工していきます。Mapshaper のページにアクセスし、先ほど保存した "Hokkaido.geojson" ファイルをドラッグ&ドロップして読み込みます。

まず、座標系の変換を行います。
国土数値情報の行政区域データは 「JGD2011/(B,L)」(EPSGコード:6668)という座標系で提供されていますが、このデータを ServiceNow のマップでそのまま描画すると、北海道が横に引き伸ばされたような表現になってしまうため、Googleマップなどで利用されている Web メルカトル(EPSG:3857)に座標系を変換します。

画面右上部の Console をクリックするとコンソール画面が表示されるので、そちらに以下を入力します。

-proj epsg:3857

変換前後の画像がこちらです。違和感が軽減されているのがわかると思います。

座標系の変換前後比較

地物の統合

次に、namehc-key が同一の地物を統合します。再び Console を開いた状態で、今度は以下を入力します。

dissolve name,hc-key

統合されたか確認するために、画面右側にあるカーソルアイコンをクリックし、"inspect features" を選択した状態で地図上の市区町村へマウスをホバーしてみましょう。
地理的に分断された市区町村が、一つのまとまりとして統合されたのが分かると思います。

地物の統合前後比較

データの単純化

この状態で保存すると GeoJSON のファイルサイズが 50MB 以上あり、ServiceNow のマップとしてロードするには重すぎてとても実用に耐えられません。そこで、頂点数を減らしてポリゴンの単純化を行います。

画面右上の Simplify をクリックするとポップアップが表示されるので、デフォルトの選択状態(Method : Visvalingam / weighted area)のまま Apply ボタンをクリックします。
その後、画面上部に表示されるスライダーを 100% → 1.0% に変更します。

simplified.png

この状態で画面右上の Export をクリックし、File format が GeoJSON になっていることを確認して Export ボタンをクリックし、ファイルを保存します。

スクリーンショット 2025-09-26 4.34.57.png

上から順に、Mapshaper に読み込む前のファイル → Mapshaper でデータを単純化する前のファイル → 単純化した後のファイルです。
50MB 強だったファイルサイズが 748KB まで削減されました!

座標系情報(Pro4j 文字列)の追加

ServiceNow の Map 描画には Highcharts というJSライブラリが使用されています。
独自に作成した地図を Highcharts で緯度経度対応させるには、その地図定義に hc-transform 属性を持たせる必要があります。

テキストエディタなどで GeoJSON ファイルを開き、作成した地理情報データの座標系の定義を追加します。

"hc-transform":{"default":{"crs":"+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crs"}},

スクリーンショット 2025-09-26 5.15.37.png

"+proj=merc..." の部分は、今回変換した座標系(Webメルカトル)の Proj4 文字列となっています。

補足

今回は視覚的にわかりやすくなるように、一部の手順で Web サービスの Mapshaper を使用して説明しました。
実際には47都道府県分のファイルを扱うことになるので、以下の URL などを参考に mapshaper コマンドをインストールして、スクリプトで一括変換するのが良いと思います。

終わりに

ServiceNow設定編 に続きます!!!

参考

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?