この記事には訂正版があります。そちらもご覧ください。
今日は、以前作成した「緯度経度情報からGooglemap上にその地点をプロットする」プログラムについて紹介したいと思います。
1.原則
GoogleMap はメルカトル図法によって作図された世界地図を基準に作ってあります。
詳しくは参考にさせていただいたサイトをご覧ください。
★ GoogleMapの原理
世界は1枚の画像から : グーグルマップのしくみを探る(1) » Gammasoft Inc.
★メルカトル図法について
メルカトル図法 - Wikipedia
尚、今回はメルカトル図法上y座標に等長緯度を使用しています。
2.やり方
A. マップ上に表示したい地点の緯度経度を取得し、それをメルカトル座標に変換する。
B. Googleの「Static Maps API V2」を使用してプロットしてほしい地点付近の地図を
取得する。
本当はGoogle Maps API とか使ってオンラインで地図を取得するのがスマートなん
ですが、移動型ロボットにのせるということと、C言語でプログラムを書きたいなど
の理由でオフライン作業で行うことにしました。
今後、ロボットがオンラインになるかもしれないので、何かいい方法があれば
是非教えてくださいm(_ _)m
C. 取得した地図の中心緯度経度をメルカトル座標に変換し、メルカトル座標系で
x,y座標それぞれ地図の中心からの距離を測る。
D. Cで求めた距離をピクセル単位に変換してプロットの中心座標を求める。
E. 最後にOpenCVを使って地図上にプロットしてます。
3.「2.やり方」で参考にしたサイトやリファレンス
★Static Maps API V2
Static Maps API V2 デベロッパー ガイド
★OpenCV 2.2
OpenCV 2.2 C リファレンス
4.プロットした画像
黄色(中心点):(33.894048,130.839786)
赤色:(33.894449,130.840036)
今回はこんな感じです。
これを元に移動型ロボットの現在位置をリアルタイムで地図上で表示してくれる
プログラムを作っていきたいと思います。
0 件のコメント:
コメントを投稿