15

経度の緯度を奇妙な形式で提供する gps モジュールがあります。

DDDMM.MMMM

ユーザーマニュアルに記載されているように、度* 100 + 分。

私の知る限り、それは度分秒であり、秒は0〜59の間であり、これを超えると分が増加します。しかし、これは分を小数点以下の桁数で示しています。これは 1/1000 分のことを意味しますか?

eg. 07717.3644 E
077 --> degrees
17 --> minutes
3644 --> ?
E --> Direction

また、どのように10進数に変換しますか、式を使用しています

decimal = degrees + minutes/60 + seconds/3600.
4

6 に答える 6

26

これを 10 進形式に変換するには、まず DD 部分を維持し、単純に MM.MMM を 60 で割り、10 進形式の MMM 部分を確定します。

43. (48.225/60), -79.(59.074/60)  

43.(0.80375), -79.(0.98456)  

43.80375, -79.98456    

あなたの場合

eg. 07717.3644 E is the DDDMM.MMMM format

077 --> degrees
17 --> minutes
.3644 --> minutes equals to sec/60


decimal = degrees + minutes/60 

decimal = 77 + (17.3644 / 60)  

decimal = 77.28941

このリンクを参照してください

于 2013-08-26T11:07:34.727 に答える
3

値は数値ではなく、度と分を連結した文字列です。緯度の値には 2 度の数字 (つまり DDMM.MMMM) しかない可能性が高いため、注意が必要です。したがって、値を区切るために文字列処理を使用する場合は、それを考慮する必要があります。ただし、経度と緯度の両方を次のように数値で処理できます。

double GpsEncodingToDegrees( char* gpsencoding )
{
    double a = strtod( gpsencoding, 0 ) ;
    double d = (int)a / 100 ;
    a -= d * 100 ;
    return d + (a / 60) ;
}

また、半球文字 E/W または N/S をこの関数に渡し、必要に応じて適切な +/- 符号を決定するために使用することもできます。

于 2013-08-27T11:40:43.977 に答える
2

1 分 = 60 秒なので、.3644 分 = .3644 * 60 = 21.86 秒です。

于 2013-08-26T10:57:55.883 に答える