Qlik Trainingブログ

  • Qlik Sense
  • Qlik Cloud
  • 開発者
  • 可視化・分析
2023.01.19

GeoOperationsでルート検索をやってみよう! (Closest 関数編)

本記事では、Qlik Sense SaaSのGeoOperationsをご紹介します。
今回は医療機関の位置情報、患者の位置情報のデータを例に、GeoOperationsを使用する方法をご説明します。

目次

※本記事は「2022年12月時点のSaaS」で作成しています。

GeoOperationsとは

ルートや移動エリアの計算など、地理的な計算を行う機能です。
SaaS版のQlik Senseをご利用中の方であれば標準で利用可能です。

ロードスクリプトで地理データの検索や地理空間分析を行える関数が用意されており、下記を行うことができます。
・名前からポイントやエリアを検索
・ルート計算による道順やエリアを算出 (※チャート数式でも利用可能)
・ポイントやエリアにまつわる幾何計算
・ポイントやエリアに基づく集約処理

今回利用するデータ

・Hospital.csv医療機関コードとその緯度経度情報
・Customer.csv患者コードとその緯度経度情報

<データの由来>
Hospital.csv
医療経済研究機構「全国保険医療機関(病院・診療所)一覧(平成29年度版)」
<https://www.ihep.jp/publications/other/?y=2018>(最終アクセス:2022年12月28日)

Customer.csv
ダミーデータを利用しています。

<注意事項>
※ルートの出発地と目的地の緯度経度データが必要となります。
※制限事項
 制限を超える場合はデータを分割して処理を行うなどの対応が必要となります。
 最大行数: 50,000
 メモリ内の最大データセット サイズ: 150 MB
 ルーティングの最大行数: 400
 名前検索の最大行数: 20,000

今回は2つのデータを使って患者住所宅~最寄りの病院までのルートと所要時間を検索します。

GeoOperationsの使用方法

今回は例として、Closest関数を使用し患者宅から最寄りの病院までのルートと所要時間を分析する手順をご紹介します。

「GeoOperationsの使用方法」
 [データロードエディタ] でGeoOperationsの関数を書くことでご利用できます。
 GeoOperationsの関数は下記のように呼び出します。

Load * Extension GeoOperations.ScriptEval('
<関数名>(条件1=値,条件2=値,...)

次に計算させるデータソースの指定を行います。

DATASOURCE <テーブル1> INTABLE
keyField="<テーブル1のID>", pointField="<テーブル1の緯度,経度>"
DATASOURCE <テーブル2> CSV
url="lib://DataFiles/<テーブル2>.csv",
fieldSeparator="<テーブル2の区切り文字の名前>",
keyField="<テーブル2のID>"" ,
geometryField="<テーブル2の緯度,経度>" ,
geometryType="<Point>"
', <テーブル1>);

「ルート探索を行うには(Closest関数)」
 ルート探索を行う際はClosest関数を利用します。
 2拠点間で指定したKM以内のルート情報や距離、時間などを確認することができます。
 ※他の関数についてはこちらのメーカーヘルプをご覧ください。

 例)10KM圏内で車移動の場合の最寄りの病院と所要時間(分)を探索

Load * Extension GeoOperations.ScriptEval('
Closest(distance="100000",distanceType="Car",costUnit="minutes")
DATASOURCE Customer INTABLE keyField="CID", pointField="cus_point"
DATASOURCE Hospital CSV
url="lib://DataFiles/Hospital.csv",
fieldSeparator="SEMICOLON",
keyField="FID" ,
geometryField="hos_point" ,
geometryType="POINT"
', customer);

3)データのリロードを行います。
 [データロードエディタ]で[データのリロード]を実行します。

4)データモデルを確認します。
 [データモデルビューア]を開きます。

下記の図のように探索結果のテーブル(ClosestResultTable)が生成されていれ
ば正常にロードできています。

ClosestResultTable
CID・・・患者ID
FID・・・病院ID
customer_Hostpital_RelationId・・・主キー (1,2,3,4…)
Distance・・・時間 (32,60,11,・・・)
※Distanceの結果は CostUnit の指定で変わります。
LowResLine・・・2 拠点間のルート情報 ([緯度1,経度1],[緯度2,経度2],...)

GeoOperationsを使用する前の事前準備

1) データのアップロード
 病院と患者それぞれのIDもしくは名前、緯度経度データをアップロードします。

2) アプリの作成
 任意の名前でアプリを作成し、先ほどのデータを取り込みます。
 [データのロード]ボタンをクリックします。

3)データロードエディタ
 [データマネージャー]の右側のアイコンをクリックし、[データロードエディタ]を選択します。

 [+]ボタンで新しい[Sections]を追加します。
 [セクション]が追加されました。
 以上で、事前準備は完了です。

患者宅から最寄りの病院のルート検索をする方法

1) ルートが確認できるような画面を作成しましょう。
  [シートを編集]画面を開きます。
  [チャート] > [マップ] >シートにドロップします。

2) 病院をマップ上に表示します。
  [レイヤーの追加] > [ポイントレイヤー] >ポイント [追加]
  > 「hos_point」 を選択します。

3) 同様の手順で顧客住所もマップ上に表示します。
  [レイヤーの追加] > [ポイントレイヤー] >ポイント [追加]
  > 「cus_point」 を選択します。

4) 患者宅→病院へのルートをマップ上に表示します。
  [レイヤーの追加] > [ラインレイヤー] >線 [追加]
  > 「LowResLine」 を選択します。

5) デザインを整えます。
  色やアイコンの形状、幅などは[プロパティパネル]からお好みで変更することができます。

6) 画面で結果をみてみましょう。
  ■・・・病院
  ・・・患者宅
  →・・・ルート
  任意の病院を選択すると、詳細を確認することができます。
  FIDが50526の病院を最寄りとしている患者人数は4名いて、そのルートも確認することができました。

 他にも所要時間が長いほど色を濃く表示したり
 ※分かりやすいように病院名、患者名などのデータも含めています。
 ・・・病院
 ヒートマップ・・・患者宅、所要時間が長くなるほど色を濃く設定(黄~赤)

 患者宅→最寄りの病院まで何分かかるかなども確認することができます。
 例)石黒さんは最寄りの病院まで車で39分かかる

 病院ごとにどのくらい患者がいるかというのも表で確認することができます。
 例)はんじこどもクリニックが最寄り病院の患者は 14 人

さいごに

GeoOperationsのClosest関数の使い方についてご紹介しました。
今回は車で10KM圏内を条件としましたが徒歩や自転車、距離ではなく時間でも検索することができます。
最寄りの病院も1人1件ではなく最寄りの病院 3 件など任意の件数で検索することも可能です。

また、今回は医療機関のデータを題材にしましたが、他にも
・各店舗で徒歩30分圏内のエリアが何%重複しているか

・顧客リストから閾値を10KMとしてクラスタリング、営業の担当エリアの割り振り

などにもお役立ていただけます。
Closest以外にも地理空間分析に使える関数が多数用意されています。
ご興味がございましたらご確認ください。

参考)メーカーヘルプ
https://help.qlik.com/ja-JP/cloud-services/Subsystems/Sense_GeoOperations/Content/Sense_GeoOperations/connector-geoanalytics_reference.htm

関連している記事

  • Qlik Cloud
  • Qlik Sense
  • 利用者
  • 可視化・分析
2024.05.02

複数のアプリから目的のチャート同士を比較しよう!

複数のアプリから特定のチャート同士を比較して見たいことはありませんか?本記事では、Qlik Sense SaaSの[ハブで監視]の活用方法を紹介します。

  • Qlik Cloud
  • Qlik Sense
  • 運用者
2024.04.24

Qlik Cloud 日本リージョンへの移行方法(qlik-cli利用時の注意点)

先日、本ブログにて、日本リージョンへテナントを移行する方法の全体像をご紹介しました。今回は、コマンドラインのqlik-cliを用いたテナント移行時の注意点と、コマンドやスクリプトの記述例をご紹介します。

  • Qlik Sense
  • Qlik Cloud
  • 開発者
  • 運用者
2024.04.17

Qlik Application Automation活用術:Microsoft Teamsにメッセージを配信する

Qlik Sense SaaSを使用していて、メジャーの結果と事前に設定した閾値を比較して、閾値を超えたら通知を飛ばせたら良いな、と考えたことはありませんか?本記事では、Qlik Sense SaaSの「Qlik Application Automation」でMicrosoft Teamsにメッセージを配信する方法を紹介します。

ページの先頭へ戻る