Example #1
0
 /**
  * Calculate elevation value
  * 
  * This method does directly update the route object.
  */
 public function calculateElevation()
 {
     $Calculator = new Calculation\Calculator($this->Route->elevations());
     $Calculator->calculate();
     $this->Route->set(Route\Entity::ELEVATION, $Calculator->totalElevation());
     $this->Route->set(Route\Entity::ELEVATION_UP, $Calculator->elevationUp());
     $this->Route->set(Route\Entity::ELEVATION_DOWN, $Calculator->elevationDown());
 }
 /**
  * Run recalculations
  */
 public function run()
 {
     $Query = $this->getQuery();
     $Update = $this->prepareUpdate();
     while ($Data = $Query->fetch()) {
         $Elevation = \Runalyze\Model\Object::explode($Data['elevations']);
         $Calculator = new Elevation\Calculation\Calculator($Elevation);
         $Calculator->calculate();
         if ($Calculator->totalElevation() != $Data['elevation'] || $Calculator->elevationUp() != $Data['elevation_up']) {
             $Update->bindValue(':id', $Data['id']);
             $Update->bindValue(':elevation', $Calculator->totalElevation());
             $Update->bindValue(':elevation_up', $Calculator->elevationUp());
             $Update->bindValue(':elevation_down', $Calculator->elevationDown());
             $Update->execute();
             $this->NumberOfRoutes++;
         }
         $this->Results[$Data['id']] = array($Calculator->totalElevation(), $Calculator->elevationUp(), $Calculator->elevationDown());
     }
 }
Example #3
0
 public function testAlgorithmDouglasPeucker()
 {
     $Method = new ElevationMethod();
     $Method->set(ElevationMethod::DOUGLAS_PEUCKER);
     $Calc = new Calculator(array(0, 2, 4, 6, 5, 7, 4, 8, 10, 0), $Method, 2);
     $Calc->calculate();
     $this->assertEquals(13, $Calc->totalElevation());
     $this->assertEquals(13, $Calc->elevationUp());
     $this->assertEquals(13, $Calc->elevationDown());
 }
Example #4
0
 /**
  * @param \Runalyze\Data\Laps\Lap $Lap
  */
 protected function addElevationFor(Lap $Lap)
 {
     if ($this->RouteLoop == null) {
         return;
     }
     $Calculator = new Elevation\Calculation\Calculator($this->RouteLoop->sliceElevation());
     $Calculator->calculate();
     $Lap->setElevation($Calculator->elevationUp(), $Calculator->elevationDown());
 }