MeteoRemich


/*
-------------
LICENSE INFO:
-------------
PHPmyEasyWeather Version 1.03 - a PHP weather functions library
Copyright (C) 2005-2006 Alexander Ott
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
____/)____
Author: Alexander Ott, A.Ott@sail-3d.com, Last change: Jan 30th 2006
visit: http://www.sail-3d.com/phpmyeasyweather/
-------------------------
GLOBAL VARIABLE SETTINGS:
-------------------------
*/
$buffer_time_metar = 1; // hours for buffering METAR info
$buffer_time_taf = 6; // hours for buffering TAF info
$buffer_night_yes = 1; // if METAR shall be buffered during night = 1
$path_to_buffer = "buffer/"; // relative path to the buffer directory
$path_to_grafics = "weatherpics/"; // relative path to the weatherpic directory
$type_of_db_acces = "text"; // shall be either "text" or "mysql"
$path_to_icao_db = "icao_db/"; // relative path to the icao_db directory
$name_of_db_host = "localhost"; // mysql access data
$name_of_db_user = ""; // currently not in use
$name_of_db_pass = "";
$name_of_database = "";
/*
--------------------------------------
OTHER STUFF CONTAINED IN THIS FILE :-)
--------------------------------------
*/
function getSun($ICAO) {
global $path_to_icao_db;
$country = readCountrys();
$ICAO = strtoupper($ICAO);
if (ereg("^([A-Z]{4})$", $ICAO)) {
$firstletter = strtolower(substr($ICAO,0,1));
if (file_exists($path_to_icao_db."icao_$firstletter.inc.php")) {
include ($path_to_icao_db."icao_$firstletter.inc.php");
if (($latitude[$ICAO]!="") && ($longitude[$ICAO]!="") && ($gmttime[$ICAO]!="")) {
if ($latitude[$ICAO]<0) {
$latitude[$ICAO] = abs($latitude[$ICAO]);
$northSouth = "S";
} else {
$northSouth = "N";
}
if ($longitude[$ICAO]<0) {
$longitude[$ICAO] = abs($longitude[$ICAO]);
$westEast = "W";
} else {
$westEast = "E";
}
$returner = sunRiseSet(date("j"),date("n"),date("Y"),$latitude[$ICAO],$northSouth,
$longitude[$ICAO],$westEast,$gmttime[$ICAO]);
} else {
$returner = false;
}
} else {
$returner = false;
}
} else {
$returner = false;
}
return $returner;
}
function getMoon() {
$moon = getFullMoon("now");
$lastmoon = $moon["last"];
return round(16*(mktime()-$lastmoon)/($moon["next"]-$lastmoon));
}
function getFullMoon ($tstamp) {
global $path_to_icao_db;
if ((($tstamp < 1860961) || ($tstamp > 2111926199)) && (strtolower($tstamp) != "now")) {
$returner = false;
} else {
include ($path_to_icao_db."moon.inc.php");
$starter = 0;
if (strtolower($tstamp) == "now") {
$starter = 445;
$tstamp = mktime();
}
for ($a=$starter;$a $tstamp) {
$returner["next"] = $lunstamp[$a];
$returner["last"] = $lunstamp[($a-1)];
break;
}
}
}
return $returner;
}
function sunRiseSet($tag,$mon,$year,$breite,$northSouth,$laenge,$westEast,$timez) {
$bogenbreite = pi(void)*$breite/180;
if (strtolower($westEast)=="w") $laenge = -$laenge;
if (strtolower($northSouth)=="s") $bogenbreite = -$bogenbreite;
$daynum = juliantojd($mon,$tag,$year) - juliantojd(1,1,$year) + 1;
$zeitgleichung = -0.1752*sin(0.033430*$daynum+0.5474)-0.1340*sin(0.018234*$daynum-0.1939);
$deklination = 0.40954*sin(0.0172*($daynum-79.35));
if ((abs((sin(-0.0145)-sin($bogenbreite)*sin($deklination))/(cos($bogenbreite)*cos($deklination))) <= 1)
&& checkdate($mon, $tag, $year)) {
$zeitdifferenz = 12*acos((sin(-0.0145)-sin($bogenbreite)*sin($deklination))/(cos($bogenbreite)*cos($deklination)))/pi(void);
$sunRiseOrt = 12 - $zeitdifferenz - $zeitgleichung; // Ortszeit ist Sonnenzeit!
$sunSetOrt = 12 + $zeitdifferenz - $zeitgleichung;
$sunRiseLocal = $sunRiseOrt - $laenge/15 + $timez; // Local ist echte Lokale Zeit
$sunSetLocal = $sunSetOrt - $laenge/15 + $timez;
$sunRiseGMT = $sunRiseOrt - $laenge/15; // GMT Zeit
$sunSetGMT = $sunSetOrt - $laenge/15;
$minutesOfRiseLocal = round(($sunRiseLocal-floor($sunRiseLocal))*60);
$minutesOfSetLocal = round(($sunSetLocal-floor($sunSetLocal))*60);
$minutesOfRiseGMT = round(($sunRiseGMT-floor($sunRiseGMT))*60);
$minutesOfSetGMT = round(($sunSetGMT-floor($sunSetGMT))*60);
$returner["risestamp"] = gmmktime(floor($sunRiseGMT),$minutesOfRiseGMT,0,$mon,$tag,$year);
$returner["setstamp"] = gmmktime(floor($sunSetGMT), $minutesOfSetGMT, 0,$mon,$tag,$year);
if ($minutesOfRiseLocal<10) $minutesOfRiseLocal = "0" . $minutesOfRiseLocal;
if ($minutesOfSetLocal<10) $minutesOfSetLocal = "0" . $minutesOfSetLocal;
$returner["sunrise"] = floor($sunRiseLocal) . ":" . $minutesOfRiseLocal;
$returner["sunset"] = floor($sunSetLocal) . ":" . $minutesOfSetLocal;
} else {
$returner = false;
}
return $returner;
}
function getIcaoTimeZone($ICAO) {
if ($stationInfo = getStationInfo($ICAO)) {
$gmttime = 1*$stationInfo["gmttime"];
$returner = getTimeZone($gmttime);
} else {
$returner = false;
}
return $returner;
}
function getTimeZone($gmtRelatedTimezone) {
$gmtRelatedTimezone = 1*$gmtRelatedTimezone;
$gmtRelatedTimezone = str_replace(".",",",$gmtRelatedTimezone);
$timeZone["12"] = "NZST; New Zealand Standard Time";
$timeZone["11,5"] = "NFT; Norfolk (Island) Standard Time";
$timeZone["11"] = "SBT; Solomon Islands Standard Time";
$timeZone["10"] = "AEST; Australian Eastern Standard Time";
$timeZone["9,5"] = "ACST; Australian Central Standard Time";
$timeZone["9"] = "JST; Japan Standard Time";
$timeZone["8"] = "AWST; Australian Western Standart Time; ";
$timeZone["7"] = "ICT; Indochina Standard Time";
$timeZone["6,5"] = "MMT; Myanmar Standard Time";
$timeZone["6"] = "LKT; (Sri) Lanka Standard Time";
$timeZone["5,75"] = "NTZ; Nepal Standard Time Zone";
$timeZone["5,5"] = "IST; Indian Standard Time";
$timeZone["5"] = "IOT; British Indian Ocean Territory Standard Time";
$timeZone["4,5"] = "AFT; Afghanistan Standard Time";
$timeZone["4"] = "UAE; United Arab Emirates Standard Time";
$timeZone["3,5"] = "MET; Teheran Standard Time";
$timeZone["3"] = "MSK; Moscow Standard Time";
$timeZone["2"] = "EET; Eastern Europe Standard Time";
$timeZone["1"] = "CET; Central European Standard Time";
$timeZone["0"] = "GMT; Greenwich Mean Time";
$timeZone["-1"] = "ATZ; Azores Standard Time";
$timeZone["-2"] = "VTZ; Greenland Eastern Standard Time";
$timeZone["-3"] = "EBT; Eastern Brazilian Standard Time";
$timeZone["-3,5"] = "NST; Newfoundland Standard Time";
$timeZone["-4"] = "AST; Atlantic Standart Time";
$timeZone["-5"] = "EST; Eastern Standard Time";
$timeZone["-6"] = "CST; Central Standard Time";
$timeZone["-7"] = "MST; Mountain Standart Time";
$timeZone["-8"] = "PST; Pacific Standart Time";
$timeZone["-9"] = "AKST; Alaska Standart Time";
$timeZone["-9,5"] = "?; Îles Marquises Standard Time";
$timeZone["-10"] = "HST; Hawaiian Standart Time";
$timeZone["-11"] = "SST; Samoa Standart Time";
$returner = $timeZone[$gmtRelatedTimezone];
if ($returner == "") $returner = false;
return $returner;
}
function readCountrys() {
global $path_to_icao_db;
include ($path_to_icao_db."countries.inc.php");
return $country;
}
function numberPrefix($item) {
$item = round(10*($item/10-floor($item/10)));
if ($item == 1) {
$returner = "st";
} else if ($item == 2) {
$returner = "nd";
} else if ($item == 3) {
$returner = "rd";
} else {
$returner = "th";
}
return $returner;
}
function clearTAF($tafcode) {
$tafcode=rawurldecode($tafcode);
$tafcode=str_replace("\r"," ",$tafcode);
$tafcode=str_replace("\n"," ",$tafcode);
$tafcode=str_replace("=","",$tafcode);
$tafcode=str_replace("BECMG"," BECMG ",$tafcode);
$tafcode=str_replace("TEMPO"," TEMPO ",$tafcode);
$tafcode=str_replace("PROB"," PROB",$tafcode);
$tafcode=str_replace("NSW"," NSW ",$tafcode);
$tafcode=str_replace("CAVOK"," CAVOK ",$tafcode);
$tafcode=str_replace("NOSIG"," NOSIG ",$tafcode);
$tafcode=str_replace("NSC"," NSC ",$tafcode);
$tafcode=str_replace("KT","KT ",$tafcode);
$tafcode=str_replace("MPS","MPS ",$tafcode);
$tafcode=str_replace("KMH","KMH ",$tafcode);
$tafcode=str_replace("SKC"," SKC",$tafcode);
$tafcode=str_replace("CLR"," CLR",$tafcode);
$tafcode=str_replace("FEW"," FEW",$tafcode);
$tafcode=str_replace("SCT"," SCT",$tafcode);
$tafcode=str_replace("BKN"," BKN",$tafcode);
$tafcode=str_replace("OVC"," OVC",$tafcode);
$tafcode=str_replace("TAF"," TAF ",$tafcode);
$tafcode=str_replace("METAR"," METAR ",$tafcode);
$tafcode=str_replace("RTD"," RTD",$tafcode);
$tafcode=str_replace("VRB"," VRB",$tafcode);
$tafcode=str_replace("CB ","CB ",$tafcode);
$tafcode=str_replace("TCU","TCU ",$tafcode);
$tafcode=str_replace("Q"," Q",$tafcode);
$tafcode=str_replace("QNH"," QNH",$tafcode);
$tafcode=str_replace("WS"," WS ",$tafcode);
$tafcode=str_replace("LDG"," LDG ",$tafcode);
$tafcode=str_replace("RWY"," RWY",$tafcode);
$tafcode=str_replace("TKOF"," TKOF ",$tafcode);
$tafcode=str_replace("VV"," VV",$tafcode);
$tafcode=str_replace("+"," +",$tafcode);
$tafcode=str_replace("-"," -",$tafcode);
$ktpos=0;
while ($ktpos=strpos("$tafcode ","KT",($ktpos+2))) {
if (substr($tafcode,($ktpos-3),1)=="G") {
$tafcode = substr($tafcode,0,($ktpos-8)) . " " . substr($tafcode,($ktpos-8));
} else {
$tafcode = substr($tafcode,0,($ktpos-5)) . " " . substr($tafcode,($ktpos-5));
}
}
$tafcode=trim($tafcode);
while (strpos($tafcode," ")) {
$tafcode=str_replace(" "," ",$tafcode);
}
$tafItemArray=explode(" ",$tafcode);
for ($a=0;$a 12) {
$aktualhour-=12;
$ampm="PM";
}
$returner = "this month´s " . (1*substr($tafItemArray[$a],0,2)) . numberPrefix(substr($tafItemArray[$a],0,2)) . ", ";
$returner.= $aktualhour . ":" . substr($tafItemArray[$a],4,2) . " $ampm GMT";
} else {
$returner = (1*substr($tafItemArray[$a],0,2)) . ". dieses Monats, ";
$returner.= substr($tafItemArray[$a],2,2) . ":" . substr($tafItemArray[$a],4,2) . " GMT";
}
break;
}
}
if (isset($returner)) {
return $returner;
} else {
return false;
}
}
function getValidTime($tafcode,$lang) {
$tafItemArray=clearTAF($tafcode);
for ($a=0;$a 12) {
$fromHour-=12;
$ampmFrom="PM";
}
if ($toHour > 12) {
$toHour-=12;
$ampmTo="PM";
}
$returner = "this month´s " . (1*substr($tafItemArray[$a],0,2)) . numberPrefix(substr($tafItemArray[$a],0,2)) . ", ";
$returner.= "$fromHour:00 $ampmFrom to $toHour:00 $ampmTo GMT $toNextDay";
} else {
$toNextDay = str_replace("next day", "nächster Tag", $toNextDay);
$returner = (1*substr($tafItemArray[$a],0,2)) . ". dieses Monats ";
$returner.= "$fromHour:00 bis $toHour:00 GMT $toNextDay";
}
break;
}
}
if (isset($returner)) {
return $returner;
} else {
return false;
}
}
function getShortValidTime($tafcode,$lang) {
$tafItemArray=clearTAF($tafcode);
for ($a=0;$a 12) {
$fromHour-=12;
$ampmFrom="PM";
}
if ($toHour > 12) {
$toHour-=12;
$ampmTo="PM";
}
$returner.= "$fromHour:00 $ampmFrom to $toHour:00 $ampmTo GMT $toNextDay";
} else {
$toNextDay = str_replace("next day", "nächster Tag", $toNextDay);
$returner.= "$fromHour:00 bis $toHour:00 GMT $toNextDay";
}
break;
}
}
if (isset($returner)) {
return $returner;
} else {
return false;
}
}
function getFmTime($tafcode, $lang) {
$tafItemArray=clearTAF($tafcode);
for ($a=0;$a 12) {
$hour-=12;
$ampm="PM";
}
$returner.= "$hour:$minutes $ampm GMT";
} else {
$returner.= "$hour:$minutes GMT";
}
break;
}
}
if (isset($returner)) {
return $returner;
} else {
return false;
}
}
function windBeaufort($item) {
$beaufort[]=0;
$beaufort[]=1;
$beaufort[]=4;
$beaufort[]=7;
$beaufort[]=11;
$beaufort[]=16;
$beaufort[]=22;
$beaufort[]=28;
$beaufort[]=34;
$beaufort[]=41;
$beaufort[]=48;
$beaufort[]=56;
$beaufort[]=64;
for ($a=0;$a<=12;$a++) {
if ($item >= $beaufort[$a]) $windbeauf=$a;
}
return $windbeauf;
}
function windRose($item) {
$winddir[]="N";
$winddir[]="NNE";
$winddir[]="NE";
$winddir[]="ENE";
$winddir[]="E";
$winddir[]="ESE";
$winddir[]="SE";
$winddir[]="SSE";
$winddir[]="S";
$winddir[]="SSW";
$winddir[]="SW";
$winddir[]="WSW";
$winddir[]="W";
$winddir[]="WNW";
$winddir[]="NW";
$winddir[]="NNW";
$winddir[]="N";
return $winddir[round($item*16/360)];
}
function getWind($tafcode) {
$tafItemArray=clearTAF($tafcode);
for ($a=0;$a0) && ($dewpoint>0)) {
$ssdTemp=pow(10,((7.5*$temperature)/(237.3+$temperature)));
$ssdDew=pow(10,((7.5*$dewpoint)/(237.3+$dewpoint)));
return round(100*$ssdDew/$ssdTemp);
} else {
return false;
}
} else {
return false;
}
}
function getTafTemp($tafcode,$lang) {
$tafItemArray=clearTAF($tafcode);
for ($a=0;$a 12) {
$returner["time"] -= 12;
$ampm="PM";
}
$returner["time"] .= ":00 $ampm";
} else {
$returner["time"] .= ":00";
}
$returner["time"] .= " GMT";
break;
}
}
if (isset($returner)) {
return $returner;
} else {
return false;
}
}
function getPressure($tafcode) {
$tafItemArray=clearTAF($tafcode);
for ($a=0;$a $localDay) {
$now += (24*3600); // noch von gestern!
}
if ($now < ($rise-3600)) {
$pre="night";
} else if ($now < ($rise+3600)) {
$pre="dawn";
} else if ($now < ($set-3600)) {
$pre="day";
} else if ($now < ($set+3600)) {
$pre="dawn";
} else {
$pre="night";
}
} else {
$pre="day";
}
if ($pic=="?") {
$graficfile = "fragezeichen.jpg";
} else {
$graficfile = $pre . "_" . $pic . ".jpg";
if (strpos($graficfile,"thunderstorm")) $graficfile = str_replace(".jpg",".gif",$graficfile);
}
return $graficfile;
}
function getSky($tafcode,$lang) {
$cloudlayer = 0;
$upToNowSky = 0;
while ($clouds = getClouds ($tafcode, $cloudlayer++, $lang)) {
if ($clouds["cov1"] > $upToNowSky) {
$upToNowSky = $clouds["cov1"];
if (($clouds["cumulus"] == "yes") && ($cumulus != " towering cumulus clouds observed")) {
$cumulus = " with cumulus clouds";
}
if ($clouds["cumulus"] == "towering") $cumulus = " towering cumulus clouds observed";
}
$moreclouds = "yes";
}
switch ($upToNowSky) {
case "0":
$returner = "sky clear";
break;
case "1":
$returner = "few clouds";
break;
case "3":
$returner = "partly cloudy";
break;
case "5":
$returner = "mostly cloudy";
break;
case "8":
$returner = "sky overcast";
break;
case "9":
$returner = "no significant clouds below 5,000 ft";
break;
}
if ($moreclouds == "yes") {
$returner = "$returner$cumulus";
} else {
$returner = false;
}
if (($lang == "DE") || ($lang == "de")) {
$returner = str_replace("no significant clouds below 5,000 ft","keine wesentliche Bewölkung unter 1.500 Meter",$returner);
$returner = str_replace("sky clear","wolkenlos",$returner);
$returner = str_replace("few clouds","leichte Bewölkung",$returner);
$returner = str_replace("partly cloudy","teilweise bewölkt",$returner);
$returner = str_replace("mostly cloudy","überwiegend bewölkt",$returner);
$returner = str_replace("sky overcast","bedeckter Himmel",$returner);
$returner = str_replace("towering cumulus clouds observed","Gewitterwolken beobachtet",$returner);
$returner = str_replace("with cumulus clouds","mit Cumulus Wolken",$returner);
$returner = str_replace("not reported","k/A",$returner);
}
return $returner;
}
function getClouds($tafcode,$number,$lang) {
$lang=strtolower($lang);
$tafItemArray=clearTAF($tafcode);
$aktualCloudBase = 0;
for ($a=0;$a
";
}
$returner .= "Actual weather ";
if ($issuetime = getIssueTime ($metarParts[$a], $lang)) {
$returner .= "from $issuetime";
}
$returner .= ":
\n";
break;
case "becmg":
$returner .= "2 hours trend:\n";
break;
case "tempo":
$returner .= "2 hours trend: temporarily\n";
break;
case "nosig":
$returner .= "2 hours trend: no changes
\n";
break;
}
if ($wind = getWind($metarParts[$a])) {
if ($wind["dir"]=="variable") {
$returner .= "Wind direction changing ";
} else {
$returner .= "Winds from ".$wind["dir"]." (".$wind["deg"]."°) ";
}
$returner .= "force ".$wind["wbf"]." beaufort (";
$returner .= $wind["wkt"]." knots)";
if ($wind["gkt"] > $wind["wkt"]) {
$returner .= " with gusts up to ".$wind["gbf"];
$returner .= " beaufort (".$wind["gkt"]." knots)";
}
$returner .= ",\n";
}
if ($temp = getMetarTemp($metarParts[$a])) {
$returner .= "Temperature: $temp°C,\n";
}
if ($dew = getMetarDewpoint($metarParts[$a])) {
$returner .= "Dewpoint: $dew°C,\n";
}
if ($hum = getMetarHumidity($metarParts[$a])) {
$returner .= "Humidity: $hum %,\n";
}
if ($press = getPressure($metarParts[$a])) {
$returner .= "Air pressure: $press hPa,\n";
}
if ($vis = getVisibility($metarParts[$a])) {
$returner .= "Visibility: ";
if ($vis == 9999) {
$returner .= "more than 10 km,\n";
} else if ($vis == 8888) {
$returner .= "more than 10 km, no clouds below 5000 ft, no precipitation\n";
} else if ($vis < 10000) {
$returner .= "$vis meters,\n";
} else if ($vis >= 10000) {
$returner .= round($vis/1000) . " km,\n";
}
}
if ($sky = getSky($metarParts[$a],$lang)) {
$returner .= "$sky,\n";
}
if ($cond = getConditions($metarParts[$a],$lang)) {
if ($cond == "nsw") {
if ($weatherType["type"]=="main") {
$returner .= "no significant weather\n";
$oldcond = "no significant weather\n"; // if this appears the meteorologist
} else { // must be stupid: NSW will breakup ROFL
$returner .= "$oldcond will breakup\n";
}
} else {
$returner .= "$cond\n";
$oldcond = $cond;
$oldcond = str_replace("light ","",$oldcond);
$oldcond = str_replace("heavy ","",$oldcond);
$oldcond = str_replace("vereinzelt ","",$oldcond);
$oldcond = str_replace("verstärkt ","",$oldcond);
}
}
$returner .= "
\n";
}
if (($lang == "DE") || ($lang == "de")) $returner=translateEasyWeather($returner);
return $returner;
}
function displayEasyForecast($TAF,$lang) {
$tafParts = getTafParts($TAF);
for ($a=0;$a
";
}
$returner .= "Forecast ";
if ($validtime = getValidTime ($tafParts[$a], $lang)) {
$returner .= "for $validtime";
}
$returner .= ":
\n";
break;
case "prob":
$returner .= "there is a probability of ".$forecast["chance"]." %\n";
if ($forecast["init"] == 2) {
$returner .= "between " . getShortValidTime($tafParts[$a],$lang)."\n";
}
$returner .= "for:
\n";
break;
case "becmg":
$returner .= "";
if ($forecast["chance"] != 100) {
$returner .= "there is a probability of ".$forecast["chance"]." % that\n";
if ($forecast["init"] == 3) {
$returner .= "between " . getShortValidTime($tafParts[$a],$lang)."\n";
}
} else {
if ($forecast["init"] == 2) {
$returner .= "between " . getShortValidTime($tafParts[$a],$lang)."\n";
}
}
$returner .= "weather will turn into:
\n";
break;
case "tempo":
$returner .= "";
if ($forecast["chance"] != 100) {
$returner .= "there is a probability of ".$forecast["chance"]." % that\n";
if ($forecast["init"] == 3) {
$returner .= "between " . getShortValidTime($tafParts[$a],$lang)."\n";
}
} else {
if ($forecast["init"] == 2) {
$returner .= "between " . getShortValidTime($tafParts[$a],$lang)."\n";
}
}
$returner .= "weather will temporarily change into:
\n";
break;
case "amfm":
$returner .= "";
if ($forecast["chance"] != 100) {
$returner .= "there is a probability of ".$forecast["chance"]." % that\n";
}
$returner .= "at " . getFmTime($tafParts[$a], $lang) ."\n";
$returner .= "weather change into:
\n";
break;
}
if ($wind = getWind($tafParts[$a])) {
if ($wind["dir"]=="variable") {
$returner .= "Wind direction changing ";
} else {
$returner .= "Winds from ".$wind["dir"]." (".$wind["deg"]."°) ";
}
$returner .= "force ".$wind["wbf"]." beaufort (";
$returner .= $wind["wkt"]." knots)";
if ($wind["gkt"] > $wind["wkt"]) {
$returner .= " with gusts up to ".$wind["gbf"];
$returner .= " beaufort (".$wind["gkt"]." knots)";
}
$returner .= ",\n";
}
if ($temp = getTafTemp($tafParts[$a],$lang)) {
$returner .= "Temperature: " . $temp["temp"] . "°C at " . $temp["time"] . ",\n";
}
if ($dew = getMetarDewpoint($tafParts[$a])) {
$returner .= "Dewpoint: $dew°C,\n";
}
if ($hum = getMetarHumidity($tafParts[$a])) {
$returner .= "Humidity: $hum %,\n";
}
if ($press = getPressure($tafParts[$a])) {
$returner .= "Air pressure: $press hPa,\n";
}
if ($vis = getVisibility($tafParts[$a])) {
$returner .= "Visibility: ";
if ($vis == 9999) {
$returner .= "more than 10 km,\n";
} else if ($vis == 8888) {
$returner .= "more than 10 km, no clouds below 5000 ft, no precipitation\n";
} else if ($vis < 10000) {
$returner .= "$vis meters,\n";
} else if ($vis >= 10000) {
$returner .= round($vis/1000) . " km,\n";
}
}
if ($sky = getSky($tafParts[$a],$lang)) {
$returner .= "$sky,\n";
}
if ($cond = getConditions($tafParts[$a],$lang)) {
if ($cond == "nsw") {
if ($weatherType["type"]=="main") {
$returner .= "no significant weather\n";
$oldcond = "no significant weather\n"; // if this appears the meteorologist
} else { // must be stupid: NSW will breakup ROFL
$returner .= "$oldcond will breakup\n";
}
} else {
$returner .= "$cond\n";
$oldcond = $cond;
$oldcond = str_replace("light ","",$oldcond);
$oldcond = str_replace("heavy ","",$oldcond);
$oldcond = str_replace("vereinzelt ","",$oldcond);
$oldcond = str_replace("verstärkt ","",$oldcond);
}
}
$returner .= "
\n";
}
if (($lang == "DE") || ($lang == "de")) $returner=translateEasyWeather($returner);
return $returner;
}
function displayCountryMenu($name,$class) {
global $$name;
$predef = $$name;
$urlParts = explode("/",$_SERVER['SCRIPT_NAME']);
$filename = $urlParts[(count($urlParts)-1)];
$returner .= "\n";
return $returner;
}
function displayStationMenu($state,$name,$class) {
global $$name;
$predef = $$name;
$returner .= "\n";
return $returner;
}
function getTafParts($tafcode) {
$tafItemArray=clearTAF($tafcode);
$lastTafindex = 0;
$aktTafIndex = 0;
for ($a=0;$a ($lastTafindex+2))) {
for ($b=$lastTafindex;$b<$a;$b++) {
$returner[$aktTafIndex] .= " ".$tafItemArray[$b];
}
$returner[$aktTafIndex] = trim($returner[$aktTafIndex]);
$lastTafindex = $a;
$aktTafIndex++;
}
}
for ($b=$lastTafindex;$b<$a;$b++) {
$returner[$aktTafIndex] .= " ".$tafItemArray[$b];
}
if (isset($returner)) {
return $returner;
} else {
return false;
}
}
function getMetarParts($tafcode) {
$tafItemArray=clearTAF($tafcode);
$lastTafindex = 0;
$aktTafIndex = 0;
for ($a=0;$a ($lastTafindex+2))) {
for ($b=$lastTafindex;$b<$a;$b++) {
$returner[$aktTafIndex] .= " ".$tafItemArray[$b];
}
$returner[$aktTafIndex] = trim($returner[$aktTafIndex]);
$lastTafindex = $a;
$aktTafIndex++;
}
}
for ($b=$lastTafindex;$b<$a;$b++) {
$returner[$aktTafIndex] .= " ".$tafItemArray[$b];
}
if (isset($returner)) {
return $returner;
} else {
return false;
}
}
function getTafType($tafcode) {
$tafItemArray=clearTAF($tafcode);
if (ereg("^FM([0-9]{4})$", $tafItemArray[0])) {
$returner["chance"] = 100;
$returner["type"] = "amfm";
$returner["init"] = 1;
} else if (ereg("^PROB([0-9]{2})$", $tafItemArray[0]) && ereg("^FM([0-9]{4})$", $tafItemArray[1])) {
$returner["chance"] = 1 * substr($tafItemArray[0],4,2);
$returner["type"] = "amfm";
$returner["init"] = 2;
} else if (($tafItemArray[0] == "BECMG") && !ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[1])) {
$returner["chance"] = 100;
$returner["type"] = "becmg";
$returner["init"] = 1;
} else if (($tafItemArray[0] == "BECMG") && ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[1])) {
$returner["chance"] = 100;
$returner["type"] = "becmg";
$returner["init"] = 2;
} else if (ereg("^PROB([0-9]{2})$", $tafItemArray[0]) && ($tafItemArray[1] == "BECMG")
&& !ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[2])) {
$returner["chance"] = 1 * substr($tafItemArray[0],4,2);
$returner["type"] = "becmg";
$returner["init"] = 2;
} else if (ereg("^PROB([0-9]{2})$", $tafItemArray[0]) && ($tafItemArray[1] == "BECMG")
&& ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[2])) {
$returner["chance"] = 1 * substr($tafItemArray[0],4,2);
$returner["type"] = "becmg";
$returner["init"] = 3;
} else if (($tafItemArray[0] == "TEMPO") && !ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[1])) {
$returner["chance"] = 100;
$returner["type"] = "tempo";
$returner["init"] = 1;
} else if (($tafItemArray[0] == "TEMPO") && ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[1])) {
$returner["chance"] = 100;
$returner["type"] = "tempo";
$returner["init"] = 2;
} else if (ereg("^PROB([0-9]{2})$", $tafItemArray[0]) && ($tafItemArray[1] == "TEMPO")
&& !ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[2])) {
$returner["chance"] = 1 * substr($tafItemArray[0],4,2);
$returner["type"] = "tempo";
$returner["init"] = 2;
} else if (ereg("^PROB([0-9]{2})$", $tafItemArray[0]) && ($tafItemArray[1] == "TEMPO")
&& ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[2])) {
$returner["chance"] = 1 * substr($tafItemArray[0],4,2);
$returner["type"] = "tempo";
$returner["init"] = 3;
} else if (ereg("^PROB([0-9]{2})$", $tafItemArray[0]) && ($tafItemArray[1] != "BECMG")
&& ($tafItemArray[1] != "TEMPO") && !ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[1])) {
$returner["chance"] = 1 * substr($tafItemArray[0],4,2);
$returner["type"] = "prob";
$returner["init"] = 1;
} else if (ereg("^PROB([0-9]{2})$", $tafItemArray[0]) && ereg("^(((([01]{1})([0-9]{1}))|(2([0-4]{1}))){2})$", $tafItemArray[1])) {
$returner["chance"] = 1 * substr($tafItemArray[0],4,2);
$returner["type"] = "prob";
$returner["init"] = 2;
} else {
$returner["chance"] = 100;
$returner["type"] = "main";
$returner["init"] = 0;
}
return $returner;
}
function getMetarType($tafcode) {
$tafItemArray=clearTAF($tafcode);
if ($tafItemArray[0]=="BECMG") {
$returner["chance"] = 100;
$returner["type"] = "becmg";
$returner["init"] = 1;
} else if ($tafItemArray[0]=="TEMPO") {
$returner["chance"] = 100;
$returner["type"] = "tempo";
$returner["init"] = 1;
} else if ($tafItemArray[0]=="NOSIG") {
$returner["chance"] = 100;
$returner["type"] = "nosig";
$returner["init"] = 1;
} else {
$returner["chance"] = 100;
$returner["type"] = "main";
$returner["init"] = 0;
}
return $returner;
}
?>