#!/usr/bin/perl use strict; use LWP::Simple; use CGI; use Geo::METAR; use Time::Local; #my $sfo_url = "http://www.wrh.noaa.gov/cgi-bin/wrhq/GetMetar.cgi?SFO+Metar"; my $sfo_url = "http://www.wrh.noaa.gov/mesowest/getobext.php?wfo=mtr&sid=sfo&num=48&raw=0&banner=off"; # http://www.wrh.noaa.gov/mesonet/getobext.php?wfo=mtr&sid=sfo&num=48&raw=0 #my $sfo_url = "http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=ksfo"; #my $sancarlos_url = "http://www.wrh.noaa.gov/cgi-bin/wrhq/GetMetar.cgi?SQL+Metar"; my $sancarlos_url = "http://www.wrh.noaa.gov/mesowest/getobext.php?wfo=mtr&sid=sql&num=48&raw=0&banner=off"; #my $sfports_url = "http://sfports.wr.usgs.gov/cgi-bin/WindTide.cgi"; my $sfports_url = "http://sfports.wr.usgs.gov/cgi-bin/SFPORTS/WindTide.cgi"; #my $sfmfcast_url ="http://www.wrh.noaa.gov/cgi-bin/wrhq/TotalForecast.csh?TotalForecast+WR+PZ+530"; my $sfmfcast_url ="http://www.wrh.noaa.gov/mtr/getcwfzone.php?sid=MTR&zone=PZ530"; my $wind_url = "http://sfports.wr.usgs.gov/wind/"; #my $tide_img_url = "http://co-ops.nos.noaa.gov/cgi-bin/co-ops_qry_direct2.cgi?stn=9414449+COYOTE+POINT+MARINA%2CS.F.BAY+%2C+CA&unit=1&shift=1&mins=60&dcp=1&ssid=PR&pc=W1&datum=MLLW&format=View+Plot"; #&bdate=20020714&edate=20020715 #my $tide_img_url = "http://co-ops.nos.noaa.gov/cgi-bin/co-ops_qry_direct2.cgi?stn=9414458+SAN+MATEO+BRIDGE%2C+WEST+SIDE+%2C+CA&unit=1&shift=1&mins=6&dcp=1&ssid=PR&pc=W1&datum=MLLW&format=View+Plot"; #&bdate=20020714&edate=20020715 #my $tide_img_url = "http://co-ops.nos.noaa.gov/cgi-bin/co-ops_qry_wlpred.cgi?stn=9414458+SAN+MATEO+BRIDGE%2C+WEST+SIDE+%2C+CA&unit=1&shift=1&mins=6&dcp=1&ssid=PR&pc=W1&datum=MLLW&format=View+Plot"; my $tide_img_url = "http://co-ops.nos.noaa.gov/cgi-bin/co-ops_qry_wlpred.cgi?stn=9414449+COYOTE+POINT+MARINA%2CS.F.BAY+%2C+CA&unit=1&shift=1&mins=6&dcp=1&ssid=PR&pc=W1&datum=MLLW&format=View+Plot"; my $w = new CGI; print $w->header; print $w->title('Bay Area Marine Forecast Summary'); print $w->start_html; print $w->h2('SF Bay Area Marine Forecast Summary'); #print "", "\n"; print "\n
Site | Wind (kts) | Gust (kts) | Direction | Time (PDT) |
\n";
get_marine_forecast ($sfmfcast_url);
print "SF Bay Area Weather Discussion | \n";
print "Small Screen Version
\n";
print "To Weather Links
\n";
print "Data Bouy Summary
\n";
print "
\n"; # Pring out the Wunderground Flash Objects print "
\n"; print "\n"; print "\n"; print "
\n"; print "\n"; print "\n"; #print "\n"; print "
\n"; #get_xml_obs("KSFO"); print $w->end_html; exit(0); ####################### sub print_metar_observations {my $url = shift; my $eng_url; my $sitename = shift; my ($obs_time, $obs_dir, $obs_speed, $obs_gust); ($obs_time, $obs_dir, $obs_speed, $obs_gust) = &get_metar_page ($url); # print "$sitename wind at $obs_time is $obs_speed", "kts "; # if ($obs_gust) {print "gusts to $obs_gust", "kts ";} # print "from $obs_dir\n"; $url =~ m/(.*)raw=3.*/; $eng_url = $1."raw=0"; print "
As of $time
\nThe National Weather Service San Francisco Marine Forecast:
\n $forecast
\n"; } sub grab_wind_img {my $url = shift; my $img_tag; my $page; $page = get($url); $page =~ m/\s\n.*src="(.*)"\swidth/s; #$img_tag = ""; $img_tag = $1; #print "\****\n$1******\n"; return ($img_tag); } sub grab_tide_img { my $url = shift; my ($img_url, $stub, $uri); my $page; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime(time); $year = $year + 1900; $mon++; $mon = sprintf ("%02d", $mon); $mday = sprintf ("%02d", $mday); #&bdate=20020714&edate=20020715 # ($img_url, $stub) = split(/ /,$url); $img_url = $url . "&bdate=" . $year . $mon . $mday; $mday++; $img_url .= "&edate=" . $year . $mon . $mday; # $img_url .= $stub; $page = get ($img_url); $page =~ m/
<\/td><\/tr><\/table><\/p>/;
$uri = $1;
($img_url, $stub) = split(/cgi-bin/, $url);
$img_url .= $uri;
# print "\nImg URL is:", $img_url;
return ($img_url);
}
sub parse_stored_tides
{ my $filename=shift;
my $page;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday);
my ($day1, $day2);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime(time);
$year = $year + 1900;
$mon++;
$day1 = "$mon/$mday/$year";
$mday++;
$day2 = "$mon/$mday/$year";
# open (TIDEFILE, "$filename");
# $page = $day1
}
sub get_xml_obs
{ my $station_name=shift;
my $eng_url=shift;
my $sitename=shift;
my $wind_kts;
my $gust_kts;
# use LWP::Simple;
use XML::Simple;
my $page = get("http://www.nws.noaa.gov/data/current_obs/$station_name.xml");
#print "\n";
my $metar = XMLin($page);
# print "Wind speed: $metar->{'wind_mph'}\n";
# print "$station_name: $metar->{'wind_mph'}-\n";
$wind_kts = sprintf ("%.1f", $metar->{'wind_mph'}/1.15078);
$gust_kts = sprintf ("%.1f", $metar->{'wind_gust_mph'}/1.15078);
print " | $sitename | $wind_kts | ";
if ($metar->{'wind_gust_mph'}) {print $gust_kts;}
else {print "N/A";}
print " | $metar->{'wind_degrees'} | $metar->{'observation_time'} | ";
}
|