SASによるGoogle Distance Matrix APIの利用

306 Views

April 03, 24

スライド概要

[第5回大阪sas勉強会]筒井杏奈

profile-image

SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

第5回大阪SAS勉強会 2019年5月24日 SASによるGoogle Distance Matrix APIの利用 大阪大学大学院医学系研究科保健学専攻 総合ヘルスプロモーション科学講座 数理保健学教室 筒井杏奈 1

2.

概要  Google Distance Matrix APIの紹介  SASによるWeb APIの利用  JSONマップの利用 解析ソフト: SAS 9.4 (University Edition) 2

3.

背景  小児がん拠点病院: 全国に15か所整備 ⇒ アクセスが大変ではないか? ⇒ 簡単に評価できないか? ⇒ Googleマップは使えないか?  Web APIがある ⇒ SASで試してみよう 3

4.

URIでデータ送信 Google Distance Matrix API Googleマップの経路探索機能のWeb API版  ユーザ登録と、APIキー取得が必要  目的地と出発地の指定により、移動の時間と距離を返す  オプション設定可   https://maps.googleapis.com/maps/api /distancematrix/json?&key=API_KEY&or igins=東京駅&destinations=国立成育医 療研究センター Google Distance Matrix API 日本は公共交通機関による移動は設定不可 毎月最大40,000要素まで無料。超過分は課金 Googleマップ 返信されたデータ 4 項目数が少なく SASに 読み込みやすい

5.

Googleマップ 5

6.

Google Distance Matrix API URIでデータ送信 https://maps.googleapis.com/maps/api /distancematrix/json?&key=API_KEY&or igins=東京駅&destinations=国立成育医 療研究センター 返信されたデータ 項目数が少なく SASに 読み込みやすい 6

7.

SASによる利用 (1)  基本形 (JSONの場合) https://maps.googleapis.com/maps /api/distancematrix/json?&key=API _KEY&origins=東京駅&destinations= 国立成育医療研究センター filename libref url "<URI>" debug ; libname libref json ; ただし……  「&」がSASにマクロ変数の呼び出しと解釈され、余計なWarning ⇒ %str  URIに日本語文字や半角スペースがある場合  パーセントエンコーディングが必要 ⇒ urlencode関数 例: 「東京駅」 ⇒ 「%E6%9D%B1%E4%BA%AC…」  「%XX」がSASにマクロの呼び出しと解釈され、余計なWarning ⇒ %qsysfunc 7

8.

SASによる利用 (2)  最終形 %let _origins=%qsysfunc(urlencode(東京駅)); %let _destinations=%qsysfunc(urlencode(国立成育医療研究センター)); filename MAP_API url "https://maps.googleapis.com/maps/api/distancematrix/json?key= API_KEY%str(&)origins=&_origins%str(&)destinations=&_destinati ons" debug ; libname MAP_API json ; 8

10.

ライブラリの中身 ALLDATAデータ: 複数レコードで全ての項目 他のデータ: 1レコードで一部の項目 10

11.

まとめ  SASからWeb APIを利用し、Googleマップの経路探索の結果を 取得することができた  取得したJSON形式の結果を、SASに読み込めた  必ずしも”Analysis-ready”なデータ構造でない  対処法 1. ALLDATAの転置 2. ALLDATA以外の全データの横結合 3. JSONマップの使用 JSONデータのSASデータセットへの対応付け 11

12.

Questions? 12

13.

JSONマップの作成  filenameステートメントを追加  libnameステートメントにオプションを追加 %let _origins=%qsysfunc(urlencode(東京駅)); %let _destinations=%qsysfunc(urlencode(国立成育医療研究センター)); filename MAP_API url "https://maps.googleapis.com/maps/api/distancematrix/json?key= API_KEY%str(&)origins=&_origins%str(&)destinations=&_destinati ons" debug ; 追加 filename JMAP "<パス>/jmap.map" ; 下線部追加 libname MAP_API json map=JMAP automap=create ; 13

14.

SASに自動で 生成されたもの JSONマップの編集 TYPE=ORDIN ALを削除 編集後 データセット 数を1つに TABLEPATH を「/root」 に変更 それ以外の変 数の記述を1 データセット 内に移動 14

15.

再読み込み  Libnameステートメントのオプションを変更し、再読み込み (省略) libname MAP_API json map=JMAP automap=reuse ; 下線部修正 1データセットに、全ての項目が含まれた 15