GPSログの手動checksum再計算
カテゴリー: General
2012-05-05
GPSログの手動checksum再計算
通常のchecksumは、全部の合計ですが計算方法が違います。
$と*の間の文字を順番にxor演算します。
修正したいポイントの緯度経度は、
google earthでカーソル位置の情報をリアルタイムで知ることができるのでそれを参考にすると簡単です。
GPSログの緯度経度を手動で修正した場合の再計算などに使うと便利です。
機器にGPSログの修正機能が付属していない場合に
ちょっとここ微妙に違う!!
このわずかな ずれが気になる!!
というようなときに活躍します。
C/C++言語の場合は、 xor は ^ です。
for ( i = 0; i < strlen(s); i++ )
{
if ( (i == 0) && (s[0] == '$') )
{ continue; }
if (s[i] == '*')
{ break; }
sum = sum ^ s[i];
}
GPSの各行の仕様は、
GPS NMEA フォーマット
GPS NMEA 仕様
などで検索すると知ることができます。
finepixだと 1ポイントは、4行が1セットです。
$GPGGA,・・・
$GPGSA,・・・
$GPRMC,・・・
$GPVTG,・・・
執筆:2012.05.05
通常のchecksumは、全部の合計ですが計算方法が違います。
$と*の間の文字を順番にxor演算します。
修正したいポイントの緯度経度は、
google earthでカーソル位置の情報をリアルタイムで知ることができるのでそれを参考にすると簡単です。
GPSログの緯度経度を手動で修正した場合の再計算などに使うと便利です。
機器にGPSログの修正機能が付属していない場合に
ちょっとここ微妙に違う!!
このわずかな ずれが気になる!!
というようなときに活躍します。
コード(Pascal言語) |
// GPSのログの行を手動変更した場合のchecksumの再計算など |
C/C++言語の場合は、 xor は ^ です。
for ( i = 0; i < strlen(s); i++ )
{
if ( (i == 0) && (s[0] == '$') )
{ continue; }
if (s[i] == '*')
{ break; }
sum = sum ^ s[i];
}
GPSの各行の仕様は、
GPS NMEA フォーマット
GPS NMEA 仕様
などで検索すると知ることができます。
finepixだと 1ポイントは、4行が1セットです。
$GPGGA,・・・
$GPGSA,・・・
$GPRMC,・・・
$GPVTG,・・・