はじめに
地名や住所から、それらが指す地点の地理座標を算出することを、ジオコーディングと言います。こちらを可能にするGeocoding APIというものがあります。
こちらのAPIを使うと、地名や住所からそれらが指す地点の地理座標を算出するだけではなく、逆に地理座標から住所を算出することも可能です。普通にこのAPIを使おうとすると、Google Cloudのプロジェクトを用意したりなど、少し面倒な部分があります。Google Apps Script(以後、GAS)を使うと、その面倒なことをせずにジオコーディングを行うことができます。今回は、GASでジオコーディングをやる紹介したいと思います。
GASでジオコーディングをやってみた
地名や住所から緯度経度を取得する
まずは、地名から緯度経度を取得してみたいと思います。Maps.newGeocoder().geocode('地名もしくは住所')
で、地名の指す地点の情報を取得できます。今回は、Maps.newGeocoder().setLanguage('ja').geocode('地名もしくは住所')
というふうにすることで、取得する情報の言語を指定しています。
名古屋城を例にして、実際にジオコーディングをみてみます。
const testGeocoding = () => {
// 名古屋城という地名から、その地点の情報を取得する
const res = Maps.newGeocoder().setLanguage('ja').geocode('名古屋城');
// 緯度経度の情報を取り出す
const lat = res.results[0].geometry.location.lat;
const lng = res.results[0].geometry.location.lng;
console.log('緯度:%s, 経度:%s', lat, lng); // => 緯度:35.1847501, 経度:136.8996883
// 地名から住所を取り出すことも可能
const formattedAddress = res.results[0].formatted_address;
console.log(address); // => 日本、〒460-0031 愛知県名古屋市中区本丸1−1
}
緯度経度から住所を取得する
先ほどは地名や住所から緯度経度を取得しましたが、その逆で緯度経度から住所を取得することが可能です。やり方は先ほどとほとんど同じで、Maps.newGeocoder().setLanguage('ja').reverseGeocode(緯度, 経度)
という形で、住所を取得できます。
const testReverseGeocoding = () => {
// 名古屋城という地名から、その地点の情報を取得する
const res = Maps.newGeocoder().setLanguage('ja').reverseGeocode(35.1847501, 136.8996883);
console.log(res.results[0].formatted_address); // => 日本、〒460-0031 愛知県名古屋市中区本丸1−1
}
さいごに
今回は、GASでジオコーディングを行なってみました。この記事ではジオコーディングのやり方の説明のため、簡単な例のみの紹介になりましたが、ジオコーディング単体ではあまり意味を持たないと思っています。今後、ジオコーディングを使った何かしらの事例を紹介できればと思います。