農研機構の簡易逆ジオコーディングサービスがサービス終了
同タイトルで3年ほど前にこんな記事を投稿していた。
このスクリプトを書くきっかけは、友人が FileMakerで写真のGPS情報から住所を調べるようにしたいという依頼があり、APIを調べている中で作成したものだった。
その友人から、動かなくなった!との連絡があって、早速サイトに行ってみると
AGINFO ウェブサイトは廃止いたしました
ということだった。
代替え候補の Web API を探す
探すといってもググるだけ。ChatGPT に聞くまでもない。
候補としたのは次の2つ。
. Google Maps Platform の ジオコーダ API
. Yahoo! の ジオコーダ API
Google Maps API は一応、有償ではあるが、個人で通常の使い方であれば無料の範囲内で使えるし、取得できる情報も多い。
Yahoo! API は、基本、無償で使える。
ということで、両方を試してみた。
ソースコード
Google Maps Platform API
RevGeoCode_Google.scpt
// 緯度、軽度から住所を求める
// Google Maps のサービスを利用
// 戻り値は JSON 形式
var app = Application.currentApplication()
app.includeStandardAdditions = true
const baseURL = '"https://maps.googleapis.com/maps/api/geocode/json?language=ja&'
const API_KEY = "<YOUR_API_KEY>"
var latlon = app.displayDialog("緯度,経度を入力", {defaultAnswer: ""}).textReturned
var URL = baseURL + 'latlng=' + latlon + '&key=' + API_KEY + '"'
var ans = app.doShellScript('curl -s ' + URL)
var jsonData = JSON.parse(ans)
var adrs = ''
if (jsonData['status'] != 'OK') app.displayDialog("データを取得できませんでした。")
else {
var adrs = jsonData['results'][0]['formatted_address']
app.displayDialog(latlon + 'の住所\r' + adrs + '\nをクリップボードにコピーします。')
app.setTheClipboardTo(adrs)
}
<YOUR_API_KEY> のところは、Google から取得した API-Key に書き換えてご利用ください。
Yahoo! API
RevGeocodeYahoo.scpt
// 緯度、軽度から住所を求める
// Yahoo! のジオコーダサービスを利用
// 戻り値は JSON 形式
var app = Application.currentApplication()
app.includeStandardAdditions = true
const baseURL = '"https://map.yahooapis.jp/geoapi/V1/reverseGeoCoder?output=json&'
const APP_ID = '<YOUR_APP_ID>'
var latlon = app.displayDialog("緯度,経度を入力", {defaultAnswer: ""}).textReturned
var lat = latlon.split(',')[0]
var lon = latlon.split(',')[1]
var URL = baseURL + 'lat=' + lat + '\&lon=' + lon + '&appid=' + APP_ID + '"'
var ans = app.doShellScript('curl -s ' + URL)
app.displayDialog(URL)
var jsonData = JSON.parse(ans)
var adrs = ''
if (jsonData['ResultInfo']['Count'] == 0 ) app.displayDialog("データを取得できませんでした。")
else {
var adrs = jsonData['Feature'][0]['Property']['Address']
app.displayDialog(lat + ', ' + lon + 'の住所\r' + adrs + '\nをクリップボードにコピーします。')
app.setTheClipboardTo(adrs)
}
<YOUR_APP_ID> のところは,Yahoo! で取得した自分の APP-ID に書き換えてご利用ください。
コメント歓迎
お気づきの点や、誤りの指摘など歓迎します。