Skip to content
アルパカ プレス | IT・AI・ゲーム・動画制作ブログ ロゴ
Go back

Google My Maps→Google Earthの作業をPythonで自動化した

私はYouTubeのドライブ動画で、Google Earthを使ったルートアニメーションをよく使用しています。

まずは実際の動画です。

ただ、これまで毎回少し面倒な作業がありました。

これまでの作業フロー

これまでは以下のような流れで作業していました。

  1. Google My Mapsでルート作成
  2. KMLでエクスポート
  3. GPXへ変換 (AnyConvというサービスを利用)
  4. gpx.studioへ読み込み
  5. 開始日時と平均速度を設定
  6. 時刻付きGPXを出力
  7. Google Earthへインポート

このうち3〜6は外部のWebサービスを利用する必要があるので、地味に面倒でした。

ルートアニメーションを作るたびに同じ作業を繰り返していたので、「これは自動化できるのでは?」と思い、Pythonでスクリプトを作ってみました。(※作ってもらいました)


作成したもの

Google My Mapsから出力したKMLを読み込み、Google Earth用の「時刻付きGPX」を自動生成するPythonスクリプトです。

GitHubで公開しています。

https://github.com/alpaca-press/kml-to-timed-gpx


できること

このスクリプトでは以下を自動で行います。

  • KMLのLineStringを読み込み
  • GPXへ変換
  • 各トラックポイント間の距離を計算
  • 指定した平均速度から時間を生成
  • GPXへ <time> タグを自動付与

生成したGPXをGoogle Earthへインポートするだけで、ルートアニメーションが再生できるようになります。


使用方法

例えば以下のように実行します。

python kml_to_timed_gpx.py route.kml route.gpx \
  --start 2026-04-29 \
  --speed-kmh 60

--start に日付だけを指定した場合は、自動的にJSTの00:00:00として扱うようにしました。

つまり、以下のように解釈されます。

2026-04-29T00:00:00+09:00

Google Earth向けのアニメーション用途では、このくらいシンプルな指定の方が扱いやすい気がしています。


技術的な話

今回のスクリプトでは、KML内の LineString を読み取り、各ポイント間の距離を計算しています。

距離計算には haversine formula を使用しました。

平均速度から各ポイントの経過時間を計算し、GPXの <time> タグへUTC形式で書き込んでいます。

Google Earthは時刻付きGPXを読み込むことで、タイムライン再生が可能になります。

※ちょっと距離計算については何を言ってるか分かりませんが、チャッピーさんがそう言っていました。


AIと相談しながら作成

今回のスクリプトは、ChatGPTと相談しながら作成しました。

実際のKML/GPXデータを使いながら、

  • 開始日時の扱い
  • JST対応
  • GPXの時刻形式
  • Google Earthとの互換性

などを少しずつ改善していきました。

最近は「AIに全部作ってもらう」というより、実際に使いながら一緒に改善していく使い方がかなり便利だと感じています。


今後やりたいこと

今後は以下のような機能も追加してみたいです。

  • 区間ごとの速度変更
  • 停車時間の自動挿入
  • カメラアニメーション対応
  • 動画生成ワークフロー全体の自動化

Google Earthを使ったドライブアニメーションはかなり楽しいので、もう少し色々試してみようと思っています。


GitHub

もう一度ご紹介ですが、スクリプトはこちらで公開しています。

https://github.com/alpaca-press/kml-to-timed-gpx


関連記事