2006/12/16

緯度経度から『標高』を算出するAPIを公開

「緯度経度から○○算出API」シリーズ第二弾(?)ということで、次は『標高』を算出するAPIを公開してみました。

LatLng2Height:::緯度経度から標高算出API

標高の算出には、NASAが無料で公開しているSRTMを利用しています。スペースシャトル「エンデバー」のミッション(2000年2月)で得られたデータから作られたものだそうです。スペースシャトルって打ち上げのシーンが注目されがちですが、宇宙でも色々とやってるんですね・・・

このSRTM、そのデータ粒度にいくつかバリエーションがあるんですが、本APIでは、その中の「SRTM3」というのを使用。これには、陸地部分の緯度経度3秒毎の標高データが格納されていて、地球全域をカバーしています。3秒ということは、だいたい90メートル間隔くらい。残念ながら今回は、レンタルサーバのストレージ容量制限のため、対象領域を日本だけとしました。
(そのうち、日本以外はもう少し粒度の粗いデータを使うことで、対象領域を地球全域にしようとも思ってます。)

こんなリッチなデータが自由に使えるのは非常に喜ばしいんですが、とても重大な問題が・・・
それは、このデータで得られる標高の値が、日本で正式な測量成果として用いられている標高の値と、だいぶずれてしまっているということ。これには、センサ自体の誤差などの原因もあるとは思いますが、もっとも大きな原因(と思われるの)は、参照しているジオイドモデル(標高を0とする面)が違う(SRTMではWGS84/EGM96、日本の標高ではJGEOID2000)ということ。どうやら、最大で50mほどずれてしまうようです。この辺はどうぞご容赦を・・・

そもそも、日本国内の標高を得るために、わざわざNASAのデータを使う破目に陥ってるのは何故か?
それは、国土地理院のデータジオイドも含めて)を使うためには、面倒な手続きが必要だったり、制限が色々とあるためです。もっと自由に使えるようにしてくれればいいのになぁ・・・ぜひ、規制緩和して欲しいです。

距離算出APIを若干修正

LatLng2Distance:::緯度経度から距離算出API」を若干修正。
修正箇所は以下の二点。
  • 返される距離は小数点以下二桁まで
  • JSONPの出力内容をXMLのものと整合
以上、備忘録まで。

2006/12/12

距離算出の精度改善

距離算出APIですが、距離の算出精度を若干改善しました。
ここで説明されている「Lambert-Andoyer Method」を利用しています。ま、ほとんど大差ないです。
ついでにデザインなど若干修正。カウンタは自動更新をやめました。

2006/12/11

『緯度経度から距離算出API』利用回数カウンタを設置

件のページ右上に、APIの利用回数を表示するようにしてみました。
これにもJSONPを使ってます。こんな感じ
とりあえず、5秒おきにカウンタを更新するように設定。誰かが使ってると数字が増えていくのが見えたり、、、するといいな(笑

2006/12/10

『緯度経度から距離算出API』を公開

JSONPのお勉強のつもりで、簡単なAPIを作って公開してみました。
LatLng2Distance:::緯度経度から距離算出
機能が単純すぎてわざわざAPI化する必要はないものなんですが、作ってて結構楽しかったので自分的には満足です。
そもそも、恥ずかしながら、JSONPってものに触れるの初体験。「Dynamic Script Tag」の仕組み、とても新鮮でした。面白いですね。AJAXとうまく使い分けられれば、「できる子」っぽい、かな?
# GoogleMapsAPIにもだいぶ慣れてきました。
# そろそろちゃんとしたもの作ってみたい。んだけど、時間作るの難しい・・・

2006/12/09

道の駅分布図を作ってみた

郵便番号を緯度経度に変換してプロットすると日本地図みたいになる、っていう以下のネタを見かけて、似たようなことをやってみました。

作ってみたのは、「道の駅」の分布図。バイクに乗ってた関係で、道の駅に絡めて何かやってみたいなぁ、と思ってたので、いいきっかけになりました。

現在、道の駅は全国に845箇所あるそうで、まずはその元データを
全国 道の駅一覧 -「道の駅」
からダウンロード。
このデータには省略された住所と電話番号しか入ってないので、電話番号から住所を検索できるサイトで、ちゃんとした住所を取得。
無料電話案内 104.com
住所から緯度経度への変換には、以下の二つのサービスを使ってみました。
Geocoding API - 住所から緯度経度を検索
Geocoding Tools & Utilities - 位置参照技術を用いたツールとユーティリティ
以上のもろもろをやってくれるスクリプトをPHPで書いて、出来上がった845件分の緯度経度を、単純に座標上にマッピングしてみると・・・
道の駅分布図
ちゃんと日本地図っぽいものができあがりました。なかなか面白い。
せっかく作ったデータ、これだけでほっとくのももったいないので、GoogleMapsにのっけたりしてもう少し遊んでみようと思います。

2006/07/28

uribouMAPSをちょいと改良

uribouMAPSを少し改良。
AJAXにつきものの(?)、通信中であることを明示する仕組みと、InfoWindowから、zoom in、zoom outできる仕組みを追加してみました。

2006/07/27

AJAX体験

ベタですが、Google Maps APIGoogle AJAX Search APIprototype.jsを使って、地図上にトラックバックを打てるサイトを作ってみました。

[[uribouMAPS]]

いわゆるAJAX的なプログラミングは初めてだったんですが、なかなか面白い。サーバ側のXML入出力やトラックバック受付の部分はPHP、ブラウザ側はPHPとJavascriptで実装してます。今回のようにAPIやライブラリを使うことで、そこそこ面白げなものが結構簡単に実現してしまうんですね。細かいところで、GoogleMapsのイベント処理周りなんかは、ドキュメントに出てないところで試行錯誤する破目に陥りましたが、、、
それにしても、APIなどは使ってますが、0からアプリ書き上げたの久しぶりだったので、ちょっと楽しかったです。とりあえず「beta」版ということにしておいて、まだまだ色々試してみる予定。まずは、「ルート」の登録、「ルート」へのトラックバック、の実装を考えてます。