現実世界の情報のひとつ「住所」。
人や建物の場所を把握するのに便利な情報ではあり、Excelやスプレッドシートやデータベースなどで管理されていることもある。
しかし住所はテキスト情報なので地図上のどこなのかわかりづらい。
システム的に場所を扱うには緯度経度情報の方が扱いやすい。
では住所から緯度経度を知るにはどうしたらいいのか。
スプレッドシートで管理されている住所情報を緯度経度情報に変換することはできるのか。
そこで今回はGoogleスプレッドシートで住所から緯度経度を取得する方法について紹介する。
この記事を書いている人
記事を読むメリット
Googleスプレッドシートで住所から緯度経度を取得する方法がわかり、位置情報データの扱いが得意になる。
Googleスプレッドシートで住所から緯度経度を取得する方法
Googleスプレッドシートで住所から緯度経度を取得するにはどうしたらいいのか。
シート上の住所を使って緯度経度を取得するのに便利な方法はコレ。
ココがポイント
- APIに住所を投げて緯度経度を取得する
スプレッドシートには住所を緯度経度に変換する機能は無い。
しかし住所から緯度経度を出せるサービスは存在する。
であれば外部のサービスに「住所を渡して緯度経度を返してくれる機能」があれば結果を取得して表示できる。
住所から緯度経度に変換するサービス
住所から緯度経度に変換するサービスはある。
有名どころはGoogle Mapsだろう。
しかしAPIキーの設定など設定があるので、今回は別のAPIを紹介する。
今回紹介するのは国土地理院のAPI。
URLパラメータの q=
の後ろに住所テキストを設定すると、jsonの結果を返してくれる。
↑のURLにアクセスすると↓のような結果が得られる。
結果
[{"geometry":{"coordinates":[139.745468,35.658649],"type":"Point"},"type":"Feature","properties":{"addressCode":"","title":"東京都港区芝公園四丁目2番"}}]
"coordinates":[139.745468,35.658649]
の部分が緯度経度情報となる。
ではこの結果をスプレッドシートに反映してみよう。
APIの結果をスプレッドシートに反映する方法
APIの結果をスプレッドシートに反映するには以下の手順で行う。
ポイント
順に説明する。
データ準備
まずはデータ準備ということで、以下のように適当に住所リストを用意する。
東京都港区芝公園4丁目2−8
東京都墨田区押上1丁目1−2
東京都台東区浅草2-3-1
APIに投げるURLの作成
住所が用意できたら、APIに渡すURLの形に加工する。
以下の式をB列に設定するとURLとなる。
="https://msearch.gsi.go.jp/address-search/AddressSearch?q=" & A2
APIに渡すURL |
---|
これを読み込ませたいが、JSONをスプレッドシートに取り込む機能が必要になる。
JSONを読み込むユーザー定義関数をスプレッドシートに組み込む
ここでシートへの入力から一旦離れて、JSONをスプレッドシートに取り込む機能を追加する。
ImportJSON
という関数を作ってくれた方がいるので、それを使わせてもらう。
まず以下のページでコードをコピーして、
スプレッドシートのメニューから 拡張機能 -> Apps Script
を選んでApps Scriptのページを開く。
拡張機能 -> Apps Script |
---|
そしてコピーした中身を貼り付けて保存する。
Apps Script保存 |
---|
これで ImportJSON
を関数として利用可能になった。
APIの結果JSONを読み込む
ImportJSON
が関数として利用可能になったので使って緯度経度情報を抽出する。
今度は以下の式をC列に設定する。
=ImportJSON(B2, "/geometry/coordinates", "noInherit,noTruncate,noHeaders")
2つめの引数 "/geometry/coordinates"
はクエリであり、抽出する対象を緯度経度(coordinates)に絞っている。
2つめの引数 "noInherit,noTruncate,noHeaders"
はオプション設定で、ヘッダーなど出力しないようにしている。
結果としては以下のようになる。
ImportJSONの結果 |
---|
緯度経度を抽出できたが緯度と経度が結合してしまっているので、分離する必要がある。
カンマ区切り緯度経度を分割
緯度と経度が結合してしまっているので、分離するには split()
を用いる。
D列に以下の数式を入力する
=SPLIT(C2,",",true,true)
するとカンマ ,
を境に値が分割される。
これで住所から緯度経度を取得することができた。
まとめ
今回はGoogleスプレッドシートで住所から緯度経度を取得する方法について解説した。
シート上の住所を使って緯度経度を取得するのに便利な方法はコレ。
ココがポイント
- APIに住所を投げて緯度経度を取得する
有名なのは国土地理院のAPIで、APIの結果をシートに反映するには以下の手順で行う。
手順
ImportXML
の関数がデフォルトで用意されているのでそちらを使うといいですね他にもスプレッドシートの記事もあるので、もし気になるものがあれば見てみて欲しい。