国土地理院の標高API

国土地理院のWebサービスである標高APIは、緯度経度を送るとその地点の標高を返してくれる便利なサービス。

http://portal.cyberjapan.jp/portalsite/info/dem.html

Google Maps APIでも標高を取得できますが、日本国内なら国土地理院のデータがより確実でしょう。

JavaScriptで取得する場合は次のようなコードで取得できます。
関数に緯度と経度を渡すと、標高とデータソースが取得できます。

function getAltitude(lon, lat){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState === 4 && xhr.status === 200){
var json_data = eval( '('+xhr.responseText +')');
var txt = xhr.responseText + '\n\n';
txt += '標高:' + json_data.elevation + 'm\n';
txt += 'データソース:' + json_data.hsrc + '\n';
txt += '経度:' + lon + '\n';
txt += '緯度:' + lat + '\n';
var result = document.getElementById('data_result');
result.value = txt;
}
};
var url = "http://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=" + lon + "&lat=" + lat +"&outtype=JSON";
xhr.open('GET', url);
xhr.send(null);
};


実際に試したい方はこちら

※現在このサンプルは動きません。CORSによる制限と思われます。
ただし、IEでローカルで実行した場合は、なぜか取得できます。

この記事へのコメント

Too Hot
2015年07月24日 19:20
サンプル動きませんね
MottoMotto
2015年11月28日 11:08
コードをコピペしてみたらIE11で動きました。
またDelphiのWebBrowserでも動きました。
更にDelphiからGetAltitude(Lon,Lat)を送っても動きました。
Delphiで表示された地理院の地図をクリックして精度の高い標高を取得するソフトを作ろうと探していたので大変参考になりました。でも出てきた標高をDelphiで受け取る方法がわからずにいます。(WebBrowser1.CommandStateChangeが反応しない)
もしも簡単にできるものであれば教えてください。
2015年11月29日 22:21
Delphiは使ったこと内ないのですが、URLDownloadToFileなどで直接ダウンロードする感じでできるのではないでしょうか。
MottoMotto
2015年11月30日 14:14
大変ありがとうございます。 アドバイス通りで大成功でした。
ここしばらくJavaScriptで何とか標高が取得できるサンプルなどを探していましたが貴サイトに出会えて本当に助かりました。 お礼まで
けも
2015年12月22日 23:36
はじめまして。
大体同じコード書いてても自分のは動かないので何でかと思ったけど、多分ドキュメントモード次第ですね。

この記事へのトラックバック