GASでリバースジオコーディングしてみた
今回はタイトル通り、
GASを使ってリバースジオコーディングする方法を紹介します!
GoogleMapsはクレジットカードが手間だったのでこの方法を試してみました。
以下様々なGASの記事を紹介してます!
https://bzbot.work/
紹介記事
今回紹介している記事は以下です!
https://bzbot.work/2019/02/22/gas-reversegeocoder/
実際のコード
GAS
//*** http://express.heartrails.com/api.html 路線
//*** http://express.heartrails.com/api/xml?method=getStations&x=139.645683&y=35.443591 sampleAPIレスポンス
//*** http://geoapi.heartrails.com/api.html 緯度経度
//*** http://geoapi.heartrails.com/api/xml?method=searchByGeoLocation&x=139.77456498&y=35.68381981 sampleAPIレスポンス
var sheet = SpreadsheetApp.getActiveSheet();
function getGeocode(){
var getflg = sheet.getRange(2,2).getValue();
var test = Browser.msgBox("「" + getflg + "」で実行しますか?", "続けますか", Browser.Buttons.OK_CANCEL);
if (test == 'ok') {
//緯度経度の最終行を取得して、配列で取得
var lr = sheet.getLastRow();
var y = sheet.getRange(4, 1, lr).getValues();
var x = sheet.getRange(4, 2, lr).getValues();
var getflg = sheet.getRange(2,2).getValue();
for(var i = 0; i <= lr-4; i++) {
var lat = y[i];
var lon = x[i];
Logger.log(lat);
Logger.log(lon);
//分岐処理(エリアか駅情報か)
if (getflg === "エリア"){
//エリア取得Call(引数に緯度経度をトス) ;
getArea(lat,lon,i)
}else{
//駅情報取得Call(引数に緯度経度をトス)
getStation(lat,lon,i);
}
}
if (test == 'cancel') {
Browser.msgBox("キャンセルを押しました");
}
}
function getArea(y,x,i) {
var url = "http://geoapi.heartrails.com/api/xml?method=searchByGeoLocation&x="+x+"&y="+y;
var response = UrlFetchApp.fetch(url);
// Logger.log(response.getContentText()); //レスポンス確認用
var xml = XmlService.parse(response.getContentText());
var entries = xml.getRootElement().getChildren("location");
var err = xml.getRootElement().getChildren("error");
var err_num = Number(err);
if (err_num === 0.0){
sheet.getRange(4 + i,3).setValue(entries[0].getChildText("prefecture"));
sheet.getRange(4 + i,4).setValue(entries[0].getChildText("city"));
sheet.getRange(4 + i,5).setValue(entries[0].getChildText("town"));
}
}
function getStation(y,x,i) {
var url = "http://express.heartrails.com/api/xml?method=getStations&x="+x+"&y="+y;
var response = UrlFetchApp.fetch(url);
// Logger.log(response.getContentText()); //レスポンス確認用
// 名前空間
var namespace = XmlService.getNamespace("urn:heartrails:express");
var xml = XmlService.parse(response.getContentText());
var entries = xml.getRootElement().getChildren("station",namespace);
var err_num = Number(entries);
if (err_num !== 0.0){
sheet.getRange(4 + i,6).setValue(entries[0].getChildText("name",namespace));
sheet.getRange(4 + i,7).setValue(entries[0].getChildText("line",namespace));
sheet.getRange(4 + i,8).setValue(entries[0].getChildText("distance",namespace));
}
}
}
Author And Source
この問題について(GASでリバースジオコーディングしてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Bzbot/items/d1556db9fc34826905d3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .