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; }
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)); }