주소를 지리적 좌표로 변환하는 도구를 만들었습니다(Google 지도+Google 스프레드시트+Google Geocoding API)
목적
Google Apps Script 및 Google Maps Platform 공부를 위해 Google 스프레드시트와 Google Maps Platform 의 Geocoding API 을 사용하여 주소를 지리적 좌표로 변환하는 도구를 작성해 보았습니다.
<2019/09/27 추가>
※덧붙여 Geocoding API는, 수천건 정도~최대 4만건의 주소 데이터이면, 1개월의 무료 프레임 내에서 놀 수 있습니다.
※4만건을 넘는 대량의 주소 데이터를 지오코딩하는 경우는, 도쿄대학 공간정보과학연구센터가 오픈소스로서 제공하는 지오코더 DAMS(Distributed Address Matching System) 등의 온프레미스인 환경에서 실행하는 방법이 있습니다.
Geocoding API
Google Apps Script
실행 환경
이 기사에서는 Google Apps Script를 사용합니다.
코드를 실행하려면 Google Maps Platform의 API 키가 필요합니다.
※Google Maps Platform API 키의 취득・발행에 대해서는 이쪽을 참조해 주세요.
htps //w w. 젠린 다다코 m. 네 t/부시넷 s/g마 p사피/아피_케 y/그리고 x. HTML
전제 조건
주소
지리적 좌표로 변환하는 주소는, 미치노에키 133역(중부 지방)을 대상으로 했습니다.
미치노에키
실행 방법
입력 설정
주소
지리적 좌표로 변환하는 주소는, 미치노에키 133역(중부 지방)을 대상으로 했습니다.
미치노에키
실행 방법
입력 설정
실행
gas1.gs
//基本的な設定
//**********************************************************************************************
// APIKEYを設定する
var APIKEY = "APIキーを入力する" // APIキー
//**********************************************************************************************
var Address; // 住所
var ArrAddressLst; // 住所リスト
var LastRow; // 最終行
//**********************************************************************************************
// Main関数
// GeocodingAPIを実行する関数
//**********************************************************************************************
function Main() {
// 住所を設定する
setaddress();
// 戻り値を格納する配列
var ArrRes = [];
for (var i = 0; i <= LastRow-2; i++) {
// GeocodingAPI関数による住所と緯度経度の取得
var data = GeocodingAPI(ArrAddressLst[i][0], APIKEY);
// 戻り値を配列に格納する
ArrRes[i] = [];
ArrRes[i][0] = data[0]; // formatted_address
ArrRes[i][1] = data[1]; // lat
ArrRes[i][2] = data[2]; // lng
}
// 結果をスプレッドシートに出力する
var bk = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得する
var sh = bk.getSheetByName('address'); // addressシートを取得する
for (var i = 0; i <= LastRow-2; i++) {
// 値をセルに入力する
sh.getRange(i + 2, 5).setValue(ArrRes[i][0]); // formatted_address
sh.getRange(i + 2, 6).setValue(ArrRes[i][1]); // lat
sh.getRange(i + 2, 7).setValue(ArrRes[i][2]); // lng
}
}
//**********************************************************************************************
// 住所を設定する関数
//**********************************************************************************************
function setaddress() {
// addressシートの内容を配列に格納する
var bk = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得する
var sh = bk.getSheetByName('address'); // addressシートを取得する
LastRow = sh.getLastRow(); // 最終行を取得する
// var colLst = sh.getLastColumn(); // 最終列を取得する
Logger.log(LastRow);
// データを配列に格納する
// Sheetオブジェクト.getRange(行番号, 列番号, 行数, 列数)
ArrAddressLst = sh.getRange(2, 2, LastRow-1, 1).getValues();
Logger.log(ArrAddressLst);
}
//**********************************************************************************************
// GeocodingAPI関数
//**********************************************************************************************
function GeocodingAPI(Address, APIKEY){
// URLを作成する
var url = "https://maps.googleapis.com/maps/api/geocode/json?language=ja" +
"&address=" + Address +
"&sensor=false" +
"&key=" + APIKEY;
Logger.log(url);
// HTTPリクエストを行う
var res = UrlFetchApp.fetch(url,{muteHttpExceptions:true});
Logger.log(res);
// HTTPレスポンスを文字列として取得、JSON形式の文字列を解析してオブジェクトとして返す
var json = JSON.parse(res.getContentText());
Logger.log(json);
if (json["status"] == "OK") {
var json_formatted_address = json["results"][0]["formatted_address"];
var json_lat = json["results"][0]["geometry"]["location"]["lat"];
var json_lng = json["results"][0]["geometry"]["location"]["lng"];
// 「日本、」「郵便番号」を除外
var formatted_address = json_formatted_address.split(' ');
return [formatted_address[1],json_lat,json_lng];
}
}
실행 결과
유의사항
참고서
자세히 알아보기! GoogleAppsScript 완전 입문 ~ GoogleApps & G Suite의 최신 프로그래밍 가이드 ~
개발자 가이드(Geocoding API)
Reference
이 문제에 관하여(주소를 지리적 좌표로 변환하는 도구를 만들었습니다(Google 지도+Google 스프레드시트+Google Geocoding API)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/syanseto/items/f6fef91a18f3d0a22da2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(주소를 지리적 좌표로 변환하는 도구를 만들었습니다(Google 지도+Google 스프레드시트+Google Geocoding API)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/syanseto/items/f6fef91a18f3d0a22da2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)