クラウドGISサービス「ArcGIS Online」でジョギング管理アプリを作ってみる

【1】はじめに

 去る7月13日~16日に、Esri User Conference がオンラインで開催された。例年であれば、サンディエゴに数万人のGISフリークが集まってひたすらGISのことだけを語り続ける、極めて優雅なカンファレンスだ。

 プレナリーやテクニカルセッション、展示会場に至るまですべてオンラインで参加できるというのは、日頃極東の果てで情報に飢えている身からすると非常にありがたい、時差さえなければ。
 例年、このイベントの企画としてUC 5㎞Runというランニングイベントが開催される。会期中の早朝に参加者数百人(くらい)が集まってランニングをする、という代物。GISとの関係は知らない。そして、今年はこのイベントもバーチャル化した。それがこちら。

Esri UC Virtual Run/Walk 2020
(UCが終わったのでイベントも終了ということになったらしい。しばらくサイトは残しておくらしいけどたぶん近いうちに見られなくなる)

 物理的に集まれないんなら、各地で走ろう。せっかくみんなで走るんなら、夢は大きく世界一周だ!・・・という意気込みのもと、参加者全員の走行距離で地球一周分走りましょうというテーマで開催された。

画像1

 残念ながら惜しくも地球一周はできなかったわけだったが、世界中からランナーが参加して、一部界隈ではめちゃくちゃ盛り上がった(主観)。そしてこのVirtual Run/Walkの素敵なところは、ほかのランナーの走ったルートや投稿した写真が共有されていること

画像2

アゾレス諸島とか

画像3

サハリンとか

 中々素敵な土地を皆さん走っておられていて、地理屋でランニング好きな自分にとっては、1粒で2度美味しい至高のイベントであった。常設してほしいお願いしますなんでもしますから

画像4

 ちなみにこちらはアゾレス諸島を走っていたestrinkaさんの投稿。ああ素晴らしい、いつか行きたい大西洋。

 で、このイベントの詳細ページを読んでいて以下の文言が気になった。

Powered by Esri
You are interested in GIS; that's why you are part of the UC. This wasn't only a run/walk, but also an opportunity to see some products in action. Here's a summary of what we used to put this event together, and what we encourage you to try:
ArcGIS Survey123 — A registration survey allowed you to sign up. We used the registration to send you information for a successful virtual race.
ArcGIS QuickCapture — Participants tracked and submitted their routes through this app, getting them right into ArcGIS Online. Behind the scenes, ArcGIS Notebooks were used to calculate various statistics on the routes.
ArcGIS Hub — Sharing our QuickCapture project through ArcGIS Hub allowed anyone, anywhere capture data — that's why you didn't need to sign in to participate!
ArcGIS Dashboards — A dashboard looking at the runs submitted showed the current status of the event, including the participant counts, leaderboards, and fun stats like whether we made it up Everest yet.
ArcGIS API for Javascript — Your result links you to a 3D web app created to highlight and share the routes we covered.
ArcGIS StoryMaps — The event is memorable because of the people brought together and the shared experience and story we now have. To celebrate all the participants, a story map will sum up the event. Stay tuned for that.

Virtual Run/Walk 2020のHubページから引用)

 3次元のオサレなビューア(JavaScript APIでゴリゴリ作ったらしい)はさておき、ラン経路データの収集と、ダッシュボードへの表示データ(速度とか、走行距離とか)の演算処理は、わりとシンプルな仕組みを使っている様子。ひょっとすると、これなら営業職の自分にもマネできるかもしれない。

 ということで、以下、UC Virtual Run/Walk 2020に触発されて、個人の開発・研究用途でジョギング管理アプリを作ってみた一部始終をだらだら書き留めたNoteです。

以下定型文ーー
 なお、私は本GISサービスの国内代理店の中の人ですが、本記事は個人的な立場と個人的な考え方に基づいて執筆しています。また、利用しているGISサービス・アプリケーションは、個人の研究・開発用途であれば無償で利用出来るものを使用しています。
定型文ここまでーー

【2】使ったもの

・ArcGIS Online(Developer ライセンス)
 ※正しくは「ArcGIS Developer Subscription Essentials に付属している開発用のArcGIS Onlineライセンス」。
・ArcGIS QuickCapture: ランニング経路を収集・投稿するクライアントアプリ
・ArcGIS Dashboards: ランニング結果をモニタリングする。サボり防止
・ASUS Zenfone4(GPSの精度が怪しい)
・足腰(コロナ禍で鈍った)

・ ArcGIS Quickcaptureとは
 Esri が提供しているArcGIS プラットフォームのライトクライアントを担うアプリケーション群「ArcGIS Apps」の一つで、ウリは「シンプルな操作でデータを収集できる、現地調査用アプリ」(ESRIジャパン公式ブログより)。EsriのSaaS型GISサービス「ArcGIS Online」を契約すると使えるようになる。そして「ArcGIS Online」は、開発向けの個人用ライセンスが無償で配布されている
 詳しくは公的なルートでESRIジャパンさんに聞いてあげてください。

【3】やったこと

1)走行ログ管理用の空のフィーチャサービスを作成する
 ArcGIS QuickCaptureからレコードを投入していくためのサービスを作る。この「空のフィーチャサービスを作る」作業の意味が分かってくるとArcGIS Onlineで遊ぶのがすごく楽しくなると思う。フィールドの構造はこんな感じ

画像5

QuickCaptureから属性値を入力するのは
・開始時間(start_time)
・終了時間(finish_time)
・活動内容(activity_type)
の3つで、
・速度(speed)
・活動時間(act_time)
・距離(feature_length)
は工程3)で演算して数値を入れていくことになる。関係ないけど、ArcMap/Shapefileに漬かっていたユーザー時代が長すぎて、フィールド名が10バイト以上でもよいことに未だに違和感を覚える。
(ぶった切られた国勢調査CSVのフィールド名に何度悶絶したことか…)

2)ArcGIS QuickCaptureの調査プロジェクトを用意する
 ArcGIS OnlineのメニューからQuickCaptureデザイナーを起動して作成する。設定画面はこんな感じ。

画像6

 ジョギング以外にも(水増しのために)散歩のログも取得できるようにしてみた。調査プロジェクトデザイナーめっちゃ簡単で感動した。ドキュメント読まなくても作れるくらい。

3)走ってくる・散歩してくる
 走り初めにQuickCaptureのモバイルアプリを起動して「ジョギング」ボタンをタップするだけ。そして走り終わったらもう一度タップするだけ。UIはシンプルであればあるほど良い。素晴らしい。

4)収集したデータを手直しする
①GPSの測位ズレによる外れ値の除去
 手持ちのスマホ(Zenfone4)内蔵のGPSセンサの測位ログを使うので、素の測位結果はわりとひどい。こんな感じ。橋を渡っただけなのにログが狂っている。

画像7

 別で所有しているiphone8 の測位のほうが正確だったけど、スマホを何台も持って走るようなガジェットオタクではないので、とりあえずZenfone4で測位したものを帰宅してから人力でジオメトリを修正することにする。

画像8

 直した図。iphoneとの測位差がGNSS対応有無のせいなのか、Zenfone4の不具合のせいなのか(時々GPSが全く取れなくなる)どっかできちんと調べておきたい。

②走行距離、時間、速度の演算処理
・開始時間
・終了時間
・走行経路
の情報から、走行距離、走行時間、平均速度を計算する。
画像9

 Virtual Run/WalkではArcGIS Notebookを使ったらしい。Python API分からない人だからArcadeでフィールド演算することにした。Python勉強しよう。

・走行距離 

画像10

・走行時間  

画像11

・平均速度

画像12

 ジオメトリの長さから正確な数字が出せるか心配だったけど、①でラインの形状を修正した後で計算したら凡そ普段走ってる速度くらいの結果が出たので、これで良しとした。
ジオメトリ長を属性値に引っ張ってくる関数には
・Length関数 →平面線長
・LengthGeodetic関数 →測地線長
の2種類がある。後者を選ぶべきなのはわかるがどう違うのか整然と説明できない。今度詳しい人に聞いておこう。

5)モニタリング用のダッシュボード画面を作成する
 最後に楽しいダッシュボード作成の時間。ArcGIS Dashboards が好きすぎでヤバイ(語彙力)。今回はこんな感じ。

画像13

 川崎市のコロナウイルス陽性者数のダッシュボードを作った時や、Salesforceのユーザー勉強会に参加した時も思ったけど(Salesforceのダッシュボードも裏側でのデータの料理が自由にできる感じが結構好き)、ダッシュボードっていうのは適当でもそれっぽい画面ができてしまうからこそ、しっかりと工夫をしないと情報が伝わりにくいと思った。プレゼン資料のデザインと一緒だな。。。

コツは
・明確な目的を設定する(可視化した情報で何をしたいのか)
→例:ジョギングの記録を可視化することでサボれなくする
・目的の達成のために必要な情報を(できるだけ精査して)並べる
→例:日付別の走行記録や過去7日、30日の走行実績を並べておけばサボった時のツラさがデカい
・必要な情報を更新するための運用コスト/手間を可能な限り削る
あたりだろうか。ダッシュボードの作成ノウハウをどこかで誰かにまとめてほしい(他他力本願)。

【4】総括

 ダッシュボードに最低限の見栄えを持たせるためにデータを集めていたら、4連休が終わってしまった。以下総括。

1)ちゃんと技術の勉強をしよう
 日頃見積書と提案書しか書いてないので(営業というのはそういう生き物ではあるらしい)、仮にも自分の売っている製品なのにコーディングが必要になった途端にさっぱり分からないのはどうにかすべきだと感じた。

2)GPSのログを直に放り込んでジオメトリ演算に渡すのは無理がある
 ランニングの経路をラインフィーチャに起こして、ジオメトリから走った距離を割り出して気づいたが、GPSによる測位のブレがそのまま距離に反映されているせいで距離が過大評価されがち。今回は±数%くらいの距離誤差は許容するという方針のもと
・許容できない外れ値(GPS測位精度が±30mくらいになってる地点)を手作業で除去する
という対応をとったけれども、要求精度の高いケースにも対応できるよう手段は考えておこうと思った。

①入力側で解決する
 QuickCaptureデザイナーで、一定以上の測位精度がでていない時はデータに反映させないという設定が出来るようだ。たぶんこれが一番効果ありそう。が、とりあえず設定して走ってみたけどどう制限されているのかわからない。もうちょっと試してみないと。

②入力後に解決するA 人力
 外れ値以外のちょっとした左右ブレも、入力後にポチポチ修正する。頂点数がくっそ多いのでこれはやりたくない。仕様の限界を運用でカバーし始めたらそのシステムは使われないという宗教を信仰しているので、この方策は絶対とらない。

③入力後に解決するB パワープレイ
 マップマッチングという技術がある。GPS測位には限界があるので、測位してきたログデータを、近くの道路経路上にマッチングさせて、ただしい位置に補正するという技術。僕はただでさえ、なんでもバッチ処理しましょうよ!と言い出して白い目で見られることが多いので、出来ればいいなくらいに思っておこう。。

 以上、4連休の暇つぶしくらいの気持ちで始めたら4日間がっつり使ってしまった。しかもめっちゃ長文になった。論文もこれくらい饒舌に書ければよかったのに。ただ総じて楽しかった。趣味でもGISを使うのは良いことだと言いたい。

 

【5】参考資料

・ArcGIS Onlineの各操作手順や用語については、「ArcGIS Online逆引きガイド」がすごくまとまってる

・ダッシュボードの作成時に気を付けておくべきこと、といえば、国内のコロナウイルス陽性者情報をまとめているジャッグジャパンウダガワさんのブログがめちゃくちゃ勉強になった。








この記事が気に入ったらサポートをしてみませんか?