Googleのロケーション履歴のJSONファイルをLightroomで使えるGPXに変換する方法

以前の記事でGoogleのロケーション履歴からkmlファイルをダウンロードしてGPXファイルに変換する方法を紹介しておりましたが、いつの間にかkmlファイルでなくJSONファイルしかダウンロードできなくなっておりましたので、今回はJSONファイルをGPXファイルに変換する方法を紹介します。

注意

この記事ではWindowsを使用していることを前提としていますので、MacやLinuxの場合はpython関係のところが異なります

事前準備

pythonをインストール

以下のサイトからpythonをダウンロードしてインストールしてください。


参考
pythonpython.org

location-history-json-converterのダウンロード

以下のgithubからダウンロードして適当なフォルダに解凍してください。


参考
location-history-json-convertergithub

中身をデスクトップとかに移動させておくと楽です。

dateutilモジュールのインストール

コマンドプロンプトで以下のコマンドを実行してdateutilモジュールをインストールします。

py -m pip install python-dateutil

JSONファイルからGPXへの変換

Googleのロケーション履歴からデータをダウンロードする方法は以下の記事で紹介していますのでそちらを参照ください。違う点はkmlではなくJSONでダウンロードするという点だけです。

ダウンロードしたロケーション履歴のファイルのうち「Records.json」を先程ダウンロードして解凍しておいたlocation-history-json-converterの中にあるlocation_history_json_converter.pyと同じフォルダ内に移動してください。

コマンドプロンプトでlocation_history_json_converter.pyが保存されているフォルダに移動した状態で以下の内容のコマンドを実行すると変換が完了します。


location_history_json_converter.pyなどの解凍したフォルダの中のファイルをデスクトップに移動している場合は先に以下のコマンドを実行すればokです。

cd desktop


これでlocation_history_json_converter.pyが保存されているフォルダ(デスクトップ)に移動した状態担っています。

py location_history_json_converter.py Records.json 任意のファイル名.gpx -f gpxtracks -s 任意の開始日時 -e 任意の終了日時

実際のコマンドの例

出力するファイル名:123.gpx
出力する日時:2022年6月7日から2022年6月15日

この条件で変換する場合は

py location_history_json_converter.py Records.json 123.gpx -f gpxtracks -s 2022-06-07 -e 2022-06-15

とします。

終わりに

以上の内容でLightroomで使用できるGPXファイルが出力されます。

Lightroomで写真に位置情報を付ける方法は以下の記事で紹介しているので参考にしてください。

参考にしたサイト


参考
pythonpython.org


参考
location-history-json-convertergithub


参考
Pythonライブラリのインストール – pipの使い方GAMMASOFT

2 COMMENTS

匿名

シェアありがとうございます。
SyntaxError: invalid character ‘・’ (U+00B7)
中黒の半角?検索してもヒットしないのですが、構文エラーで変換できませんでした。アドバイスあればよろしくお願いします。

返信する
pcsonota

遅くなってすみません、どのタイミングでどのようなコマンドを入力したか教えてもらえますか?

返信する

コメントを残す

const commentIframes = document.getElementsByClassName('jetpack_remote_comment'); window.addEventListener('message', function(event) { if (event.origin !== 'https://jetpack.wordpress.com') { return; } if (!event?.data?.iframeUniqueId && !event?.data?.height) { return; } const eventDataUniqueId = event.data.iframeUniqueId; // Change height for the matching comment iframe for (let i = 0; i < commentIframes.length; i++) { const iframe = commentIframes[i]; const url = new URL(iframe.src); const iframeUniqueIdParam = url.searchParams.get('iframe_unique_id'); if (iframeUniqueIdParam == event.data.iframeUniqueId) { iframe.style.height = event.data.height + 'px'; return; } } }); })();