動機
自転車乗りにとって今年一番ではないかと思われるビッグニュース
ルートラボ終了のお知らせ
代替サービスをいろいろ探していますが、
実験の意味も含めて、自分でルート検索サービスを作ってみるのも面白そうだな、と。
で、以下のblogを発見、真似してみることにしました。
ちゃりラボblog - Strava heatmapを使ったOSRM最適化
まずは Heatmap の取得から...
stravaからglobal heat mapのデータを頂く
URLが変わっています。
新しいURLはこちら。
https://heatmap-external-b.strava.com/tiles/ride/hot/1/0/0.png
フォーマットは
https://heatmap-external-b.strava.com/tiles/ {移動手段} / {色} / {Zoom} / {x} / {y}.png
移動手段には ride / run / both / water / all などが選べます。
色は hot / blue など
Strava Global Heatmap
をいじると選択肢がわかると思います
(URLの変化に注目してください)
Zoomは1から11までOK。
12以上を指定すると
authentication is now required for data access beyond zoom level 12, please login to strava.com and then visit /auth
と叱られます。
authすればいいのですが、今回は zoom = 11
を使うこととします。
x と y はタイルの index です
例えば、zoom = 1
ならば、世界は4分割なので、
x = {0, 1}
y = {0, 1}
の範囲が有効な index となります。
欲しい場所の index を調べる
じゃ、彩湖はどこなの?
となった時に手探りで値を探すのは大変!!
でもいいページを見つけました。
osrmのタイルサービスのデモページ
赤い線で区切られた区画ごとに zoom/x/y が記述されています。
この値を Strava Heatmap のURLに適用すると、その場所にヒートマップ(png画像)が取得できます。
便利!
はい、彩湖です
https://heatmap-external-b.strava.com/tiles/ride/hot/11/1818/805.png?px=512
複数のタイルを取得して大きな地図を作ってみる
タイル一枚一枚ではなく、広い範囲を取得して、つなげて大きな地図が欲しくなりますよね。
curlとImageMagickで簡単にできました。
便利な世の中です。
1. ImageMagickをインストール
$ sudo apt-get -y install imagemagick
$ which convert
/usr/bin/convert
2. 手動で連結
$ ls
test_1817.png test_1819.png test_1816.png test_1818.png test_1820.png
$ convert +append *.png concat.png
3. 自動で連結
$ for y in {800..810} ; do
> for x in {1810..1825} ; do
> curl https://heatmap-external-b.strava.com/tiles/ride/hot/11/${x}/${y}.png?px=512 > test_${x}.png
> done
> mkdir ${y} ; convert +append *.png ${y}/${y}.png
> done
$ convert -append */*.png map.png
これで、Heatmapを入手できるようになりました。
次はルーティングエンジンの準備ですね
まて次号