Excelで簡単にジオコーディングする方法プログラミング知識不要)
ジオコーディングとは
住所から緯度・経度を求める方法を「ジオコーディング(Geocording)」と言います。例えば、東京タワーを緯度・経度に変換すると「緯度:35.6585805 経度:139.7454329」となります。逆に緯度・経度から住所を求めることを「逆ジオコーディング」又は「リバースジオコーディング」と言います。
住所表記だと田舎や広い場所など具体的な場所をピンポイントに指定することは難しいです。しかし、緯度・経度で伝えることによってGoogle mapや機械などは的確な場所を認識することができるのです。(人間相手だったら、住所表記の方が便利ですけどね。)
今回はGoogle Maps Geocoding APIとExcelだけを使って簡単にジオコーディングする方法を紹介します。複雑なプログラミング知識は必要ありません。
ジオコーディングを行うAPIはGoogle Maps Geocoding API 以外にもYahoo!ジオコーダAPIなどがありますが、Google Maps Geocoding APIは他のAPIに比べ「住所」以外にも「施設名称」でジオコーディングできるので、とても便利です。
今回はGoogle Maps Geocoding APIを使ったジオコーディングの方法を紹介します。
使用する機材の環境は以下です。
- Windows10
- Excel (Microsoft Office Home and Business 2019)
手順
1. 項目名を記入
1行目にわかりやすいように以下の項目名を記入します。
- A1:住所・名称
- B1:URL
- C1:XML
- D1:緯度
- E1:経度
- F1:住所
- G1:状態
- H1:精度
2. 住所または施設名称を記入
A列の2行目以降に住所または施設名称を記入します。
この説明ではわかりやすいように住所と名称のどちらも混ぜて記入しました。
- 東京都渋谷区猿楽町17−5
- 東京タワー
- 太陽の塔
- 東京都台東区竜泉3丁目18−4
- 東京スカイツリー
- 兵庫県神戸市中央区脇浜海岸通1丁目1−1
3. URLを記入
B2のセルに
= “https://maps.googleapis.com/maps/api/geocode/xml?address=” & A2
と記入します。
これは住所を行で順々にジオコーディングするためにジオコーディングのURLの「https://maps.googleapis.com/maps/api/geocode/xml?address=」とジオコーディングしたい住所・名称が記載されているセル「A2」を合体する式です。
4. XMLを取得
C2のセルに
= WEBSERVICE(B2)
と記入します。
これはB2のURLにアクセスして緯度・経度が載っているXMLを取得する関数です。成功しているとC2のセルにはXMLの文字が長々と入っていると思います。
5. 緯度・経度を取得
D2のセルに
=FILTERXML(C2,”//lat”)
E2のセルに
=FILTERXML(C2,”//lng”)
と記入します。
これは先ほど取得したC2のセルにあるXMLから緯度が記載されたタグ「lat」と経度が記載されたタグ「lng」から緯度・経度を抽出します。
6. 住所を取得
F2のセルに
=FILTERXML(C2,”//formatted_address”)
と記入します。
ジオコーディングでは緯度・経度だけでなく住所も取得することができます。住所からジオコーディングした場合はあまり意味はないですが、施設名称からジオコーディングした場合はその施設の住所も取得することすることができるのでとても便利です。
しかし、なぜかExcelでジオコーディングすると英語になってしまいます。。。
7. ジオコーディングの状態を表示
G2のセルに
=FILTERXML(C2,”//status”)
と記入します。
これは住所を正しくジオコーディングできたか表示でわかります。
表示は主に以下の3種類あります。
- OK:意味―正常にジオコーディングできている。
- ZERO_RESULTS:意味―正常にジオコーディングされたが、緯度・経度が見つからない。
- OVER_QUERY_LIMIT:意味―1日のジオコーディング数の上限を超えている。
8. 緯度・経度の精度を表示
H2のセルに
=FILTERXML(C2,”//location_type”)
と記入します。
これは取得した位置情報がどこまで正しく取得できているのかがわかります。
表示は主に以下の3種類あります。
- ROOFTOP:意味―正確な位置情報が取得できている。
- APPROXIMATE:意味―おおよその位置情報が取得できている。例えば、都道府県までしか取得できていないなど。
- GEOMETRIC_CENTER:意味―通りや領域の位置情報を取得している。例えば、区画単位で位置を取得したなど。
9. 行をコピーして残りを埋める
Excelのオートフィルを使って残りの行をコピーして埋めると完成です。
取得できた緯度・経度
住所・名称 | 緯度 | 経度 |
---|---|---|
東京都渋谷区猿楽町17−5 | 35.6488704 | 139.6997597 |
東京タワー | 35.6585805 | 139.7454329 |
太陽の塔 | 34.8095271 | 135.5324145 |
東京都台東区竜泉3丁目18−4 | 35.7255813 | 139.7928106 |
東京スカイツリー | 35.7100627 | 139.8107004 |
兵庫県神戸市中央区脇浜海岸通1丁目1−1 | 34.6992492 | 135.2178534 |
まとめ
手順を追って説明してきましたが、この方法を使うとExcelしか使わないので、プログラミングをしたことがない人でも簡単に緯度・経度を知ることができたと思います。
ちなみに注意点としてはGoogle Maps Geocoding APIを無料で利用しようとすると1日2500件までしかジオコーディングできないので注意が必要です。2500件以上で「住所」をジオコーディングする場合はGoogle Maps Geocoding APIより利用条件が緩いYahoo!ジオコーダAPIがおススメです。
また、Mac for Office 2011ではできなかったので、WindowsのMicrosoft Office 2013以上で試してみてください。
こんにちは。ワクワクしながら試してみましたが、Google Maps Platform APIs へ行ってAPI Keyを取得せよと。Request deniedされました。簡単じゃないですね。でも、とても参考にありました。ありがとうございました。