Exemple #1
0
 function loadgpx($xmlfile, $sub_id)
 {
     $model = $this->getModel();
     if (@file_exists($xmlfile) == false) {
         echo 'Die CSV Datei: ' . $xmlfile . ' gibt es nicht!';
     } else {
         $startzeitoffset = $model->loadexistingtrainingtime($sub_id);
         //if hr data exists (to combien two sessions into one)
         $sport_id = $model->getssportart($sub_id);
         $startzeit = 0;
         $file = file_get_contents($xmlfile);
         $file = str_replace(':hr', 'hr', $file);
         $file = str_replace(':TrackPointExtension', 'TrackPointExtension', $file);
         $file = str_replace(':atemp', 'atemp', $file);
         file_put_contents($xmlfile, $file);
         var_dump($file);
         $xml = simplexml_load_file($xmlfile);
         $t0 = 0;
         $told = 0;
         $latold = 0;
         $lonold = 0;
         $altold = -1000;
         foreach ($xml->trk->trkseg->trkpt as $trkpt) {
             foreach ($trkpt->attributes() as $a => $b) {
                 if ($a == 'lon') {
                     $lon = $b;
                 }
                 if ($a == 'lat') {
                     $lat = $b;
                 }
             }
             if ($latold == 0) {
                 $latold = $lat;
             }
             if ($lonold == 0) {
                 $lonold = $lon;
             }
             $t1 = substr($trkpt->{'time'}, 11, 8);
             if ($told == 0) {
                 $told = $t1;
             }
             if ($t0 == 0) {
                 $t0 = strtotime($t1);
                 $model->updatesessionstarttime($sub_id, DATE("Y-m-d H:i:s", $t0));
             }
             $time1 = strtotime($t1) - $t0;
             if ($told == 0) {
                 $told = $time1;
             }
             $alt = $trkpt->ele;
             if ($altold == -1000) {
                 $altold = $alt;
             }
             $hr = $trkpt->extensions->gpxtpxTrackPointExtension->{'gpxtpxhr'};
             $dist = $trkpt->extensions->{'gpxdatadistance'};
             if (!$dist) {
                 $dist = gpsHTraininglogsHelper::distance_slc($latold, $lonold, $lat, $lon);
             }
             $dist = sqrt(pow($dist, 2) + pow($alt - $altold, 2));
             $speed = $dist / ($time1 - $told);
             $latold = $lat;
             $lonold = $lon;
             $altold = $alt;
             $told = $time1;
             $model->addsessiondetails($sub_id, $time1 + $startzeitoffset, $lat, $lon, $alt, $speed, $hr, 0);
         }
         $split_id = $model->addlaptime($sub_id, $sport_id, $time1 + $startzeitoffset);
     }
     return $split_id;
 }
Exemple #2
0
 public function calibratemap()
 {
     //print_r($_POST);exit;
     $app = JFactory::getApplication();
     $model = $this->getModel();
     $form = JRequest::getVar('jform');
     $map_id = $form['id'];
     $mapimage = $form['mapimage'];
     $user = JFactory::getUser();
     $mapurl = JPATH_SITE . DS . 'images' . DS . 'htraininglogs' . DS . $user->id . DS . 'maps' . DS;
     $map = $mapurl . $mapimage;
     list($width, $height, $type, $attr) = getimagesize($map);
     $x1 = (int) JRequest::getVar('elon');
     $y1 = (int) JRequest::getVar('slat');
     $x2 = (int) JRequest::getVar('wlon');
     $y2 = (int) JRequest::getVar('nlat');
     $lon1 = JRequest::getVar('elon2');
     $lat1 = JRequest::getVar('slat2');
     $lon2 = JRequest::getVar('wlon2');
     $lat2 = JRequest::getVar('nlat2');
     $distlat = gpsHTraininglogsHelper::distance_slc($lat1, $lon1, $lat2, $lon1);
     $distlon = gpsHTraininglogsHelper::distance_slc($lat1, $lon1, $lat1, $lon2);
     $dalpha = rad2deg(atan($this->sign($y2 - $y1) * $distlat / ($this->sign($x2 - $x1) * $distlon))) - rad2deg(atan(($y2 - $y1) / ($x2 - $x1)));
     /*echo '.$x1: '.$x1.'<br>';
     echo '.$y1: '.$y1.'<br>';
     echo '.$x2: '.$x2.'<br>';
     echo '.$y2: '.$y2.'<br>';
     echo '.$lon1: '.$lon1.'<br>';
     echo '.$lat1: '.$lat1.'<br>';
     echo '.$lon2: '.$lon2.'<br>';
     echo '.$lat2: '.$lat2.'<br>';
     echo '$x2-$x1: '.($x2-$x1).'<br>';
     echo 'y2-$y1: '.($y2-$y1).'<br>';
     echo '$distlat: '.$distlat.'<br>';
     echo '$distlon: '.$distlon.'<br>';
     echo '$dalpha: '.$dalpha.'<br>'; exit;*/
     if (abs($dalpha) > 0.5) {
         if (abs($dalpha) <= 7) {
             $this->rotate_map($mapimage, $mapurl, $dalpha);
             $app->enqueueMessage(JText::sprintf('COM_HTRAININGLOGS_MAPFILEROTATED', $dalpha), 'warning');
         } else {
             $app->enqueueMessage(JText::sprintf('COM_HTRAININGLOGS_MAPFILEROTATIONREQUIRED', $dalpha), 'warning');
         }
     }
     $gppx = ($lon2 - $lon1) / ($x2 - $x1);
     $gppy = ($lat2 - $lat1) / ($y2 - $y1);
     $elon = $lon1 - $x1 * $gppx;
     $slat = $lat1 - $y1 * $gppy;
     $wlon = $lon2 + ($width - $x2) * $gppx;
     $nlat = $lat2 + ($height - $y2) * $gppy;
     $model->storeextent($elon, $slat, $wlon, $nlat, $map_id);
     $this->setRedirect(JRoute::_('index.php?option=com_htraininglogs&view=omap&layout=edit&id=' . $map_id, false));
 }