見出し画像

位置情報から見つけるサイクリストの休憩場所(前編)

サイクリストの走行ログ(位置情報)を使って、サイクリストがどんなところで休憩しているかを推定してみようという試み。前編・後編の2部構成でざっくり書いてみたいと思います。

悪魔のささやき

ロングライドに行って、疲れてくると必ず出る言葉。「つぎ、休憩しよう!」疲れているときに神のような一言です。

しかし、ロングライドは大抵郊外の人里離れたところを走るため、そもそも都合よくお店や自動販売機に出会えることなどほとんどありません。

気がつけば、坂道を1つ越え、2つ越え、乾いた喉はカラカラ、足はピクピク。ペダルを回しながら、「つぎってドコやねん!もう嫌や!もう無理!」と心の中で何度も叫び、先程の天使は悪魔のように見えてきます。

そんな経験をされた方は多いのではないでしょうか?

泣きの一言、「ググろ!」

もう無理。耐えに耐えてきましたが、もう回りません。先の見えない辛さ。息絶え絶えで出てきた言葉は泣きの一言「ググろ!」

そうです!私たちには文明の利器、Google検索があります。チョチョイと検索して、美味しいスイーツのお店に行って、辛さなんか吹っ飛ばしてしまえばいいのです。これなら先の見通しが立ち、何とか頑張れそう。

調べてみると数キロ先に小さなお店があることが分かりました。最高です。希望の光が見えました。

行き着いた先は・・・

最後の力を振り絞ってペダルを回し、映えるスイーツを食す妄想を膨らまし、やっとの思いで店に到着。

潰れとるやん…。


よくよく見るとネットで先程見た記事は10年以上も前のもの…。もう、大海を漂う小枝のような気分です。

そんな経験をされた方は多いのではないでしょうか?

ベテランさんに聞く?

郊外に行けば行くほど、この問題は深刻になります。ネット上でのポタリングやグルメライドの記事ではカバーされていません。こんな人里離れたところを走るサイクリストは、いったい何処で休憩をしているのでしょうか?

ベテランサイクリストは、郊外の美味しい店をたくさん知っています。やっぱりベテランサイクリストに聞いたり、お願いして連れて行ってもらうのがいいのでしょうか?

「今日はゆるポタでぇ〜笑」と言いつつ、エゲツない獲得標高になったりする体験を積みながら、自らの経験値を上げていくのもひとつの方法です。

では、もっと他に知る方法はないのでしょうか?

走行ログを分析してみる?

サイクリストの走行ログを集めて分析してみたら、もしかすると休憩場所とか分かったりしないのかなぁ…。そんなことを考え始め、やってみることに。

① 走行ログの位置情報をメッシュに割り当てる
② 同一のエリアで滞留しているメッシュを探す
③ メッシュの代表点からGoogle Places APIを使って周辺検索
④ 休憩で使えそうな場所をピックアップ

分析の方法をざっくり書くとこんな感じです。最近は全くやってなかったプログラミングを。開発環境の構築とか、いろいろ浦島太郎の状態からスタートです。

走行ログってなんなん?

そもそも、走行ログって何よ?ということで、走行ログとは、自転車などで走ったルートなどを記録したGPSデータ(位置情報)のことです。長距離走ったり、ガチ勢のサイクリストはサイクルコンピュータという装置をつけて、ライドの状況を記録しながら走ります。

最近ではスマホアプリでも簡単に走行ログを記録できたりしますが、スマホのバッテリーを激しく消耗するため、長距離走ったりする場合は敬遠されます。

Garmin Edge 1040 solar

サイクルコンピュータで取得した走行ログは、Stravaなどのサイトにアップロードして、今回のライドについて、あ~だこ~だ振り返ってムフフと楽しむのです。

実際の走行ログの中身はこんなんです↓↓↓

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<?xml version="1.0" encoding="UTF-8"?><html><body>
<gpx version="1.1" xmlns="http://www.topografix.com/GPX/1/1">
<trk>
<name>しまなみ海道</name>
<trkseg>
<trkpt lat="34.02044305555555" lon="133.01373">
<ele>19.0</ele>
<time>2020-10-18T23:22:05Z</time>
</trkpt>
<trkpt lat="34.02108" lon="133.01263">
<ele>32.0</ele>
<time>2020-10-18T23:23:04Z</time>
</trkpt>
<trkpt lat="34.021923055555554" lon="133.01143">
<ele>24.0</ele>
<time>2020-10-18T23:24:02Z</time>
</trkpt>
<trkpt lat="34.02646" lon="133.00743">
<ele>12.0</ele>
:
:

緯度経度や標高、時間といった情報がひたすら書き込まれた一瞬「ウゲッ…」となるデータです。こういうデータを沢山集めて、ゴニョゴニョするともしかしたらサイクリストの休憩場所が分かるかもしれないよねぇーっというのが今回の試みです。

ベテランに聞いた方が早い?確かに…。そんな気もする…。でも、今度遠征する阿蘇地方に詳しいベテランの人知らんとかあるやん。

メッシュって何?

さてさて、ひたすら緯度経度の情報が書き込まれた走行ログですが、このままだと扱いにくいので、メッシュという情報に置き換えていきます。位置情報を扱う場合のメッシュとは↓↓↓

メッシュデータとは、地図上の情報をデジタル化したり各種統計情報をとるために地図上の経緯度方眼として定められた地域メッシュのことです。

国土交通省
関東近郊の1時メッシュ
by 空間情報クラブ

よく分からん説明ですが、簡単に言うと平面の地図にほぼ等間隔で縦横に線を引いてマス目を作って番号を振ったものです。

よくこのマス目に住んでいる人の密度を色分けして表示します、とかいった利用がされています。

250mメッシュの人口の可視化
by 都市構造可視化計画

このマス目をどんどん小さく区切っていって、125m四方くらいのマス目を作ります(だいたい8次メッシュ)。これ以上もメッシュを当然小さくできますが、GPSそのものの測位誤差もあるので、あまり小さくする必要はないかと思います。

そして、走行ログの緯度経度情報の一つ一つが、どのメッシュに入るかを計算して、例えば5分以上も移動せず留まっているログが多いメッシュを見つけ出せば、おおよその滞留場所が分かりそうですね。

Google Places APIを使って情報取得

ただ、そのメッシュ付近に何があるかは分からないので、Google先生に聞いてみます。Google Places APIの周辺検索(NearBy Search)を使って、メッシュ周辺のPOI(Point Of Interest)を取得してみると、お店の名前や史跡などの情報が分かります。

また、Google Placesの場合、その場所(お店や史跡など)のレーティングや口コミ件数なども分かるので、評価の高い場所なども抽出することができそうです。

ただ、APIを呼び出すと課金されるので、無尽蔵に呼び出すとお小遣いがなくなります。現在は$200/月までは無料なので、その範囲内で遊べばいいでしょう。

ちなみに、100箇所の周辺検索をするためにやり直しなど含め460回ほどNearby SearchのAPIを呼んだときにかかった金額は、2500円程度と表示されていました。5円/回くらいですね。意外と高いな!

Nearby Search と Text Search は、選択した場所で利用できるすべてのデータ フィールド(サポートされるフィールドの一部)を返し、課金はそれに応じます。Nearby Search や Text Search で、特定のフィールドのみを返すように制限することはできません。不要なデータがリクエストされて課金されるのを防ぐには、代わりに Find Place リクエストを使用します。

Google Maps Platformから引用

走行ログの分析で分かること

1. サイクリストに人気の休憩場所
サイクリストが実際に滞留しているエリアが分かります。そのエリアの周辺に存在するCafeや食堂、道の駅、公衆トイレのある駐車場、コンビニなどが休憩場所と推定できます。サイクリスト歓迎のお店であったり、サイクリスト好みのメニューがあるお店であったりするので、迷ったときは間違いない場所です。

2. サイクリストがよく通るエリア付近の人気店や名所
サイクリストが実際に滞在することはまだ少ないが、人気のルート付近にある評価の高いお店や観光名所などが分かります。いつもと気分を変えて名所を経由してみたり、Cafeで休憩してみたり。地域を新規に開拓する際にオススメの場所です。

まとめ

サイクリストに適した休憩場所を知っているか知っていないかでライドの充実度が全く違ってきます。今回は、走行ログって何?というところから、走行ログを分析すると、どんなことが分かりそうかという内容を書いてみました。

長くなったので、実際にどんな店などが分かるようになるのかは次回のNoteに書いてみようと思います。




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