Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
52 / 52 |
GPX | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
6 | |
100.00% |
52 / 52 |
__construct($trackInstance = null) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
__toString() | |
100.00% |
1 / 1 |
5 | |
100.00% |
50 / 50 |
<?php | |
/** | |
* | |
*/ | |
namespace aae\geo\formats { | |
/** | |
* @author Axel Ancona Esselmann | |
* @package aae\geo\formats | |
*/ | |
class GPX { | |
protected $track; | |
public $timeZone = 'UTC'; | |
public function __construct($trackInstance = null) { | |
$this->track = $trackInstance; | |
} | |
/** | |
* __functionDescription__ | |
*/ | |
public function __toString() { | |
$latFormat = "%01.9f"; | |
$lonFormat = "%01.9f"; | |
$eleFormat = "%01.1f"; | |
$timeFormat = "Y-m-d\TH:i:s\Z"; | |
$dom = new \DOMDocument(1.0, "UTF-8"); | |
$gpx = $dom->createElement("gpx"); | |
$gpx->setAttribute("version", "1.1"); | |
$gpx->setAttribute("creator", "Axel Ancona Esselmann - http://www.anconaesselmann.com"); | |
$gpx->setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); | |
$gpx->setAttribute("xmlns", "http://www.topografix.com/GPX/1/1"); | |
$gpx->setAttribute("xsi:schemaLocation", "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"); | |
$gpx->setAttribute("xmlns:gpxtpx", "http://www.garmin.com/xmlschemas/TrackPointExtension/v1"); | |
$dom->appendChild($gpx); | |
$gpxTrack = $dom->createElement("trk"); | |
$gpx->appendChild($gpxTrack); | |
$trackName = $dom->createElement("name", $this->track->name); | |
$gpxTrack->appendChild($trackName); | |
if (count($this->track) > 0) { | |
$time = new \DateTime(); | |
date_default_timezone_set($this->timeZone); | |
$time->setTimezone(new \DateTimeZone($this->timeZone)); | |
$time->setTimestamp($this->track[0]->time); | |
$trackTime = $dom->createElement("time", $time->format($timeFormat)); | |
$gpxTrack->appendChild($trackTime); | |
$trackSegment = $dom->createElement("trkseg"); | |
$currentSegmentNumber = 1; | |
foreach ($this->track as $key=>$trackPoint) { | |
if (count($this->track->segmentStarts) > 1) { | |
if ($key === $this->track->segmentStarts[$currentSegmentNumber]) { | |
$gpxTrack->appendChild($trackSegment); | |
$trackSegment = $dom->createElement("trkseg"); | |
$currentSegmentNumber++; | |
} | |
} | |
$gpxPoint = $dom->createElement("trkpt"); | |
$gpxPoint->setAttribute("lat", sprintf($latFormat, $trackPoint->lat)); | |
$gpxPoint->setAttribute("lon", sprintf($lonFormat, $trackPoint->lon)); | |
$gpxPointElevation = $dom->createElement('ele', sprintf($eleFormat, $trackPoint->ele)); | |
$gpxPoint->appendChild($gpxPointElevation); | |
$pointTime = new \DateTime(); | |
$pointTime->setTimestamp($trackPoint->time); | |
$gpxPointTime = $dom->createElement('time', $pointTime->format($timeFormat)); | |
$gpxPoint->appendChild($gpxPointTime); | |
$trackSegment->appendChild($gpxPoint); | |
} | |
$gpxTrack->appendChild($trackSegment); | |
} | |
$dom->formatOutput = TRUE; | |
$formatted = $dom->saveXML(); | |
return $formatted; | |
} | |
} | |
} |