Googleの位置情報履歴を滑らかなルート動画に変換する方法
最近、興味深いリポジトリを見つけました:google-timeline-visualizer。このプロジェクトは、Google Mapsからエクスポートした位置情報履歴(Timeline.json)を取得し、選択した期間の旅行のマップを含むアニメーションMP4動画にまとめます。

数年前に、Googleは位置情報履歴をクラウドからユーザーのデバイスに徐々に移行し始めました。現在、このデータは座標、セグメント、アクティビティマーカーなど複雑な構造を持つかさばったJSONファイルとしてローカルに保存されています。プロジェクト作者は最初は個人的な使用のためにPythonスクリプトを書き、その後ロジックをAndroid用のネイティブKotlinアプリとiOS用のWebバージョンに移植しました。

このユーティリティできること
このユーティリティの主な目的はシンプルです:味気ない位置情報ポイントを、ソーシャルメディアに投稿しても恥ずかしくない、または vacationの思い出として保存できる楽しいアニメーションに変換することです。
興味深い機能がいくつかあります:
- GPSノイズフィルタリング。スマホが衛星の捕捉を1秒間失い、隣の町に瞬間移動してしまった場合、アルゴリズムはそのような鋭い行き来のジャンプを切り取り、全体のルートラインを崩しません。
- フライト補間。長い大陸間飛行は、大圏弧に沿ってスムーズになります。カメラはポイントAからポイントBにテレポートする代わりに、マーカーを追って測地線に沿って滑らかに飛びます。
- スムーズなカメラトラッキング。毎日の都市通勤中、マーカーは固定された画面ゾーン内でわずかに彷徨い、その後マップがその背後でスムーズに動き始めます。これにより、信号待ちや交通渋滞での不快なジッターが解消されます。
- 柔軟なレンダリング設定。再生時間を10秒から300秒に設定でき、モバイルストーリー用の縦形式1080×1920またはクラシックな横形式1080pを選択できます。
デスクトップでの実行方法
最初は、タイルとフレームの合成にFFmpegを使用したPythonスクリプトとしてプロジェクトが始まりました。デスクトップバージョンは今も動作します。
システムにPython 3.9+とFFmpegがインストールされている必要があります:
このスクリプトはさまざまな座標形式をサポートしています:標準配列、semanticSegments構造、E7座標、接頭辞付き文字列(geo:など)。
モバイルクライアントとWebバージョン
ターミナルを触りたくない場合、2つの готовыеオプションがあります:
- Android。リポジトリのリリースページに готовые APKが 利用可能です。アプリ はKotlinで書かれており、動画を 直接スマホのプロセッサーでレンダリングし、完成したクリップをシステムフォルダー(
Movies)に 保存します。 - iPhone。SafariのWebインターフェースで動作します。ブラウザ内のハードウェアH.264エンコーダーがエンコーディングに使用されます。
Androidプロジェクトをゼロからビルドするには、JDK 17とAndroid SDK 36が必要です:
プライバシーに関する考慮事項
位置情報データは機密性が高いため、作者はレンダリングを厳密にローカルで行うようにしました。Googleアカウント認証やJSONのサードパーティーサーバーへの送信は一切ありません。
唯一のネットワーク通信は、OpenStreetMapベースのCARTOサービスからラスターマップタイルを読み込むことです。最初のマップを読み込む前に、アプリはこれらのネットワーク要求について 直接警告します。
誰が役立つか
このプロジェクトは、年末に旅行を可視化するのが好きな人にとって興味深いでしょう。モバイル開発者にもソースコード 查看をお勧めします:コードベースは、重い外部ライブラリなしでタイルマップとビデオストリームのレンダリングを整理する方法を示しています。
関連プロジェクト