Jump to content

ERuiz

Members
  • Posts

    83
  • Joined

  • Last visited

    Never

Everything posted by ERuiz

  1. Worked perfectly, thanks!
  2. Well, I THOUGHT I had it fixed! I need help again guys... function get_taf($station) { $fileName = "ftp://tgftp.nws.noaa.gov/data/forecasts/taf/stations/$station.TXT"; $taf = ''; $fileData = @file($fileName); if ($fileData != false) { list($i, $date) = each($fileData); while (list($i, $line) = each($fileData)) { $taf .= ' ' . trim($line); } $taf = trim(str_replace(' ', ' ', $taf)); } return $taf; } How can I have this script return "NO DATA AVAILABLE" to $taf, if the file is not found on the server?
  3. *SLAPS HEAD*! Nevermind guys, I fixed it.
  4. Hello guys and gals, I have a small problem. The following script: <?php function get_metar($station) { $fileName = "ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/$station.TXT"; $metar = ''; $fileData = @file($fileName); // or die('Data not available'); if ($fileData != false) { list($i, $date) = each($fileData); while (list($i, $line) = each($fileData)) { $metar .= ' ' . trim($line); } $metar = trim(str_replace(' ', ' ', $metar)); } return $metar; } $dep_station = "KMIA"; $dep_metar = get_metar($dep_station); echo $dep_metar; ?> fetches the file and displays it. The file's contents is this format: 2007/11/01 04:56 TJSJ 010456Z 10007KT 10SM FEW080 26/23 A2991 RMK AO2 SLP126 T02610228 Now, how can I change the code above, so that it will fetch a different file, which has the data stored in a different format such as this one: 2007/11/01 02:25 TAF AMD KMIA 010225Z 010224 05009G20KT P6SM VCSH FEW015 SCT025 BKN045 FM0300 05011KT P6SM VCSH FEW015 SCT025 BKN045 FM1400 03016G26KT P6SM VCSH FEW015 SCT025 BKN040 FM1800 01014G24KT P6SM VCSH FEW015 SCT025 BKN040 I changed the URL on the code to point to the new data, but it will not display anything. Here is the code that needs to be fixed: <?php function get_metar($station) { $fileName = "ftp://tgftp.nws.noaa.gov/data/observations/taf/stations/$station.TXT"; $metar = ''; $fileData = @file($fileName); // or die('Data not available'); if ($fileData != false) { list($i, $date) = each($fileData); while (list($i, $line) = each($fileData)) { $metar .= ' ' . trim($line); } $metar = trim(str_replace(' ', ' ', $metar)); } return $metar; } $dep_station = "KMIA"; $dep_metar = get_metar($dep_station); echo $dep_metar; ?> I might be wrong, but I think the code is not properly stripping down the data.
  5. Worked wonderfully! THANKS!!!!
  6. Hello guys and gals, How can I convert: $value = 4.51666666667; into hours:minutes? $hours = 4; $minutes = 30; Thanks for the help, as always!
  7. I didn't want to let you down, so here it is: $fuel = sprintf("%04d", $fuel);
  8. THANKS!!! I really appreciate it!
  9. Hello guys and gals, Please don't laugh, since I know this will be an easy question, but how can I make this value: $fuel = "19312.92"; end up looking like this: $fuel = "193"; And if possible, always insert a ZERO in front of the result, so that it ends up looking like this: $fuel = "0193"; Ok, stop laughing now. LMAO! Thanks for any help as always!
  10. Can the iframe be invisible and can it adjust itself to the document without displaying scroll bars? Also, if I print the page, will it also display what's inside the iframe?
  11. Hello guys and gals, I don't know if this is the right forum to ask this, but here it goes... Is there a way for me to be able to fetch a PDF from another site and display it on my website without having to open up Adobe Reader? In other words, I would like to have this PDF document: http://flightaware.com/resources/airport/ASE/APD/AIRPORT+DIAGRAM/pdf to be displayed on a page when a user opens a page on my website. Thanks for any help... ERuiz
  12. Thanks wildteen!!! Worked like a charm! Thanks to Richard too! I really appreciate the help guys, I really do.
  13. Try this: $time = $row['time']; $time = date("H:i:s", $time);
  14. I've tried and tried, Richard, but I can't get it to work.
  15. You gotta be kidding me, you serious? That simple? THANKS!
  16. Let say I have a mysql query, which might yield more than 1 row when queried. How can I set up the query, so that it RANDOMLY selects one of the results? I know that I can do a LIMIT 1 command, but this will always yield the first row. Thanks for any guidance... ERuiz
  17. Sure, try KMIA
  18. It's a pretty long code, so here it goes my friend: <?php // **** FUNCTIONS **** function get_metar($station, &$wxInfo) { // This function retrieves METAR information for a given station from the // National Weather Service. It assumes that the station exists. // A slower URL is "ftp://weather.noaa.gov/data/observations/metar/stations/$station.TXT" $fileName = "http://weather.noaa.gov/pub/data/observations/metar/stations/$station.TXT"; $metar = ''; $fileData = @file($fileName); // or die('Data not available'); if ($fileData != false) { list($i, $date) = each($fileData); $utc = strtotime(trim($date)); set_time_data($utc,$wxInfo); while (list($i, $line) = each($fileData)) { $metar .= ' ' . trim($line); } $metar = trim(str_replace(' ', ' ', $metar)); } return $metar; } function set_time_data($utc, &$wxInfo) { // This function formats observation time in the local time zone of server, the // current local time on server, and time difference since observation. $utc is a // UNIX timestamp for Universal Coordinated Time (Greenwich Mean Time or Zulu Time). $timeZoneOffset = date('Z'); $local = $utc + $timeZoneOffset; $wxInfo['OBSERVED'] = date('D M j, H:i T',$local); $now = time(); $wxInfo['NOW'] = date('D M j, H:i T',$now); $timeDiff = floor(($now - $local) / 60); if ($timeDiff < 91) $wxInfo['AGE'] = "$timeDiff min ago"; else { $min = $timeDiff % 60; if ($min < 10) $min = '0' . $min; $wxInfo['AGE'] = floor($timeDiff / 60) . ":$min hr ago"; } } function process_metar($metar, &$wxInfo) { // This function directs the examination of each group of the METAR. The problem // with a METAR is that not all the groups have to be there. Some groups could be // missing. Fortunately, the groups must be in a specific order. (This function // also assumes that a METAR is well-formed, that is, no typographical mistakes.) // This function uses a function variable to organize the sequence in which to // decode each group. Each function checks to see if it can decode the current // METAR part. If not, then the group pointer is advanced for the next function // to try. If yes, the function decodes that part of the METAR and advances the // METAR pointer and group pointer. (If the function can be called again to // decode similar information, then the group pointer does not get advanced.) if ($metar != '') { $metarParts = explode(' ',$metar); $groupName = array('get_station','get_time','get_station_type','get_wind','get_var_wind','get_visibility','get_runway','get_conditions','get_cloud_cover','get_temperature','get_altimeter'); $metarPtr = 1; // get_station identity is ignored $group = 1; while ($group < count($groupName)) { $part = $metarParts[$metarPtr]; $groupName[$group]($part,$metarPtr,$group,$wxInfo); // $groupName is a function variable } } else $wxInfo['ERROR'] = 'Data not available'; } function get_station($part, &$metarPtr, &$group, &$wxInfo) { // Ignore station code. Script assumes this matches requesting $station. // This function is never called. It is here for completeness of documentation. if (strlen($part) == 4 and $group == 0) { $group++; $metarPtr++; } } function get_time($part, &$metarPtr, &$group, &$wxInfo) { // Ignore observation time. This information is found in the first line of the NWS file. // Format is ddhhmmZ where dd = day, hh = hours, mm = minutes in UTC time. if (substr($part,-1) == 'Z') $metarPtr++; $group++; } function get_station_type($part, &$metarPtr, &$group, &$wxInfo) { // Ignore station type if present. if ($part == 'AUTO' || $part == 'COR') $metarPtr++; $group++; } function get_wind($part, &$metarPtr, &$group, &$wxInfo) { // Decodes wind direction and speed information. // Format is dddssKT where ddd = degrees from North, ss = speed, KT for knots, // or dddssGggKT where G stands for gust and gg = gust speed. (ss or gg can be a 3-digit number.) // KT can be replaced with MPH for meters per second or KMH for kilometers per hour. function speed($part, $unit) { // Convert wind speed into miles per hour. // Some other common conversion factors (to 6 significant digits): // 1 mi/hr = 1.15080 knots = 0.621371 km/hr = 2.23694 m/s // 1 ft/s = 1.68781 knots = 0.911344 km/hr = 3.28084 m/s // 1 knot = 0.539957 km/hr = 1.94384 m/s // 1 km/hr = 1.852 knots = 3.6 m/s // 1 m/s = 0.514444 knots = 0.277778 km/s if ($unit == 'KT') $speed = round(1.1508 * $part); // from knots elseif ($unit == 'MPS') $speed = round(2.23694 * $part); // from meters per second else $speed = round(0.621371 * $part); // from km per hour $speed = "$speed mph"; return $speed; } if (ereg('^([0-9G]{5,10}|VRB[0-9]{2,3})(KT|MPS|KMH)$',$part,$pieces)) { $part = $pieces[1]; $unit = $pieces[2]; if ($part == '00000') { $wxInfo['WIND'] = 'calm'; // no wind } else { ereg('([0-9]{3}|VRB)([0-9]{2,3})G?([0-9]{2,3})?',$part,$pieces); if ($pieces[1] == 'VRB') $direction = 'varies'; else { $angle = (integer) $pieces[1]; $compass = array('N','NNE','NE','ENE','E','ESE','SE','SSE','S','SSW','SW','WSW','W','WNW','NW','NNW'); $direction = $compass[round($angle / 22.5) % 16]; } if ($pieces[3] == 0) $gust = ''; else $gust = ', gusting to ' . speed($pieces[3], $unit); $wxInfo['WIND'] = $direction . ' at ' . speed($pieces[2], $unit) . $gust; } $metarPtr++; } $group++; } function get_var_wind($part, &$metarPtr, &$group, &$wxInfo) { // Ignore variable wind direction information if present. // Format is fffVttt where V stands for varies from fff degrees to ttt degrees. if (ereg('([0-9]{3})V([0-9]{3})',$part,$pieces)) $metarPtr++; $group++; } function get_visibility($part, &$metarPtr, &$group, &$wxInfo) { // Decodes visibility information. This function will be called a second time // if visibility is limited to an integer mile plus a fraction part. // Format is mmSM for mm = statute miles, or m n/dSM for m = mile and n/d = fraction of a mile, // or just a 4-digit number nnnn (with leading zeros) for nnnn = meters. static $integerMile = ''; if (strlen($part) == 1) { // visibility is limited to a whole mile plus a fraction part $integerMile = $part . ' '; $metarPtr++; } elseif (substr($part,-2) == 'SM') { // visibility is in miles $part = substr($part,0,strlen($part)-2); if (substr($part,0,1) == 'M') { $prefix = 'less than '; $part = substr($part, 1); } else $prefix = ''; if (($integerMile == '' && ereg('[/]',$part,$pieces)) || $part == '1') $unit = ' mile'; else $unit = ' miles'; $wxInfo['VISIBILITY'] = $prefix . $integerMile . $part . $unit; $metarPtr++; $group++; } elseif (substr($part,-2) == 'KM') { // unknown (Reported by NFFN in Fiji) $metarPtr++; $group++; } elseif (ereg('^([0-9]{4})$',$part,$pieces)) { // visibility is in meters $distance = round($part/ 621.4, 1); // convert to miles if ($distance > 5) $distance = round($distance); if ($distance <= 1) $unit = ' mile'; else $unit = ' miles'; $wxInfo['VISIBILITY'] = $distance . $unit; $metarPtr++; $group++; } elseif ($part == 'CAVOK') { // good weather $wxInfo['VISIBILITY'] = 'greater than 7 miles'; // or 10 km $wxInfo['CONDITIONS'] = ''; $wxInfo['CLOUDS'] = 'clear skies'; $metarPtr++; $group += 4; // can skip the next 3 groups } else { $group++; } } function get_runway($part, &$metarPtr, &$group, &$wxInfo) { // Ignore runway information if present. Maybe called a second time. // Format is Rrrr/vvvvFT where rrr = runway number and vvvv = visibility in feet. if (substr($part,0,1) == 'R') $metarPtr++; else $group++; } function get_conditions($part, &$metarPtr, &$group, &$wxInfo) { // Decodes current weather conditions. This function maybe called several times // to decode all conditions. To learn more about weather condition codes, visit section // 12.6.8 - Present Weather Group of the Federal Meteorological Handbook No. 1 at // www.nws.noaa.gov/oso/oso1/oso12/fmh1/fmh1ch12.htm static $conditions = ''; static $wxCode = array( 'VC' => 'nearby', 'MI' => 'shallow', 'PR' => 'partial', 'BC' => 'patches of', 'DR' => 'low drifting', 'BL' => 'blowing', 'SH' => 'showers', 'TS' => 'thunderstorm', 'FZ' => 'freezing', 'DZ' => 'drizzle', 'RA' => 'rain', 'SN' => 'snow', 'SG' => 'snow grains', 'IC' => 'ice crystals', 'PE' => 'ice pellets', 'GR' => 'hail', 'GS' => 'small hail', // and/or snow pellets 'UP' => 'unknown', 'BR' => 'mist', 'FG' => 'fog', 'FU' => 'smoke', 'VA' => 'volcanic ash', 'DU' => 'widespread dust', 'SA' => 'sand', 'HZ' => 'haze', 'PY' => 'spray', 'PO' => 'well-developed dust/sand whirls', 'SQ' => 'squalls', 'FC' => 'funnel cloud, tornado, or waterspout', 'SS' => 'sandstorm/duststorm'); if (ereg('^(-|\+|VC)?(TS|SH|FZ|BL|DR|MI|BC|PR|RA|DZ|SN|SG|GR|GS|PE|IC|UP|BR|FG|FU|VA|DU|SA|HZ|PY|PO|SQ|FC|SS|DS)+$',$part,$pieces)) { if (strlen($conditions) == 0) $join = ''; else $join = ' & '; if (substr($part,0,1) == '-') { $prefix = 'light '; $part = substr($part,1); } elseif (substr($part,0,1) == '+') { $prefix = 'heavy '; $part = substr($part,1); } else $prefix = ''; // moderate conditions have no descriptor $conditions .= $join . $prefix; // The 'showers' code 'SH' is moved behind the next 2-letter code to make the English translation read better. if (substr($part,0,2) == 'SH') $part = substr($part,2,2) . substr($part,0,2). substr($part, 4); while ($code = substr($part,0,2)) { $conditions .= $wxCode[$code] . ' '; $part = substr($part,2); } $wxInfo['CONDITIONS'] = $conditions; $metarPtr++; } else { $wxInfo['CONDITIONS'] = $conditions; $group++; } } function get_cloud_cover($part, &$metarPtr, &$group, &$wxInfo) { // Decodes cloud cover information. This function maybe called several times // to decode all cloud layer observations. Only the last layer is saved. // Format is SKC or CLR for clear skies, or cccnnn where ccc = 3-letter code and // nnn = altitude of cloud layer in hundreds of feet. 'VV' seems to be used for // very low cloud layers. (Other conversion factor: 1 m = 3.28084 ft) static $cloudCode = array( 'SKC' => 'clear skies', 'CLR' => 'clear skies', 'FEW' => 'partly cloudy', 'SCT' => 'scattered clouds', 'BKN' => 'mostly cloudy', 'OVC' => 'overcast', 'VV' => 'vertical visibility'); if ($part == 'SKC' || $part == 'CLR') { $wxInfo['CLOUDS'] = $cloudCode[$part]; $metarPtr++; $group++; } else { if (ereg('^([A-Z]{2,3})([0-9]{3})',$part,$pieces)) { // codes for CB and TCU are ignored $wxInfo['CLOUDS'] = $cloudCode[$pieces[1]]; if ($pieces[1] == 'VV') { $altitude = (integer) 100 * $pieces[2]; // units are feet $wxInfo['CLOUDS'] .= " to $altitude ft"; } $metarPtr++; } else { $group++; } } } function get_temperature($part, &$metarPtr, &$group, &$wxInfo) { // Decodes temperature and dew point information. Relative humidity is calculated. Also, // depending on the temperature, Heat Index or Wind Chill Temperature is calculated. // Format is tt/dd where tt = temperature and dd = dew point temperature. All units are // in Celsius. A 'M' preceeding the tt or dd indicates a negative temperature. Some // stations do not report dew point, so the format is tt/ or tt/XX. function get_heat_index($tempF, $rh, &$wxInfo) { // Calculate Heat Index based on temperature in F and relative humidity (65 = 65%) if ($tempF > 79 && $rh > 39) { $hiF = -42.379 + 2.04901523 * $tempF + 10.14333127 * $rh - 0.22475541 * $tempF * $rh; $hiF += -0.00683783 * pow($tempF, 2) - 0.05481717 * pow($rh, 2); $hiF += 0.00122874 * pow($tempF, 2) * $rh + 0.00085282 * $tempF * pow($rh, 2); $hiF += -0.00000199 * pow($tempF, 2) * pow($rh, 2); $hiF = round($hiF); $hiC = round(($hiF - 32) / 1.; $wxInfo['HEAT INDEX'] = "$hiF°F ($hiC°C)"; } } function get_wind_chill($tempF, &$wxInfo) { // Calculate Wind Chill Temperature based on temperature in F and // wind speed in miles per hour if ($tempF < 51 && $wxInfo['WIND'] != 'calm') { $pieces = explode(' ', $wxInfo['WIND']); $windspeed = (integer) $pieces[2]; // wind speed must be in miles per hour if ($windspeed > 3) { $chillF = 35.74 + 0.6215 * $tempF - 35.75 * pow($windspeed, 0.16) + 0.4275 * $tempF * pow($windspeed, 0.16); $chillF = round($chillF); $chillC = round(($chillF - 32) / 1.; $wxInfo['WIND CHILL'] = "$chillF°F ($chillC°C)"; } } } if (ereg('^(M?[0-9]{2})/(M?[0-9]{2}|[X]{2})?$',$part,$pieces)) { $tempC = (integer) strtr($pieces[1], 'M', '-'); $tempF = round(1.8 * $tempC + 32); $wxInfo['TEMP'] = "$tempF°F ($tempC°C)"; get_wind_chill($tempF, $wxInfo); if (strlen($pieces[2]) != 0 && $pieces[2] != 'XX') { $dewC = (integer) strtr($pieces[2], 'M', '-'); $dewF = round(1.8 * $dewC + 32); $wxInfo['DEWPT'] = "$dewF°F ($dewC°C)"; $rh = round(100 * pow((112 - (0.1 * $tempC) + $dewC) / (112 + (0.9 * $tempC)), ); $wxInfo['HUMIDITY'] = $rh . '%'; get_heat_index($tempF, $rh, $wxInfo); } $metarPtr++; $group++; } else { $group++; } } function get_altimeter($part, &$metarPtr, &$group, &$wxInfo) { // Decodes altimeter or barometer information. // Format is Annnn where nnnn represents a real number as nn.nn in inches of Hg, // or Qpppp where pppp = hectoPascals. // Some other common conversion factors: // 1 millibar = 1 hPa // 1 in Hg = 0.02953 hPa // 1 mm Hg = 25.4 in Hg = 0.750062 hPa // 1 lb/sq in = 0.491154 in Hg = 0.014504 hPa // 1 atm = 0.33421 in Hg = 0.0009869 hPa if (ereg('^(A|Q)([0-9]{4})',$part,$pieces)) { if ($pieces[1] == 'A') { $pressureIN = substr($pieces[2],0,2) . '.' . substr($pieces[2],2); // units are inches Hg $pressureHPA = round($pressureIN / 0.02953); // convert to hectoPascals } else { $pressureHPA = (integer) $pieces[2]; // units are hectoPascals $pressureIN = round(0.02953 * $pressureHPA,2); // convert to inches Hg } $wxInfo['BAROMETER'] = "$pressureHPA hPa ($pressureIN in Hg)"; $metarPtr++; $group++; } else { $group++; } } function print_wxInfo($wxInfo) { // Prints each piece of information stored in the array. // If an error occurs in retrieving a METAR file, check for index called 'ERROR'. // (Modify this function to fit your needs.) $dots = '...............'; foreach($wxInfo As $wxIndex => $wx) { if (strlen($wx) != 0) echo $wxIndex . substr($dots,0,strlen($dots)-strlen($wxIndex)) . " $wx<BR>\n"; } } ?>
  19. Hello Richard, I tried the above and I got the following error: Fatal error: Cannot redeclare speed() (previously declared in /functions_weather.php:93) in /functions_weather.php on line 93
  20. Hello guys and gals, I am having a small problem. I have a small script which gets a METAR feed, processes it and then displays the weather information. The problem is that it will accept 1 weather station as an input variable. How can I run this script TWICE within the same execution, while getting 2 results, using 2 different weather stations? The main file uses this to execute the functions which are on another separate file: <?php require_once ("functions_weather.php"); $station = "KJFK"; $wxInfo['STATION'] = $station; $metar = get_metar($station,$wxInfo); process_metar($metar,$wxInfo); echo "METAR = $metar<BR><BR>\n"; print_wxInfo($wxInfo); ?> The echo line prints out the raw METAR feed and then outputs 2 carriage returns. The print line outputs the processed METAR in a more detailed manner. What I basically want is to be able to add a $station2 and output both stations. Thanks in advance. Regards, ERuiz
  21. Thanks! That did the trick! Also MANY thanks to darkfreaks, who also helped out. Thanks to both you guys. ERuiz
  22. The result of $randarray is coming back as 1
  23. Exactly, I simply want it to randomly choose between these 3 options: SK, JQ, RP
  24. Hello guys and gals, Look at the following code: if ($carrier == "Chautauqua Airlines") { $reg_number = rand (100, 999); $reg_number = "N".$reg_number."SK"; } As you can see, if $carrier equals Chautauqua Airlines, then it will make a random number from 100-999 and build the following result: N###SK What I want to know is how can I also make this code so that instead of always using SK, it would randomly select between using SK or JQ or RP? Thanks for any help, as always. Regards, ERuiz
  25. This did the trick! Thanks a million, my friend. Regards, ERuiz
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.