0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GoogleMapの保存した場所一覧(Jsonデータ)をNumbers.appで保管する

Last updated at Posted at 2025-01-04

GoogleMapの地点登録が2000を超えてしまいました。このデータをcsv化してNumbersで整理をするためのTipsです

やりたいこと

・GoogleMapのスター付き地点を多数登録してしまい地図がうるさい感じになってしまったので、GoogleMapから削除する
 →文末の雑談のGoogleMapのリスト編集機能が使える
・全て消えると勿体無いので、一覧として保存したい
 →JSONデータを取得してCSV化(本稿)

Googleデータをテイクアウトする

 きっかけは、Googleデータがダウンロード可能と知ったことです
 マップ関連では下記のデータが”テイクアウト”できます
 
 ・マップ              マップでの設定と個人的な場所
 ・マップ(マイプレイス)      スター付きの場所と場所のクチコミの記録
 ・ロケーション履歴(タイムライン) タイムライン データ(設定、場所など)

  https://takeout.google.com

 今回はマップ(マイプレイス)が対象。JSONでテイクアウトできるようですね
 早速、テイクアウトしましょう
 欲しいデータをチョイスして、待つだけでOKです
 すぐにできるものから数日かかるものまでありますが、メール通知からダウンロードができます

Jason構造を理解する

 CSV作成はターミナルからJqで行います
 まずはデータの構造を理解するため、ダンプします
 コマンドラインからJqで整形ダンプを行い、head先頭の50行をコンソールに出力
 (もちろん、テイクアウトしたJSONデータをテキストエディットで開くということでOKです)

 ちなみに、jqの用例として、catからJSONデータをパイプするものがありますが、jqコマンドでもファイル名指定が可能です
 下記の例では、OSXでのダウンロードした際の一般的な保存先となっていますのでusername部分を自分の環境にあわせてください

コマンドラインです
jq '.' /Users/usesrname/Downloads/Takeout/マップ(マイプレイス)/保存した場所.json | head -n50

//結果のサンプルです
{
  "type": "FeatureCollection",
  "features": [
    {
      "geometry": {
        "coordinates": [
          136.6928392,
          35.0710753
        ],
        "type": "Point"
      },
      "properties": {
        "date": "2024-12-28T10:11:37Z",
        "google_maps_url": "http://maps.google.com/?cid=17410544162242155823",
        "location": {
          "address": "日本、〒511-0009 三重県桑名市桑名663−5",
          "country_code": "JP",
          "name": "六華苑"
        }
      },
      "type": "Feature"
    },

//以下繰り返しです

要素の実態はFeature(s)の繰り返し構造ですね

Features
 ┣━ geometry  -> 経度/緯度
 ┗━ properties -> 名称/住所/リンクなど

ちなみにjqの'.'は入力を変更せずそのまま出力するフィルターです
デフォルトなので省略できますが、ファイル指定をする場合は下記のように引用符が必要です(先程のコマンドの書き換えです)

>jq '' /Users/usesrname/Downloads/Takeout/マップ(マイプレイス)/保存した場所.json | head -n50

ファイル指定をしない場合は裸のjqだけでOKです(jqの例としてよくあるテキストを流す場合の例です)
cat 保存した場所.json| jq | head -n50

Jasonを整形する

上記の名称/住所/リンク/経度/緯度を抽出して整形ましょう

コマンドラインです
cd /Users/usesrname/Downloads/Takeout/マップ(マイプレイス)/;cat 保存した場所.json| jq '.features[] | {"リスト種類": .geometry.type, "場所": .properties.location.name, "住所": .properties.location.address, "リンク": .properties.google_maps_url, "緯度": .geometry.coordinates[1], "経度": .geometry.coordinates[0]}' | >> gmap.txt

//結果のサンプルです
{
      "リスト種類": "Point",
      "場所": "六華苑",
      "住所": "日本、〒511-0009 三重県桑名市桑名663−5",
      "リンク": "http://maps.google.com/?cid=17410544162242155823",
      "緯度": 35.0710753,
      "経度": 136.6928392
    }
    ・・・

説明です
①cd /Users/usesrname/Downloads/Takeout/マップ(マイプレイス)/;
 カレントディレクトリーをJSONでーたのある場所にセットします

②cat 保存した場所.json|
 jqへJSONデータを流します

③ jq '.features[] | {"リスト種類": .geometry.type, "場所": .properties.location.name, "住所": .properties.location.address, "リンク": .properties.google_maps_url, "緯度": .geometry.coordinates[1], "経度": .geometry.coordinates[0]}' |
 jqコマンドを分解して説明
 jqの操作を''で記述しています(フィルター)
 この中でパイプが利用できるのが秀逸ですね

③-1 
 .features[]
 このフィルターで、featuresの要素をまるごと取り出します
 ".xxx"はJSONのキーxxxの内容を返します
 "[]"は配列全体を返します
 featuresは配列(geometryとpropertiesの集合)なので、[]として配列全体を出力することになります

 言い方を変えると取り出したいデータを配下に持つ、featuresをルートに設定するという感じです
 わかりたい場合はここまでの処理で出力してみるとよいでしょう

③-2 
 {"リスト種類": .geometry.type, "場所": .properties.location.name, "住所": .properties.location.address, "リンク": .properties.google_maps_url, "緯度": .geometry.coordinates[1], "経度": .geometry.coordinates[0]}

 外側の{}は、出力を構造化する記号です。JSONで出力させるためのものです
 構造化の中身はJSONのキーとバリューの列挙となります
カンマをとって要素ごとに改行

    "リスト種類": .geometry.type
    "場所": .properties.location.name
    "住所": .properties.location.address
    "リンク": .properties.google_maps_url
    "緯度": .geometry.coordinates[1]
    "経度": .geometry.coordinates[0]

 キー部分は自分で名前をつけることができますが、日本語にしてみました
 バリューはJSONから取得します
 ③-1でfeaturesを取り出していますので、.geometry.typeというようにキーを辿ってその内容を取り出します
 
 ちょっと小技を必要とするのが緯度軽度です
 .geometry.coordinates[1]や.geometry.coordinates[0]としています
 [n]はn+1番目の配列要素を取り出すという意味です
 上の例でcoordinatesは下記のJSONなので配列の中身を取り出すことができます

    coordinates:[136.6928392,35.0710753]

.coordinates[0]は136.6928392、.coordinates[1]は35.0710753となります

④ >> gmap.txt
テキストデータとして出力します

jqからCSVとして出力する

上記のデータを1行で出力すればOKです

cd /Users/usesrname/Downloads/Takeout/マップ(マイプレイス)/;cat 保存した場所.json| jq -c '.features[] | [.properties.location.name, .properties.location.address, .properties.google_maps_url, .geometry.coordinates[1], .geometry.coordinates[0]]' | tr -d '[]' | >> Gmap.csv

説明です
 jqのオプションの-cが1行で出力するオプションです
 上記③-2を少し変更しています
 [.properties.location.name, .properties.location.address, .properties.google_maps_url, .geometry.coordinates[1], .geometry.coordinates[0]]

 ・外側の構造化をする{}は、配列化をする[]にしています
 ・JSONのバリュー部分のみを出力しています
 ・データの最初と最後に"["、"]"がつくのでtrで削除しています

 あとは出力をCSVとして、Numbersで開ばOKです
 Numbers.appでの編集としては、ヘッダー行をつけるくらいです

雑談

GoogleMapの場所の保存について

 GoogleMapに写真撮影したい場所を登録しているのですが、削除をしておらず、溜まり溜まって2000ポイントを超えてしまいました
当初は星印をつけれるだけでしたが、現在は、下記の4種類となっています
行ってみたい/旅行プラン/お気に入り/スター付き

さらに言うと、上位概念とすてリストという機能があります
・リストはGoogleMapのメニューの『保存済み』からアクセスできます
・上記4つのリストの他に、40個のリストを作成できます
 別の言い方をすると、上記の4カテゴリーはリストのデフォルトです
・各リストに地点が登録でき、リストメニューから編集、マップ表示/非表示、共有/日共有の処理が可能です
・現状、保存した場所.JSONは「スター付き」のみのです
 アクセス方法
GoogleMapの左縦メニュー「保存済み」をクリックするとメニュー一覧が表示されるので、三点メニューをクリック

Googleテイクアウトについて

 地図データ以外にもたくさんのGoogle個人データがテイクアウトできるので
 参考のリンクをみてください(執筆時点で68種類)

 私が利用したもの
 ・GooglePhotoデータ
  容量を浪費していたので、テイクアウトしてAmazonPhotoに移行
 ・GoogleFitデータ
  →昔使っていたウェラブルデバイスと連携した情報が残っていました
  →GoogleFitの日誌がスクロールでしか過去分を見れないので、テイクアウトは役に立ちそう
 ・Googleストアデータ
 →googlePlayでの購入履歴を確認(無駄な課金が。。。)

GoogleMapの保存した場所.jsonはGeoJSONに則っていますね。地点タイプ(point)です。参考にwikipediaのリンクをつけます

参考リンク

 ①jq(YujiOkazawa氏のjpマニュアル日本語訳)
  https://yujiorama.github.io/unofficial-translations/jq/l10n/jp/manual/
 ②とほほのjq入門
  https://www.tohoho-web.com/ex/jq.html
 ③googleデータテイクアウト
  https://takeout.google.com
 ④GeoJSON(ウィキペディア)
  https://ja.wikipedia.org/wiki/GeoJSON

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?