$ws['rainHour'] = wsConvertRainfall($wx['rainHour'], $from); $ws['lastRained'] = $wx['lastRained']; # ------------------------------------------ EVAPOTRANSPIRATION -------- $ws['etToday'] = wsConvertRainfall($wx['etToday'], $from); $ws['etMonth'] = wsConvertRainfall($wx['etMonth'], $from); $ws['etMonth'] = wsConvertRainfall($wx['etYear'], $from); # ------------------------------------------ wind --------------------- $ws['gustMaxTodayTime'] = wswindate($wx['gustMaxTodayTime']); $ws['gustMaxMonthTime'] = wswindate($wx['gustMaxMonthTime']); $ws['gustMaxYearTime'] = wswindate($wx['gustMaxYearTime']); $string = trim(strtolower($wx['fromwind'])); // wswin supports:km/h m/s mph Knots Beaufort $from_arr = array('knoten', 'knots', 'knopen'); $from_wind = $from = str_replace($from_arr, 'kts', $string); // =' km/h', =' kts', =' m/s', =' mph' $ws['windActDsc'] = wsConvertWinddir($wx['windActDsc']); $ws['windActDir'] = $wx['windActDsc']; $ws['windBeafort'] = wsBeaufortNumber($wx['windAct'], $from); $ws['windAct'] = wsConvertWindspeed($wx['windAct'], $from); $ws['gustAct'] = wsConvertWindspeed($wx['gustAct'], $from); $ws['windAvgDir'] = $wx['windAvgDir']; #$ws['gustMaxHour'] = wsConvertWindspeed($wx['xx'], $from); $ws['gustMaxToday'] = wsConvertWindspeed($wx['gustMaxToday'], $from); $ws['gustMaxMonth'] = wsConvertWindspeed($wx['gustMaxMonth'], $from); $ws['gustMaxYear'] = wsConvertWindspeed($wx['gustMaxYear'], $from); if ($ws['gustAct'] < $ws['windAct']) { $ws['gustAct'] = $ws['windAct']; } # ------------------------------------------ UV --------------------- $ws['uvMaxTodayTime'] = wswindate($wx['uvMaxTodayTime']); $ws['uvMaxMonthTime'] = wswindate($wx['uvMaxMonthTime']);
function getWindDir($degrees) { if ($degrees == '-') { return ''; } $string = wsConvertWinddir($degrees); $from = array('North', 'East', 'South', 'West'); $to = array('N', 'E', 'S', 'W'); return str_replace($from, $to, $string); }
} if (isset($mtr['covers_max']) && $mtr['covers_max'] != '') { $text = langtransstr($mtr['covers_max']); $long_text .= $extra . $text; } $mtr['conditions_text'] = $long_text; ws_message('<!-- module metarDisplay.php (' . __LINE__ . '):' . ' ' . $key . ' = ' . $long_text . ' ' . $mtr['conditions_text'] . ' -->'); } // eo conditions # $result['wind_speed_kt'] = 0; # $result['wind_dir'] = 'varies'; if ($key == 'wind_speed_kt') { $long_text = $legend . ': '; if (isset($mtr['wind_dir'])) { if ($mtr['wind_dir'] != 'varies') { $dirlabel = wsConvertWinddir($mtr['wind_dir']); $dir = langtransstr($dirlabel); $long_text .= $dir . ' '; } else { $long_text .= langtransstr('Varies') . ' '; $dirlabel = 'calm'; } } // eo wind if (isset($mtr['wind_speed_kt']) && $mtr['wind_speed_kt'] != 0) { $speed = round(wsConvertWindspeed($mtr['wind_speed_kt'], 'kts', $SITE["uomWind"]), $SITE["decWind"]); $long_text .= $speed . $SITE["uomWind"]; } else { $long_text .= langtransstr('Calm') . ' '; $dirlabel = 'calm'; }
function myWind($array = '') { global $SITE, $windIcons, $windlimit; if (!is_array($array)) { return '<td>' . langtransstr('Wind') . '</td>'; } $windspeed = $array['windSpeed']; $windDir = trim($array['windDir']); $windBftNr = wsBeaufortNumber($windspeed, $SITE['uomWind']); $windBftText = wsBeaufortText($windBftNr); $windBftColor = wsBeaufortColor($windBftNr); if (is_numeric($windDir)) { $windDir = wsConvertWinddir($windDir); } $windTekst = '<span style="margin: 0 0 5px 0; width: 100%; font-size: 90%; background-color: ' . $windBftColor . ';">' . round($windspeed) . $SITE['uomWind']; if ($windBftNr >= $windlimit) { $windTekst = '<span style="border: solid 1px; color: black; background-color: ' . $windBftColor . ';"> ' . langtransstr($windBftText) . ' </span><br />' . $windTekst; } $windTekst .= '</span></td>'; $return = '<td style="min-width: 60px;"><img style="height: 32px; width: 32px;" src="' . $windIcons . $windDir . '.png" alt=""/><br />' . $windTekst; # $tip = '<td style="text-align: right;">'.langtransstr('Wind').': </td><td>'.langtransstr($windDir).' '.round($windspeed).$SITE['uomWind'].'</td>'; $tip = '<td style="text-align: right;">' . langtransstr('Wind') . ': </td><td>' . langtransstr($windDir) . '<br />' . langtransstr($windBftText) . '-' . round($windspeed) . $SITE['uomWind'] . '</td>'; return array($return, $tip); }
$humiTrends = explode('#', $ws['humiTrends']); $baroTrends = explode('#', $ws['baroTrends']); $rainTrends = explode('#', $ws['rainTrends']); if ($haveUV) { $uvTrends = explode('#', $ws['uvTrends']); } if ($haveSolar) { $solarTrends = explode('#', $ws['solarTrends']); } $end_trends = count($minutes); for ($i = 0; $i < $end_trends; $i++) { $wsTrends[$i]['min'] = $minutes[$i]; $wsTrends[$i]['temp'] = wsConvertTemperature($tempTrends[$i], $from_temp); $wsTrends[$i]['wind'] = wsConvertWindspeed($windTrends[$i], $from_wind); $wsTrends[$i]['gust'] = wsConvertWindspeed($gustTrends[$i], $from_wind); $wsTrends[$i]['dir'] = wsConvertWinddir($wdirTrends[$i]); $wsTrends[$i]['hum'] = $humiTrends[$i]; $wsTrends[$i]['baro'] = wsConvertBaro($baroTrends[$i], $from_baro); $wsTrends[$i]['rain'] = wsConvertRainfall($rainTrends[$i], $from_rain); if ($haveUV) { $wsTrends[$i]['uv'] = $uvTrends[$i]; } if ($haveSolar) { $wsTrends[$i]['sol'] = $solarTrends[$i]; } } } if ($wp == 'MB') { // clean rain $count = count($wsTrends); for ($i = 1; $i < $count; $i++) {
// "Tbeaufort":"F1", "Tbeaufort":"<#Tbeaufort>", $arrOut['TwgustTM'] = WStime($ws['gustMaxTodayTime']); $arrOut['windTM'] = $ws['gustMaxToday']; $arrOut['bearingTM'] = '5'; $arrOut['BearingRangeFrom10'] = '0'; $arrOut['BearingRangeTo10'] = '359'; $time = strtotime(substr($ws['rtTime'], 0, 8) . 'T' . substr($ws['rtTime'], 8, 6)); $arrOut['timeUTC'] = gmdate('Y,m,d,H,i,s', $time); $arrOut['UV'] = $ws['uvAct']; $arrOut['UVTH'] = $ws['uvMaxToday']; // "UVTH":"<#UVTH>", $arrOut['SolarRad'] = $ws['solarAct']; $arrOut['SolarTM'] = $ws['solarMaxToday']; // "SolarTM":"<#solarTH>", $arrOut['CurrentSolarMax'] = $ws['solarMaxToday']; $arrOut['domwinddir'] = wsConvertWinddir($ws['windAvgDir']); if (!isset($ws['WindRoseData'])) { $ws['WindRoseData'] = '[]'; } # '[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]';} $arrOut['WindRoseData'] = $ws['WindRoseData']; $arrOut['windrun'] = '0.0'; $arrOut['version'] = '0'; $arrOut['build'] = '0'; $arrOut['ver'] = '11'; // "ver":"11" // '9'; # send converted info back if (isset($_GET['debug'])) { echo '<br />' . PHP_EOL; echo 'processed to output array =' . PHP_EOL; var_dump($arrOut);
function checkConvertData($textData, $type, $backData) { global $textData, $type, $backData, $iconsWD; $input = trim($textData); if ($input === '-') { return; } if ($input === '_') { $input = '-'; return; } switch ($type) { case 'B': break; case 'C': if (!is_numeric($input)) { $backData = 'yellow'; return; } if ($input <= -30 || $input >= 40) { $textData .= ' exceptional data? '; $backData = 'yellow'; return; } $convert = wsConvertTemperature($input, $type, 'f'); $textData = $input . '°C ( = ' . $convert . ' °F )'; break; case 'D': if (!is_numeric($input)) { $backData = 'yellow'; return; } if ($input < 0 || $input >= 360.1) { $textData .= ' exceptional data? '; $backData = 'yellow'; return; } $convert = wsConvertWinddir($input); $textData = $input . '°( = ' . $convert . ' )'; break; case 'F': if (!is_numeric($input)) { $backData = 'yellow'; return; } if ($input < 0 || $input >= 30000) { $textData .= ' exceptional data? '; $backData = 'yellow'; return; } $convert = round($input / 3.28084, 0); $textData = $input . ' feet ( = ' . $convert . ' meter )'; break; case 'H': if (!is_numeric($input)) { $backData = 'yellow'; return; } if ($input <= 900 || $input >= 1400) { $textData .= ' exceptional data? '; $backData = 'yellow'; return; } $convertMb = wsConvertBaro($input, 'hpa', 'mb'); $convertMmhg = wsConvertBaro($input, 'hpa', 'mmhg'); $convertInhg = wsConvertBaro($input, 'hpa', 'inhg'); $textData = $input . ' hPa ( = ' . $convertMb . ' mb; ' . $convertMmhg . ' mmHg; ' . $convertInhg . ' inHg )'; break; case 'I': if (!is_numeric($input)) { $backData = 'yellow'; return; } if ($input < 0 || $input > 36) { $textData .= ' exceptional data? '; $backData = 'yellow'; return; } $textData = $input . ' ( ' . $iconsWD[$input]['iconDescription'] . ' )'; break; case 'K': if (!is_numeric($input)) { $backData = 'yellow'; return; } if ($input < 0 || $input >= 100) { $textData .= ' exceptional data? '; $backData = 'yellow'; return; } $convertKmh = wsConvertWindspeed($input, 'kts', 'kmh'); $convertMs = wsConvertWindspeed($input, 'kts', 'ms'); $convertMph = wsConvertWindspeed($input, 'kts', 'mph'); $textData = $input . ' kts ( = ' . $convertKmh . ' k/H; ' . $convertMs . ' ms; ' . $convertMph . ' m/H )'; break; case 'M': if (!is_numeric($input)) { $backData = 'yellow'; return; } if ($input < 0 || $input >= 300) { $textData .= ' exceptional data? '; $backData = 'yellow'; return; } $convert = wsConvertRainfall($input, 'mm', 'in'); $textData = $input . ' mm ( = ' . $convert . ' in )'; break; case 'N': if (!is_numeric($input)) { $backData = 'yellow'; return; } break; case 'P': $textData = $input . '%'; break; case 'T': if ($input == 0) { return; } $time = strtotime($input); $string = date('H:i', $time); if ($string != $input) { $textData = $string . ' <> ' . $input . ' exceptional data? '; $backData = 'yellow'; return; } break; case 'U': break; } }