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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/*
* Function to turn a mysql datetime (YYYY-MM-DD HH:MM:SS) into a unix timestamp
* @param str
* The string to be formatted
*/
function convert_datetime($str) {
list($date, $time) = explode(' ', $str);
list($year, $month, $day) = explode('-', $date);
list($hour, $minute, $second) = explode(':', $time);
$timestamp = mktime($hour, $minute, $second, $month, $day, $year);
return $timestamp;
}
/***
* @name pathSimplification simplification d'un groupe de point selon un pas
* @param $tab tableau valide des coordonnées avec ['la']['lo'] pour chaque ligne
* @param $ret tableau valide des coordonnées simplifié à partir de $tab
* @param $step pas entre chaque point à préserver
*/
function pathSimplification(&$tab,&$ret,$step)
{
$ret=array();
$inter=array();
$j=0;
for($i=0;$i<sizeof($tab);$i++)
{
if($i % $step)
{
$inter[]=$tab[$i];
$j++;
}
else
{
if($i==0)
$ret[]=$tab[0];
else
{
$la=0;
$lo=0;
$alti=0;
$date=0;
for($k=0;$k<$j;$k++)
{
$la+=$inter[$k]['la'];
$lo+=$inter[$k]['lo'];
$alti+=$inter[$k]['alti'];
$date+=$inter[$k]['date'];
}
$ret[]=array('la' => $la/$j,'lo' => $lo/$j,'alti' => $alti/$j,'date' => date("Y-m-d H:i:s", $date/$j) );
$ret[]=$tab[$i];
$j=0;
}
}
}
if($i % $step)
{
$la=0;
$lo=0;
$alti=0;
$date=0;
for($k=0;$k<$j;$k++)
{
$la+=$inter[$k]['la'];
$lo+=$inter[$k]['lo'];
$alti+=$inter[$k]['alti'];
$date+=$inter[$k]['date'];
}
$ret[]=array('la' => $la/$j,'lo' => $lo/$j,'alti' => $alti/$j,'date' => date("Y-m-d H:i:s", $date/$j) );
}
}
$sql_select_pts_gps = $bdd->query('SELECT coord_gps_lat AS la,coord_gps_lon AS lo,coord_gps_altitude AS alti, coord_gps_date AS date '
. ' FROM pevtt_coordonnee_gps'
. ' WHERE id_fichier_gps = 55');
$array = array();
while($tab_pts_gps = $sql_select_pts_gps->fetch())
{
$array[]=array('la' =>$tab_pts_gps['la'], 'lo'=> $tab_pts_gps['lo'], 'alti' =>$tab_pts_gps['alti'], 'date' => convert_datetime($tab_pts_gps['date']),);
}
$retour=array();
pathSimplification($array,$retour,10);
echo '<pre>';
echo print_r($retour);
echo '</pre>'; |