2010年6月9日水曜日

60進の緯度経度情報を10進緯度経度へ

GPSから得られるGPGGAセンテンスの緯度経度情報は度分60進法表記で表されています。
また独特のフォーマットなので多少の変換が必要です

GPGGAの緯度経度フォーマット
緯度経度のデータの標記 dddmm.mmmm
といった形式です。桁数は受信機によって違うかもしれません。
小数点から前に数えて3文字目以上の数字が「度」をあらわし2文字目から後が小数点を含めて「分」です。
この表記は60進法なので、分の部分を60で割り算をして度に変換し、度の部分に足してやると10進数で緯度経度を単位を度で表したことになります。変換の流れをC#プログラム風に書くと

double a = 3631.9737;//aにGPSの緯度経度データを代入
int x = (int)(a / 100);//度の成分をxに取りだす。
a = ( a / 100 - (double)x ) *100 / 60;//分を度に変換
a = (double)x + a;//度成分を足して変換終了

うえの流れは変数の型の考えを取り入れているので数学的にはちんぷんかんぷんかもしれません。小数のある実数を整数型の変数(ここではx)にいれると整数部分だけが残ります。
また(int)という表現はキャストと言って(int)の後にある演算結果を整数型に変換するという意味です。()の中に必要な型を入れることによって任意の型変換を実施できます。
ちなみにintは整数型、doubleは実数型です。

0 件のコメント:

コメントを投稿