| Weather-Com documentation | Contained in the Weather-Com distribution. |
Weather::Com::Wind - class containing wind data
#!/usr/bin/perl -w
use Weather::Com::Finder;
# you have to fill in your ids from weather.com here
my $PartnerId = 'somepartnerid';
my $LicenseKey = 'mylicense';
my %weatherargs = (
'partner_id' => $PartnerId,
'license' => $LicenseKey,
'language' => 'de',
);
my $weather_finder = Weather::Com::Finder->new(%weatherargs);
my @locations = $weather_finder->find('Heidelberg');
my $currconditions = $locations[0]->current_conditions();
print "Wind comes from ", $currconditions->wind()->direction_long(), "\n";
print "and its speed is", $currconditions->wind()->speed(), "\n";
Via Weather::Com::Wind one can access speed and direction (in degrees, short and long textual description) of the wind. Wind is usually an object belonging to current conditions or to a forecast (not implemented yet).
This class will not be updated automatically with each call to one
of its methods. You need to call the wind() method of the parent
object again to update your object.
You usually would not construct an object of this class yourself.
This is implicitely done when you call the wind() method of one
current conditions or forecast object.
Returns the wind speed.
Returns the direction of the wind in degrees.
Returns the direction of the wind as wind mnemonic (N, NW, E, etc.).
These directions are being translated if you specified a language in the parameters you provided to your Weather::Com::Finder.
This attribute is dynamic language enabled.
Returns the direction of the wind as long textual description (North, East, Southwest, etc.).
These directions are being translated if you specified a language in the parameters you provided to your Weather::Com::Finder.
This attribute is dynamic language enabled.
Thomas Schnuecker, <thomas@schnuecker.de>
Copyright (C) 2004-2007 by Thomas Schnuecker
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The data provided by weather.com and made accessible by this OO interface can be used for free under special terms. Please have a look at the application programming guide of weather.com (http://www.weather.com/services/xmloap.html)!
| Weather-Com documentation | Contained in the Weather-Com distribution. |
package Weather::Com::Wind; use 5.006; use strict; use warnings; use Weather::Com::L10N; use Weather::Com::Base qw/convert_winddirection/; use base 'Weather::Com::Object'; our $VERSION = sprintf "%d.%03d", q$Revision: 1.10 $ =~ /(\d+)/g; #------------------------------------------------------------------------ # Constructor #------------------------------------------------------------------------ sub new { my $proto = shift; my $class = ref($proto) || $proto; my %parameters; # parameters provided by new method if ( ref( $_[0] ) eq "HASH" ) { %parameters = %{ $_[0] }; } else { %parameters = @_; } my $self = $class->SUPER::new( \%parameters ); # getting first weather information $self->{SPEED} = -1; $self->{GUST} = -1; $self->{DIR_DEGREES} = -1; $self->{DIR_TXT} = 'N/A'; return $self; } # end new() #------------------------------------------------------------------------ # update wind data #------------------------------------------------------------------------ sub update { my $self = shift; my %wind; if ( ref( $_[0] ) eq "HASH" ) { %wind = %{ $_[0] }; } else { %wind = @_; } # handle non existent wind data unless ( $wind{s} ) { $self->{SPEED} = -1; $self->{GUST} = -1; $self->{DIR_DEGREES} = -1; $self->{DIR_TXT} = 'N/A'; } elsif ( lc( $wind{s} ) eq "calm" ) { # special rules apply if speed is non-numeric $self->{SPEED} = 0; $self->{GUST} = 0; $self->{DIR_DEGREES} = -1; $self->{DIR_TXT} = 'N/A'; } else { # else update object data $self->{SPEED} = $wind{s}; $self->{GUST} = $wind{gust}; $self->{DIR_DEGREES} = $wind{d}; $self->{DIR_TXT} = $wind{t}; } } #------------------------------------------------------------------------ # accessor methods #------------------------------------------------------------------------ sub speed { my $self = shift; return $self->{SPEED}; } sub maximum_gust { my $self = shift; return $self->{GUST}; } sub direction_degrees { my $self = shift; return $self->{DIR_DEGREES}; } sub direction_short { my $self = shift; my $language = shift; return $self->get_language_handle($language)->maketext( $self->{DIR_TXT} ); } sub direction_long { my $self = shift; my $language = shift; my $dir = convert_winddirection( $self->{DIR_TXT} ); return $self->get_language_handle($language)->maketext($dir); } 1; __END__