カレンダー
<< November 2024 >>
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最近のエントリー
最近のコメント
最近のトラックバック
カテゴリー
月別アーカイブ
リンク
その他

久しぶりのプログラミング
ほぼ、4年ぶりか。

ええっと、GPSの週数ロールオーバーって、ご存知でしょうか。
GPSで保持している日付のデータが、1024週ごとに、リセットされ、リセットされるのが、今年の4月6日。
で、少し前に買ったGPSロガーだと、採取したログが1024週前の日付になってしまうという。

で、出てくるログが1999年ということになります。

結局、GPXのファイルの日付を、1024週足せばいいんだけど、これには、それなりに、プログラムが必要、と。
で、手抜いて、こんなプログラムだよ。
<?php
require_once("./setup.php");
//echo '<pre>';
//var_dump($_FILES);
$s=file_get_contents($_FILES['userfile']['tmp_name']);
$o_filename=$_FILES['userfile']['name'];
//echo $o_filename;
$n_filename = 'n' . $o_filename;

file_put_contents(ORIG_SAVE_DIR . $o_filename , $s);

$prevpos=0;
//echo '<pre>';

//echo $s;

replace_after( $s, '<name>', '1999' );
replace_after( $s, '<name>', '2000' );
replace_after( $s, '<name>', '2001' );

replace_after( $s, '<time>', '1999' );
replace_after( $s, '<time>', '2000' );
replace_after( $s, '<time>', '2001' );

//echo $s;
file_put_contents( CONV_SAVE_DIR . $n_filename , $s);

header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Length: '.strlen($s));
header('Content-Disposition: attachment; filename="'.$n_filename.'"');

echo $s;




function replace_after( &$s, $name, $year )
{
while(true)
{

$pos=stripos($s, $name . $year, $prevpos+1);
if( !$pos ) break;

$d = substr($s, $pos+strlen($name), 10);
$dd = new DateTime($d);
$dd->add(new DateInterval('P1024W'));
$d = $dd->format('Y-m-d');

$s = substr_replace($s, $name . $d, $pos, strlen($name)+10);
$prevpos = $pos;
}
}
?>

ちなみに、私はいつも、目的地に着くと、
  GPSログをGPSロガーから、スマホにダウンロード(SmaillStepで、M241から)
  得られたGPXを、地図ロイドで、内容確認。
  OKなら、GoogleDriveにGPXをアップロードしバックアップ

となっていますが、今後は、
  GPSログをGPSロガーから、スマホにダウンロード(SmaillStepで、M241から)
  ダウンロードされたファイルを上記のプログラムにアップロード。この時、バックアップがとられ、
  日付を1024週加算したファイルが、スマホにダウンロード
  ダウンロードしたファイルを、地図ロイドで内容確認。
となります。操作の手間は、正常ケースでは、ちょっと楽になった感じかな。

本来は、スマホで、日付を1024週足すプログラムが作れればいいんだけど、これは、やったことないので。
(そもそもそんな新しいこと覚える気力あれば、別の仕事探してます。)

コメントする
お名前:

メール:

URL:

コメント:

トラックバック
この記事へのトラックバックURL:
これまでに受信したトラックバックはありません。

処理時間0.221秒