GAS 緯度、経度から住所を求める逆 GeoCoding

株式会社リュディアです。今回は知り合いから頼まれてプログラミングした例を忘備録としてまとめておきます。緯度、経度から住所を調べたいという要望に応えたものです。

入力は以下のようなものでした。A列はインデクス、B列は場所を表現するキーワード、C列が緯度、D列が経度となっています。A, B 列は本質的ではなく、C列、D列から住所を調べて E 列に書き込むプログラミングになります。

画像1

一般に住所から緯度、経度を求めることを Geo Coding、ジオコーディングと言います。逆に緯度、経度から住所を求めることを逆 Geo Coding, Reverse Geo Coding と呼びます。今回のプログラミングは後者に該当します。環境は Google スプレッドシート上での GAS によるプログラミングになります。

では、早速見ていきましょう。以下の GAS によるプログラム例を見てください。これを Google スプレッドシートのスクリプトエディタにペーストするだけで実行可能です。

function reverseGeoCoding() {

 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');

 var latitude_column = 3;          //緯度を設定する列
 var longitude_column = 4;         //経度を設定する列
 var formatted_address_column = 5; //検索した住所が書き込まれる列

 var lastrow = sheet.getLastRow();    // 最終行を取得
 var lastcol = sheet.getLastColumn(); // 最終列を取得

 var range = sheet.getRange(1, 1, lastrow, lastcol + 1); // 情報をオンメモリに保持
 var values = range.getValues()                          // 情報をオンメモリに保持

 var geocoder = Maps.newGeocoder();

 geocoder.setLanguage('ja'); //日本の住所に設定

 for (var i=0; i < lastrow; i++) {

   var latitude = values[i][latitude_column-1];   //C列の緯度を取得
   var longitude = values[i][longitude_column-1]; //D列の経度を取得

   var response = geocoder.reverseGeocode(latitude, longitude); // 緯度、経度から情報を取得

   // console.log(response)

   var formatted_address = response.results[0].formatted_address;
   // いろいろな情報が得られるので、そのうちのインデクス0 の formatted_address の情報を取得

   values[i][formatted_address_column-1] = formatted_address;
   // オンメモリの E 列に得られた住所を追記
 }
 range.setValues(values); スプレッドシートに書き戻し

}

GAS のプログラミングについては以前にまとめている以下のマガジン、特に Spreadsheet を扱う部分を読んでいただければわかると思います。

ポイントはコメントアウトしている console.log(response) の部分です。まずこの部分のコメントアウトを外して得られる情報を見てみてください。1 つの緯度、経度の情報から多くの情報が得られていることがわかります。この情報の中から 1 つめの formatted_address を得たかったので response の中の result[0] の formatted_address にアクセスしています。formatted_address は複数個出力されるので 1 つ目、つまり result[0] にアクセスする必要があります。

ちなみに 2021, 5/5 段階で 1日あたり 1000件の問い合わせで上限にあたるようです。数が多い方はご注意ください。この上限はたまに変わるようですので随時確認を行ってください。

今回は緯度、経度から住所を得るために Google のサービスを利用する方法についてまとめてみました。

では、ごきげんよう。


この記事が気に入ったらサポートをしてみませんか?