2013年6月28日金曜日

OpenCVを使った緯度経度のGoogleMap上へのプロット

この記事には訂正版があります。そちらもご覧ください。

今日は、以前作成した「緯度経度情報から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 件のコメント:

コメントを投稿