Esempio n. 1
0
 private function replaceStatistics()
 {
     if (sizeof($this->dataArray) > 0 && is_array($this->dataArray)) {
         // initialise associative statistics array
         $statistics = array('current' => $this->sensors, 'mean' => $this->sensors, 'maximum' => $this->sensors, 'minimum' => $this->sensors);
         // initialise default values for maximum, minimum, mean and the size of the data array
         foreach ($this->sensors as $sensor) {
             $statistics['maximum'][$sensor] = 0;
             $statistics['minimum'][$sensor] = null;
             $statistics['mean'][$sensor] = 0;
             $size[$sensor] = 0;
         }
         // iterate the data array ...
         foreach ($this->dataArray as $time => $sensors) {
             // ... and the sensors
             foreach ($sensors as $sensor => $value) {
                 // if there is a value, increment the data array size for this sensor
                 if (floatval($this->dataArray[$time][$sensor]) != 0.0) {
                     $size[$sensor]++;
                 }
                 // if value is bigger than current maximum, value is used as the new maximum
                 if ($value > $statistics['maximum'][$sensor]) {
                     $statistics['maximum'][$sensor] = $value;
                 }
                 // if minimum is initialised as null or the value is less than current minimum, value is used as the new minimum
                 if ($statistics['minimum'][$sensor] == null || floatval($value) < $statistics['minimum'][$sensor] && floatval($value) != 0.0) {
                     $statistics['minimum'][$sensor] = $value;
                 }
                 // cumulate mean value
                 $statistics['mean'][$sensor] += $value;
             }
         }
         // connect to the database to get the current value for each sensor
         $mysqlConnection = new MySQLConnection();
         $aqDatabase = new AirQualityDatabase($this->feedId, $this->timeframe);
         $data = $aqDatabase->getCurrentValues();
         foreach ($this->sensors as $sensor) {
             // calculate mean by dividing the cumulated value by the determined data size
             if ($size[$sensor] != 0) {
                 $statistics['mean'][$sensor] /= $size[$sensor];
             }
             $statistics['mean'][$sensor] = round($statistics['mean'][$sensor], 2);
             $statistics['current'][$sensor] = $data['current_value'][$sensor];
             // replace values in the content template
             $this->contentTemplate->tplReplace($sensor . '_current', $statistics['current'][$sensor]);
             $this->contentTemplate->tplReplace($sensor . '_mean', $statistics['mean'][$sensor]);
             $this->contentTemplate->tplReplace($sensor . '_minimum', $statistics['minimum'][$sensor]);
             $this->contentTemplate->tplReplace($sensor . '_maximum', $statistics['maximum'][$sensor]);
         }
     }
     // if the was no data found, replace values by -
     foreach ($this->sensors as $sensor) {
         $this->contentTemplate->tplReplace($sensor . '_current', '-');
         $this->contentTemplate->tplReplace($sensor . '_mean', '-');
         $this->contentTemplate->tplReplace($sensor . '_minimum', '-');
         $this->contentTemplate->tplReplace($sensor . '_maximum', '-');
     }
 }
Esempio n. 2
0
// get AQEs from the database
$query = mysql_query('SELECT `feed_id`, `lat`, `lon` FROM `egg`');
if (mysql_num_rows($query) == 0) {
    $this->contentTemplate->cleanCode('Egg');
} else {
    // handle each AQE individually
    while ($row = mysql_fetch_object($query)) {
        // set egg parameters for position in the map
        $this->contentTemplate->copyCode('Egg');
        $this->contentTemplate->tplReplaceOnce('egg_lat', $row->lat);
        $this->contentTemplate->tplReplaceOnce('egg_lon', $row->lon);
        $this->contentTemplate->tplReplaceOnce('egg_fid', $row->feed_id);
        // set default for egg value
        $class = 'noval';
        // get current values of the AQE
        $aqDatabase = new AirQualityDatabase($row->feed_id, '6h');
        $dataArray = $aqDatabase->getCurrentValues();
        if (is_array($dataArray) && isset($dataArray['current_value'])) {
            if (isset($classify)) {
                // get class of the AQE
                $class = classifier($dataArray['current_value'][$classify], $min, $max, 'class');
            }
            // set current value to 0 if it is not defined
            if (!isset($dataArray['current_value']['co'])) {
                $dataArray['current_value']['co'] = 0;
            }
            if (!isset($dataArray['current_value']['no2'])) {
                $dataArray['current_value']['no2'] = 0;
            }
            if (!isset($dataArray['current_value']['temperature'])) {
                $dataArray['current_value']['temperature'] = 0;
Esempio n. 3
0
 private function getData()
 {
     $timeframe = $this->determineTimeframe();
     if ($this->parameter['request'] == 'getObservation') {
         $mysqlConnection = new MySQLConnection();
         $aqDatabase = new AirQualityDatabase($this->feedId, $timeframe);
         $this->dataArray = $aqDatabase->getValuesInTimeframe($this->startTime, $this->endTime);
         if (is_array($this->dataArray)) {
             foreach ($this->metadata as $mdata) {
                 if (isset($this->dataArray[$mdata])) {
                     unset($this->dataArray[$mdata]);
                 }
             }
         } else {
             die('<error>' . translate($this->dataArray) . '</error>');
         }
     } else {
         if ($this->parameter['request'] == 'describeSensor') {
             $mysqlConnection = new MySQLConnection();
             $aqDatabase = new AirQualityDatabase($this->feedId, $timeframe);
             $this->dataArray = $aqDatabase->getCurrentValues();
         }
     }
 }