/** * Create a position report for a flight and store it * in a class variable. * * @param array $data * @param int $flightId * @return void */ protected function positionReport($data, $flightId) { $position = new Position(); $position->flight_id = $flightId; $position->lat = $data['latitude']; $position->lon = $data['longitude']; $position->altitude = $data['altitude']; $position->speed = $data['groundspeed']; $position->heading = $data['heading']; $options = array('flags' => FILTER_FLAG_ALLOW_FRACTION); $lat = number_format(filter_var($data['latitude'], FILTER_SANITIZE_NUMBER_FLOAT, $options), 5); $lon = number_format(filter_var($data['longitude'], FILTER_SANITIZE_NUMBER_FLOAT, $options), 5); $elevation = $this->elevations[$lat . ',' . $lon]; $position->ground_elevation = $elevation < 0 && $position->altitude > 0 ? 0 : $elevation; $position->update_id = $this->updateId; $this->positions[] = $position->toArray(); unset($position, $data, $flightId); }