GPX AnimatorでGPSログを動画にする
Mastodonで「GPSログを2Dの動画で見せたい」という話があったので、GPX Animator(github)を試してみました。
GPX Animatorを使うときの注意
GPX Animatorを使うには新しいJavaが必要です。古いJavaでは動かないので、Debianの場合はapt install openjdk-17-jre
で新しいJavaをインストールしてからsudo update-alternatives java-1.17.0-openjdk-amd64
でJavaのバージョンを切り替えてください。
Windowsの方は、古いJavaをアンインストールして下のMicrosoft OpenJDK 17(アーキテクチャが「X86」で種類が「msi」)をインストールしてください。
画面固定のアニメーション動画を出力する
GPX Animatorの画面を開くと、このようなごちゃごちゃした画面が表示されるので一見、何を設定したらいいのかわかりにくいです(さらに注意書きも書いたので見づらいですね)。
出力は最低限の設定すればできるので、まずは画面固定のアニメーションを出力してみます。
はじめにウィンドウ右下にある「Add Track」ボタンを押して、GPXファイルを指定します。するとTrackタブが追加されてGPS軌跡の設定画面になります。
ここで、いろいろ設定できますが、いったん置いておいてGeneralタブに戻ります。
Generalタブの設定ですが、上のスクリーンショットを参考に以下の3つの場所を設定します。
- Output: 動画ファイルの出力先を指定する
- Width x Height: Standard Sizesボタンから解像度を選ぶ
- Background Map: ドロップダウンメニューから「World: OpenStreetMap Carto (Standard)」を選ぶ
設定したら、右下「Add Track」ボタン横の「Render」ボタンを押すとレンダリングされて動画が出力されます。
以上で画面固定のアニメーション動画の出力は終わりです。
場所に合わせてスクロールするアニメーション動画を出力する
GPSの位置にズームしてスクロールして移動するアニメーション動画を出力するには、ビューポートとズームレベル、マージン、スピードを設定します。General画面で下のオプションを設定してください。
- Width x Height: 空にする
- Viewport Width x Heght: Standard Sizeボタンから解像度を選ぶ
- Zoom: ズームレベルを指定する(後述)
- Margin: フルHDなら横解像度半分の960ぐらいを指定
- Speed: 100ぐらいにする
固定画面で指定していたWidth x Heightがあるとスクロールしないので外して、代わりにViewport Width x Heightを指定します。
Zoomのズームレベルですが、これはOpenStreetMapを開いてURLを見るとhttps://www.openstreetmap.org/#map=18/34.66096/135.53626
となっています。このURLの18
の部分です。この部分は地図を拡大縮小すると変わるので動画で見せたいズームレベルを探して、その数字を記述します。
ズームレベルについて注意ですが、レベルを上げるとその分、変化が大きくなるのでレンダリング時間は長くなります。そして地図によっては対応していないズームレベルもあるので対応していない場合は、レベルを下げてください。
Marginは余白ですが、GPS軌跡の中心がこの位置にくるとスクロールします。20では、かなり端にならないとスクロールしないので、中心に寄せたい場合は横解像度の半分ぐらいを指定するのが良いと思います。これは感覚の問題なので増やしたり減らしたり試行錯誤して指定してください。
Speedは、デフォルトの1000だと早すぎて画面がついていかないので100ぐらいにしておくといいかと思います。遅い場合は、ここから増やすのがいいでしょう。
スクロールする動画の出力は以上です。おそらく、この2つでだいたい対応できると思います。
Tipsなど
軌跡の移動が早すぎる
軌跡の移動が早すぎる場合は、Speedを調整します。デフォルトが1000倍になっているので100倍にして調整します。
軌跡を太くしたい
Track画面にあるLine Widthを増やします。
軌跡の色を変えたい
General画面にあるTail Colorを変更します。
地図を変更したい
Background Mapで地図の変更できます。ですが、プリセットの中から選ぶのが無難です。githubにGoogle Mapsを使う例がありますが、これを使って動画公開をしたらライセンス的にアウトです。
プリセットの中にはAPIキーを指定しないと使えないものがありますが、それはエラーメッセージに従って取得したAPIキーを指定します。
右下に表示される情報を消したい
General画面で下にスクロールすると、Information Positionがあるので、これをHiddenにします。Attributionは、帰属表示なので消さないほうがいいでしょう。