This is Info file pm.info, produced by Makeinfo version 1.68 from the
input file bigpm.texi.


File: pm.info,  Node: Geo/StormTracker/Main,  Next: Geo/StormTracker/Parser,  Prev: Geo/StormTracker/Data,  Up: Module List

Master method of the Storm-Tracker perl bundle for dealing with Weather Advisories.
***********************************************************************************

NAME
====

   Geo::StormTracker::Main - Master method of the Storm-Tracker perl
bundle for dealing with Weather Advisories.

SYNOPSIS
========

     use Geo::StormTracker::Main;

     #Create a new main object.
     #The mandatory path argument determines the base path to
     #all the data files.
     $main_obj=Geo::StormTracker::Main->new('/archives/');

     #Add an advisory object to the database.
     #The advisory being added must be a recent advisory.
     #The add_advisory method will try and determine which
     #storm the advisory belongs to and update it accordingly.
     #Second argument can be thought of as a force flag.
     ($data_obj, $region_code, $year, $event_num, $error)=$main_obj->add_advisory($adv_obj,1);

     #Add an advisory object to the database for a
     #known year and weather event number.
     #Year must have four digits.
     #Weather event number (15th storm of 1999) says
     #which storm of the year this advisory is for.
     #This method can easily corrupt the database if given the wrong information.
     #Designed for use in initially loading and maintaining the database.
     ($data_obj, $year, $event_num,$error)=$main_obj->add_advisory_by_year_and_event($adv_obj,'1999','15');

     #Obtain a listing of data objects for every storm
     #by region (or just one region if desired).
     $region_code='NT'; #North Atlantic
     ($data_HR,$error)=$main_obj->all_storms_by_region($region_code);
     @data_objects_for_region_code=@{$data_HR->{$region_code}};

     #Obtain a listing of data objects for every active storm
     #by region (or just one region if desired).
     $region_code='NT'; #North Atlantic
     ($data_HR,$error)=$main_obj->all_active_storms_by_region($region_code);
     @active_data_objects_for_region_code=@{$data_HR->{$region_code}};

     #Obtain a listing of data objects including every current and active storm
     #keyed by region (or just one region of desired).
     $region_code='NT'; #North Atlantic
     ($mday,$mon,$year)=(gmtime(time))[3,4,5];
     $epoch_date = timegm(0,0,0,$mday,$mon,$year);
     $epoch_retire=$epoch_date-3600*24*5;# 5 days ago or younger
     ($data_HR, $error)=$main_obj->current_storms_by_region($epoch_retire, $region_code);

     #Obtain a listing of data objects for every active storm
             #by region and year (or just one region and/or year if desired).
             $region_code='NT'; #North Atlantic
     $year=1999;
             ($data_HR,$error)=$main_obj->all_storms_by_region_and_year($region_code,$year);
             @active_data_objects_for_region_code_and_year=@{$data_HR->{$region_code}->{$year}};

     #Obtain the data object for a specific storm.
     $region_code='NT'; #North Atlantic
     $year=1999;
     $event_number=15; #15th storm of the year.
     ($data_obj,$error)=$main_obj->specific_storm($region_code,$year,$event_number);

DESCRIPTION
===========

   The `Geo::StormTracker::Main' module is a component of the
Storm-Tracker perl bundle.  The Storm-Tracker perl bundle is designed to
track weather events using the national weather advisories.  The original
intent is to track tropical depressions, storms and hurricanes.  There
should be a `Geo::StormTracker::Data' object for each weather event being
stored and/or tracked.  The `Geo::StormTracker::Data' objects are managed
by `Geo::StormTracker::Main'.

CONSTRUCTOR
===========

new (PATHNAME)
     Creates a Geo::StormTracker::Main object.  This constructor method
     returns an array of the form (OBJECT,ERROR).  OBJECT being the newly
     created object if successful, and ERROR being any errors encountered
     during the attempt.

     The entire data set for this object is assumed to be contained within
     the directory specified by the mandatory PATHNAME argument.  In the
     event that a directory with the given PATHNAME does not exist, the
     method will fail.  Check to see if the OBJECT returned is defined.

     =back

METHODS
=======

add_advisory (ADVISORY_OBJECT,[FORCE])
     Attempts to insert a `Geo::StormTracker::Advisory' object into the
     appropriate `Geo::StormTracker::Data' object.  The
     `Geo::StormTracker::Main' object looks at the most recent storms for
     the advisory's region and tries to figure out which storm it belongs
     to.  Once it determines this it inserts the advisory into the storm
     object it determined was associated with the storm.  If necessary it
     will create a new data object to hold the advisory The optional force
     flag argument is passed on to the insert_advisory method of
     `Geo::StormTracker::Data'.

     The method returns an array of the form (DATA_OBJECT, REGION, YEAR,
     EVENT_NUMBER ,ERROR).  DATA_OBJECT being the
     `Geo::StormTracker::Data' object the advisory was successfully
     inserted into.  If add_advisory was unsuccessful the DATA_OBJECT will
     be undefined.  The REGION, YEAR and EVENT_NUMBER are the region code,
     year and event number of the DATA_OBJECT if the method was successful
     and undefined otherwise.  ERROR is a text string reporting what error
     was encountered if any.

add_advisory_by_year_and_event (ADVISORY_OBJECT, YEAR, EVENT_NUMBER, [FORCE])
     Attempts to insert a `Geo::StormTracker::Advisory' object into the
     appropriate `Geo::StormTracker::Data' object.  The
     `Geo::StormTracker::Main' object uses the data object corresponding
     to the year and event number specified as arguments.  The optional
     force flag argument is passed on to the insert_advisory method of
     `Geo::StormTracker::Data'.  If an appropriate data object can not be
     found, one will be created.

     The method returns an array of the form (SUCCESS, ERROR).  SUCCESS
     being a boolean value indicating whether or not the operation was
     successful and ERROR being a scalar string reporting what error was
     encountered if any.

all_storms_by_region ([REGION_CODE])
     Returns an array of the form (HASH_REF,ERROR).  HASH_REF being a
     reference to a hash of references to arrays of
     `Geo::StormTracker::Data' objects.  HASH_REF will be keyed by region
     code.  If the optional REGION_CODE argument was given then the region
     given will be the only key available in the returned HASH_REF,
     otherwise there will be a key for every region the
     `Geo::StormTracker::Main' object knows about.  The arrays of
     `Geo::StormTracker::Data' objects being referenced will be sorted by
     year and weather event order.  Both inactive and active storms will
     be listed in the data object arrays.

     The scalar ERROR string contains any errors encountered if
     unsuccessful.  The HASH_REF will be undefined in this case.

all_storms_by_region_and_year ([REGION_CODE,[YEAR]])   Returns an array of the form (HASH_REF,ERROR). HASH_REF being a reference to a hash of references to references to arrays of `Geo::StormTracker::Data' objects.  HASH_REF will be keyed by region code and year.  If the optional REGION_CODE argument was given then the region given will be the only key available in the returned HASH_REF, otherwise there will be a key for every region the `Geo::StormTracker::Main' object knows about.  Nested within each region key will be hash reference with a key for every year of data (or just one if the optional YEAR argument was used). The arrays of `Geo::StormTracker::Data' objects being referenced will be sorted by weather event order.  Both inactive and active storms will be listed in the data object arrays.   The scalar ERROR string contains any errors encountered if unsuccessful.  The HASH_REF will be undefined in this case.
all_active_storms_by_region([REGION_CODE])
     Returns an array of the form (HASH_REF,ERROR).  HASH_REF being a
     reference to a hash of references to arrays of
     `Geo::StormTracker::Data' objects.  HASH_REF will be keyed by region
     code.  If the optional REGION_CODE argument was given then the region
     given will be the only key available in the returned HASH_REF,
     otherwise there will be a key for every region the
     `Geo::StormTracker::Main' object knows about.  The arrays of
     `Geo::StormTracker::Data' objects being referenced will be sorted by
     year and weather event order.  Only active storms will be listed in
     the data object arrays.

     The scalar ERROR string contains any errors encountered if
     unsuccessful.  The HASH_REF will be undefined in this case.

all_current_storms_by_region([EPOCH_RETIRE,[REGION_CODE]])   Returns an array of the form (HASH_REF,ERROR). HASH_REF being a reference to a hash of references to arrays of `Geo::StormTracker::Data' objects.  HASH_REF will be keyed by region code.  If the optional REGION_CODE argument was given then the region given will be the only key available in the returned HASH_REF, otherwise there will be a key for every region the `Geo::StormTracker::Main' object knows about.  The arrays of `Geo::StormTracker::Data' objects being referenced will be sorted by year and weather event order.  Only active storms and storms with current advisories whose epoch_date is greater than or equal to EPOCH_RETIRE will be listed in the data object arrays.   The scalar ERROR string contains any errors encountered if unsuccessful.  The HASH_REF will be undefined in this case.
specific_storm (REGION_CODE, YEAR, EVENT_NUMBER)
     Returns an array of the form (DATA_OBJECT, ERROR).  DATA_OBJECT being
     a reference to a `Geo::StormTracker::Data' object for the desired
     REGION_CODE, YEAR, and weather EVENT_NUMBER.

     The scalar ERROR string contains any errors encountered if
     unsuccessful.

AUTHOR
======

   Jimmy Carpenter, Jimmy.Carpenter@chron.com

   All rights reserved.  This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.

   Thanks to Dr. Paul Ruscher for his assistance in helping me to
understand the weather advisory formats.

SEE ALSO
========

     Geo::StormTracker::Data
     Geo::StormTracker::Advisory
     Geo::StormTracker::Parser
     perl(1).


File: pm.info,  Node: Geo/StormTracker/Parser,  Next: Geo/Storm_Tracker,  Prev: Geo/StormTracker/Main,  Up: Module List

Perl extension for Parsing Weather Advisories
*********************************************

NAME
====

   Geo::StormTracker::Parser - Perl extension for Parsing Weather
Advisories

SYNOPSIS
========

     use Geo::StormTracker::Parser;

     #Create a parser object
     $parser_obj=Geo::StormTracker::Parser->new();

     #Parse input and return a Geo::StormTracker::Advisory object.
     $adv_obj=$parser_obj->read(\*STDIN);
     
     #An alternative to the read method above,
     #which accepts the advisory as a string.
     $adv_obj=$parser_obj->read_data($advisory_data);

     #Same as above two methods but reads from a file instead.
     $adv_obj=$parser_obj->read_file($advisory_data);

DESCRIPTION
===========

   The Geo::StormTracker::Parser module is a component of the
Storm-Tracker perl bundle.  The Storm-Tracker perl bundle is designed to
track weather events using the national weather advisories.  The original
intent is to track tropical depressions, storms and hurricanes.  The
various read methods of Geo::StormTracker::Parser take a plain text
advisory as input and return Geo::StormTracker::Advisory objects.

CONSTRUCTOR
===========

new
     Creates a new instance of a Geo::StormTracker::Parser object and
     returns a blessed reference to it.

METHODS
=======

read (TYPEGLOB_REF)
     Reads from the type glob reference passed as an argument and returns
     a Geo::StormTracker::Advisory object if successful.  If unsuccessful
     the method returns an undefined value.

read_data (STRING)
     Attempts to parse the advisory text input as a string argument and
     returns a Geo::StormTracker::Advisory object if successful.  If
     unsuccessful the method returns an undefined value.

read_file (STRING)
     Reads an advisory saved in a file whose path is passed as a string
     argument and returns a Geo::StormTracker::Advisory object if
     successful.  If unsuccessful the method returns an undefined value.

AUTHOR
======

   James Lee Carpenter, Jimmy.Carpenter@chron.com

   All rights reserved.  This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.

   Thanks to Dr. Paul Ruscher for his assistance in helping me to
understand the weather advisory formats.

SEE ALSO
========

     Geo::StormTracker::Advisory
     Geo::StormTracker::Main
     Geo::StormTracker::Data
     perl(1).


File: pm.info,  Node: Geo/Storm_Tracker,  Next: Geo/Storm_Tracker/Advisory,  Prev: Geo/StormTracker/Parser,  Up: Module List

Perl bundle for working with national weather advisories
********************************************************

NAME
====

   Geo::Storm_Tracker - Perl bundle for working with national weather
advisories

SYNOPSIS
========

   See documentation of each module of the bundle.  This currently
includes the following:

     Geo::Storm_Tracker::Main
     Geo::Storm_Tracker::Data
     Geo::Storm_Tracker::Advisory
     Geo::Storm_Tracker::Parser

DESCRIPTION
===========

   The Storm-Tracker perl bundle is designed to track weather events using
the national weather advisories.  The original intent is to track tropical
depressions, storms and hurricanes.

AUTHOR
======

   James Lee Carpenter, Jimmy.Carpenter@chron.com

   All rights reserved.  This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.

   Thanks to Dr. Paul Ruscher for his assistance in helping me to
understand the weather advisory formats.

SEE ALSO
========

     Geo::Storm_Tracker::Advisory
     Geo::Storm_Tracker::Parser
     Geo::Storm_Tracker::Main
     Geo::Storm_Tracker::Data
     perl(1).


File: pm.info,  Node: Geo/Storm_Tracker/Advisory,  Next: Geo/Storm_Tracker/Data,  Prev: Geo/Storm_Tracker,  Up: Module List

The weather advisory object of the perl Storm-Tracker bundle.
*************************************************************

NAME
====

   Geo::Storm_Tracker::Advisory - The weather advisory object of the perl
Storm-Tracker bundle.

SYNOPSIS
========

     use Geo::Storm_Tracker::Advisory;

     #Create a new advisory object for holding
     #all the various elements of an advisory.
             $adv_obj=Storm_Tracker::Advisory->new();
     
     #Return the entire advisory as a string.
     #Internally calls stringify_header and
     #stringify_body and joins the result.
     $adv_obj->stringify();
     
     All of the following methods can be used as both access and as assignment methods.
     The use and functionality of the methods should be obvious.

   It is important to realize that changes to a given attribute do not
affect other attributes.  It is the role of the caller to keep the content
self consistent.

     #Obtain the header as a string.
             $header_string=$adv_obj->stringify_header();
     
     #Change the contents of the header string.
     #Returns new header contents.
     $header_string=$adv_obj->stringify_header($header_string);

     #Obtain the body as a string.
             $body_string=$adv_obj->stringify_body();

     #Change the contents of the body string.
     #Returns new body contents.
             $body_string=$adv_obj->stringify_body($body_string);

     #Obtain the name string.
             $name=$adv_obj->name();
     
     #Change the name string.
     #Returns new name string.
             $name=$adv_obj->name($name);
     
     #Obtain the wmo header string.
             $wmo_header=$adv_obj->wmo_header();
     
     #Change the wmo header string.
     #Returns new wmo header string.
             $wmo_header=$adv_obj->wmo_header($wmo_header);

     #Obtain the advisory number value.
             $advisory_number=$adv_obj->advisory_number();
     
     #Change the advisory number value.
     #Returns the new advisory number.
             $advisory_number=$adv_obj->advisory_number($advisory_number);
     
     #Obtain the release time string.
     $release_time=$adv_obj->release_time();

     #Change the release time string.
     #Returns the new release time string.
     $release_time=$adv_obj->release_time($release_time);

     #Obtain the weather service string.
             $weather_service=$adv_obj->weather_service();

     #Change the weather service string.
     #Returns the new weather service string.
             $weather_service=$adv_obj->weather_service($weather_service);

     #Obtain the position array or array reference.
             @position=$adv_obj->position();
     or
     $positon_AR=$adv_obj->position();

     #Change the position array.
     #Returns the new position array or array reference.
             @position=$adv_obj->position($position_AR);
     or
     $position_AR=$adv_obj->position($position_AR);

     #Obtain the maximum wind value.
             $max_winds=$adv_obj->max_winds($max_winds);
     
     #Change the maximum wind value.
     #Returns the new maximum wind value.
     $max_winds=$adv_obj->max_winds($max_winds);

     #Obtain the minimum central pressure value.
             $min_central_pressure=$adv_obj->min_central_pressure();

     #Change the minimum central pressure value.
     #Returns the new minimum central pressure value.
             $min_central_pressure=$adv_obj->min_central_pressure($min_central_pressure)

     #Determine whether or not the advisory says it is the last one.
             $is_final=$adv_obj->is_final();

     #Change the is_final value.
     #Returns the new is_final value.
             $is_final=$adv_obj->min_central_pressure($is_final)

DESCRIPTION
===========

   The Geo::Storm_Tracker::Advisory module is a component of the
Storm-Tracker perl bundle.  The Storm-Tracker perl bundle is designed to
track weather events using the national weather advisories.  The original
intent is to track tropical depressions, storms and hurricanes.  A
Geo::Storm_Tracker::Advisory object is designed to contain everything
about a single advisory.  The Geo::Storm_Tracker::Advisory objects are
typically created and populated by the read methods of a
Geo::Storm_Tracker::Parser object.

CONSTRUCTOR
===========

new
     Creates a `Geo::Storm_Tracker::Advisory' object and returns a blessed
     reference to it.

METHODS
=======

stringify
     Returns the entire advisory.  Internally calls stringify_header and
     stringify_body and joins the result.

   The remaining methods function as both assignment and access methods.
When called with an argument, they act as assignment methods and when
called without an argument they act as access methods.

   When successfully called as assignment methods the return value is that
of the newly assigned value. If the assignment is unsuccessful the return
value will be undefined.

   The attribute set/retrieved is identical to the method name.

stringify_header ([STRING])
     Returns a string value.

stringify_body ([STRING])
     Returns a string value.

wmo_header ([STRING])
     Returns a string value.

advisory_number ([VALUE])
     Returns a string value.

weather_service ([STRING])
     Returns a string value.

position ([ARRAY_REF])
     Returns an array value when called in array context and an array
     reference when called in a scalar context.

max_winds ([VALUE])
     Returns a string value.

is_final ([BOOLEAN])
     Returns a boolean value.

AUTHOR
======

   James Lee Carpenter, Jimmy.Carpenter@chron.com

   All rights reserved.  This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.

   Thanks to Dr. Paul Ruscher for his assistance in helping me to
understand the weather advisory formats.

SEE ALSO
========

     Geo::Storm_Tracker::Main
     Geo::Storm_Tracker::Data
     Geo::Storm_Tracker::Parser
     perl(1).


File: pm.info,  Node: Geo/Storm_Tracker/Data,  Next: Geo/Storm_Tracker/Main,  Prev: Geo/Storm_Tracker/Advisory,  Up: Module List

The weather event object of the perl Storm-Tracker bundle.
**********************************************************

NAME
====

   Geo::Storm_Tracker::Data - The weather event object of the perl
Storm-Tracker bundle.

SYNOPSIS
========

     use Geo::Storm_Tracker::Data;

     #The only argument is the path for the data files of
     	#this new data object.
     #If the directory does not exist it will fail.

     ($data_object,$error)=Geo::Storm_Tracker::Data->new('/data/1999/15');

     #The only argument is the path for the data files of this
     #shiny new data object.
     #The shiny_new method expects to create the last directory level of the path.
     #If the full path already exists it will fail.
     ($data_object,$error)=Geo::Storm_Tracker::Data->shiny_new('/data/1999/15');

     #The insert_advisory method inserts an advisory object
     	#into the data object.
     	#Unless the second argument is true, inserting an
     	#advisory with the same advisory number as a previously
     	#inserted advisory will fail.
            	#Second argument can be thought of as a force flag.
     
     	 ($success,$error)=$data_object->insert_advisory($adv_obj,[0|1])

     #Determine the last known position for this weather event.
     $position_AR=$data_object->current_position()

     ($long,$long_dir,$lat,$lat_dir)=@{$position_AR};

     #The postion_track method will return an
     #array of position array references.
     #sorted in advisory number order.
     #The position from the advisory with the smallest
             #advisory number will be in element 0 of @track.
     
     @track=$data_object->position_track();

     #Alternatively.

     $track_AR=$data_object->position_track();
     @track=@{$track_AR};

     #Retrieve the most current advisory available
     #for this data object.
     
     $adv_obj=$data_object->current_advisory;

     #Is this weather event still occurring?
     #$set_to will contain true(1) or false(0)
     #if called without any arguments.
     #Can be used as an assignment operator
     #if given an argument.
     #When used as an assignment operator it
     #returns the value to which it was set
     #if successful and undef otherwise.

     ($set_to,$error)=$data_object->is_active([[0|1]);

     #The all_advisory_objects method returns an array of
     #every weather event advisory available in the referenced
     #data object.
     #The order is identical
     #to that returned by the position_track method.

     @all_advisory_objects=$data_object->all_advisories();
     
     #Alternatively

     $all_advisory_objects_AR=$data_object->all_advisories();

     #The advisory_by_number method returns an advisory
     #object for the advisory number given as an argument.
     #If the advisory doesn't exist the method returns undef.

     $adv_obj_15=$data_object->advisory_by_number(15);

     #Returns the path to the data file directory of
     #this object.

     $path=$data_object->get_path();

DESCRIPTION
===========

   The `Geo::Storm_Tracker::Data' module is a component of the
Storm-Tracker perl bundle.  The Storm-Tracker perl bundle is designed to
track weather events using the national weather advisories.  The original
intent is to track tropical depressions, storms and hurricanes.  There
should be a `Geo::Storm_Tracker::Data' object for each weather event being
stored and/or tracked.  The `Geo::Storm_Tracker::Data' objects are managed
by `Geo::Storm_Tracker::Main'.

CONSTRUCTOR
===========

new (PATHNAME)
     Creates a Geo::Storm_Tracker::Data object.  This constructor method
     returns an array of the form (OBJECT,ERROR).  OBJECT being the newly
     created object if successful, and ERROR being any errors encountered
     during the attempt.

     The data set for this object is assumed to be contained within the
     directory specified by the mandatory PATHNAME argument.  In the event
     that a directory with the given PATHNAME does not exist, the method
     will fail.  Check to see if the OBJECT returned is defined.

     The motivation for having two constructor methods instead of one, is
     to help the caller maintain data integrity.

shiny_new (PATHNAME)
     Creates a Geo::Storm_Tracker::Data object.  This constructor method
     returns an array of the form (OBJECT,ERROR).  OBJECT being the newly
     created object if successful, and ERROR being any errors encountered
     during the attempt.

     The data set for this object will be placed within the directory
     specified by the mandatory PATHNAME argument.  The method will only
     succeed if the directory with the given PATHNAME does not already
     exist.

     The shiny_new method only knows how to create the last level
     directory.  The constructor does not attempt to recursively create a
     new directory and therefore will never succeed unless every directory
     in the path except the last one already exists.  Even then the
     creation of a new directory can fail due to permission problems.  It
     is wise to always check to insure that the OBJECT returned is defined.

     The motivation for having two constructor methods instead of one, is
     to help the caller maintain data integrity.

METHODS
=======

insert_advisory (ADVISORY_OBJECT)
     Attempts to insert a `Geo::Storm_Tracker::Advisory' object into the
     `Geo::Storm_Tracker::Data' object being referenced.

     The method returns an array of the form (SUCCESS,ERROR).  SUCCESS
     being a boolean value indicating whether or not the operation was
     successful and ERROR being a scalar string reporting what error was
     encountered if any.

current_position
     When called in scalar context current_position returns a reference to
     a position array.

     When called in array context current_position returns a position
     array.

     The position array specifies the longitude and latitude of the most
     recent weather advisory available for this `Geo::Storm_Tracker::Data'
     object.  The position array is of the form (LONGITUDE,N or
     S,LATITUDE, W or E).

     If the `Geo::Storm_Tracker::Data' object being referenced contains no
     advisories at all the return value will be undefined.

position_track
     When called in scalar context position_track returns a reference to
     an array of position array references.

     When called in array context position_track returns an array of
     position array references.

     There is a position returned for each advisory within the
     `Geo::Storm_Tracker::Data' object being referenced.  The position
     arrays returned are sorted by advisory number with the smallest
     advisory number first.

     The position arrays are identical in format to that returned by the
     current_position method.

current_advisory
     Returns a reference to the `Geo::Storm_Tracker::Advisory' object
     within the `Geo::Storm_Tracker::Data' object that has the greatest
     advisory number.

     If the `Geo::Storm_Tracker::Data' object being referenced contains no
     advisories at all the return value will be undefined.

all_advisories
     When called in scalar context all_advisories returns a reference to
     an array of advisory objects.

     When called in array context all_advisories returns an array of
     advisory objects.

     The array of advisories is sorted by advisory number in the same
     order as that used by the position_track method.  The advisory with
     the smallest advisory number will be given first.

     If the `Geo::Storm_Tracker::Data' object being referenced contains no
     advisories at all the return value will be undefined.

advisory_by_number (NUM)
     Returns a reference to the advisory object with the same advisory
     number as given by the mandatory NUM argument.

     If the `Geo::Storm_Tracker::Data' object being referenced does not
     contain an advisory with the requested advisory number the return
     value will be undefined.

get_path
     Returns the path passed to the new method upon creation of the
     referenced `Geo::Storm_Tracker::Data' object.

is_active ([BOOLEAN])
     When called with a boolean argument is_active attempts to define the
     referenced `Geo::Storm_Tracker::Data' object as active or inactive.
     is_active returns the array (SET_TO,ERROR).  If successful the SET_TO
     string indicates the value the state to which the data_object was set.
     If unsuccessful SET_TO will be undefined and ERROR will contain the
     reason for the failure.

     When is_active is called without an argument it will return the
     current state of the `Geo::Storm_Tracker::Data' object being
     referenced.

AUTHOR
======

   Jimmy Carpenter, Jimmy.Carpenter@chron.com

   All rights reserved.  This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.

   Thanks to Dr. Paul Ruscher for his assistance in helping me to
understand the weather advisory formats.

     =head1 SEE ALSO

   Geo::Storm_Tracker::Main Geo::Storm_Tracker::Parser
Geo::Storm_Tracker::Advisory

   perl(1).


File: pm.info,  Node: Geo/Storm_Tracker/Main,  Next: Geo/Storm_Tracker/Parser,  Prev: Geo/Storm_Tracker/Data,  Up: Module List

Master method of the Storm-Tracker perl bundle for dealing with Weather Advisories.
***********************************************************************************

NAME
====

   Geo::Storm_Tracker::Main - Master method of the Storm-Tracker perl
bundle for dealing with Weather Advisories.

SYNOPSIS
========

     use Geo::Storm_Tracker::Main;

     #Create a new main object.
     #The mandatory path argument determines the base path to
     #all the data files.
     $main_obj=Geo::Storm_Tracker::Main->new('/archives/');

     #Add an advisory object to the database.
     #The advisory being added must be a recent advisory.
     #The add_advisory method will try and determine which
     #storm the advisory belongs to and update it accordingly.
     #Second argument can be thought of as a force flag.
     ($success,$error)=$main_obj->add_advisory($adv_obj,[0|1]);

     #Add an advisory object to the database for a
     #known year and weather event number.
     #Year must have four digits.
     #Weather event number (15th storm of 1999) says
     #which storm of the year this advisory is for.
     #This method can easily corrupt the database if given the wrong information.
     #Designed for use in initially loading and maintaining the database.
     ($success,$error)=$main_obj->add_advisory_by_year_and_event($adv_obj,'1999','15');

     #Obtain a listing of data objects for every storm
     #by region (or just one region if desired).
     $region_code='NT'; #North Atlantic
     ($data_HR,$error)=$main_obj->all_storms_by_region([$region_code]);
     @data_objects_for_region_code=@{$data_HR->{$region_code}};

     #Obtain a listing of data objects for every active storm
     #by region (or just one region if desired).
     $region_code='NT'; #North Atlantic
     ($data_HR,$error)=$main_obj->all_storms_by_region([$region_code]);
     @active_data_objects_for_region_code=@{$data_HR->{$region_code}};

     #Obtain the data object for a specific storm.
     $region_code='NT'; #North Atlantic
     $year=1999;
     $event_number=15; #15th storm of the year.
     ($data_obj,$error)=$main_obj->specific_storm($region_code,$year,$event_number);

DESCRIPTION
===========

   The `Geo::Storm_Tracker::Main' module is a component of the
Storm-Tracker perl bundle.  The Storm-Tracker perl bundle is designed to
track weather events using the national weather advisories.  The original
intent is to track tropical depressions, storms and hurricanes.  There
should be a `Geo::Storm_Tracker::Data' object for each weather event being
stored and/or tracked.  The `Geo::Storm_Tracker::Data' objects are managed
by `Geo::Storm_Tracker::Main'.

CONSTRUCTOR
===========

new (PATHNAME)
     Creates a Geo::Storm_Tracker::Main object.  This constructor method
     returns an array of the form (OBJECT,ERROR).  OBJECT being the newly
     created object if successful, and ERROR being any errors encountered
     during the attempt.

     The entire data set for this object is assumed to be contained within
     the directory specified by the mandatory PATHNAME argument.  In the
     event that a directory with the given PATHNAME does not exist, the
     method will fail.  Check to see if the OBJECT returned is defined.

     =back

METHODS
=======

add_advisory (ADVISORY_OBJECT,[FORCE])
     Attempts to insert a `Geo::Storm_Tracker::Advisory' object into the
     appropriate `Geo::Storm_Tracker::Data' object.  The
     `Geo::Storm_Tracker::Main' object looks at the most recent storms for
     the advisory's region and tries to figure out which storm it belongs
     to.  Once it determines this it inserts the advisory into the storm
     object it determined was associated with the storm.  If necessary it
     will create a new data object to hold the advisory The optional force
     flag argument is passed on to the insert_advisory method of
     `Geo::Storm_Tracker::Data'.

     The method returns an array of the form (SUCCESS,ERROR).  SUCCESS
     being a boolean value indicating whether or not the operation was
     successful and ERROR being a scalar string reporting what error was
     encountered if any.

add_advisory_by_year_and_event (ADVISORY_OBJECT, YEAR, EVENT_NUMBER, [FORCE])
     Attempts to insert a `Geo::Storm_Tracker::Advisory' object into the
     appropriate `Geo::Storm_Tracker::Data' object.  The
     `Geo::Storm_Tracker::Main' object uses the data object corresponding
     to the year and event number specified as arguments.  The optional
     force flag argument is passed on to the insert_advisory method of
     `Geo::Storm_Tracker::Data'.  If an appropriate data object can not be
     found, one will be created.

          The method returns an array of the form (SUCCESS,ERROR).
          SUCCESS being a boolean value indicating whether or not
          the operation was successful and ERROR being a scalar
          string reporting what error was encountered if any.

all_storms_by_region ([REGION_CODE])
     Returns an array of the form (HASH_REF,ERROR).  HASH_REF being a
     reference to a hash of references to arrays of
     `Geo::Storm_Tracker::Data' objects.  HASH_REF will be keyed by region
     code.  If the optional REGION_CODE argument was given then the region
     given will be the only key available in the returned HASH_REF,
     otherwise there will be a key for every region the
     `Geo::Storm_Tracker::Main' object knows about.  The arrays of
     `Geo::Storm_Tracker::Data' objects being referenced will be sorted by
     year and weather event order.  Both inactive and active storms will
     be listed in the data object arrays.

     The scalar ERROR string contains any errors encountered if
     unsuccessful.  The HASH_REF will be undefined in this case.

all_active_storms_by_region
     Returns an array of the form (HASH_REF,ERROR).  HASH_REF being a
     reference to a hash of references to arrays of
     `Geo::Storm_Tracker::Data' objects.  HASH_REF will be keyed by region
     code.  If the optional REGION_CODE argument was given then the region
     given will be the only key available in the returned HASH_REF,
     otherwise there will be a key for every region the
     `Geo::Storm_Tracker::Main' object knows about.  The arrays of
     `Geo::Storm_Tracker::Data' objects being referenced will be sorted by
     year and weather event order.  Only active storms will be listed in
     the data object arrays.

     The scalar ERROR string contains any errors encountered if
     unsuccessful.  The HASH_REF will be undefined in this case.

specific_storm (REGION_CODE, YEAR, EVENT_NUMBER)
     Returns an array of the form (DATA_OBJECT, ERROR).  DATA_OBJECT being
     a reference to a `Geo::Storm_Tracker::Data' object for the desired
     REGION_CODE, YEAR, and weather EVENT_NUMBER.

     The scalar ERROR string contains any errors encountered if
     unsuccessful.

AUTHOR
======

   Jimmy Carpenter, Jimmy.Carpenter@chron.com

   All rights reserved.  This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.

   Thanks to Dr. Paul Ruscher for his assistance in helping me to
understand the weather advisory formats.

SEE ALSO
========

     Geo::Storm_Tracker::Data
     Geo::Storm_Tracker::Advisory
     Geo::Storm_Tracker::Parser
     perl(1).


File: pm.info,  Node: Geo/Storm_Tracker/Parser,  Next: Geo/TigerLine,  Prev: Geo/Storm_Tracker/Main,  Up: Module List

Perl extension for Parsing Weather Advisories
*********************************************

NAME
====

   Geo::Storm_Tracker::Parser - Perl extension for Parsing Weather
Advisories

SYNOPSIS
========

     use Geo::Storm_Tracker::Parser;

     #Create a parser object
     $parser_obj=Geo::Storm_Tracker::Parser->new();

     #Parse input and return a Geo::Storm_Tracker::Advisory object.
     $adv_obj=$parser_obj->read(\*STDIN);
     
     #An alternative to the read method above,
     #which accepts the advisory as a string.
     $adv_obj=$parser_obj->read_data($advisory_data);

     #Same as above two methods but reads from a file instead.
     $adv_obj=$parser_obj->read_file($advisory_data);

DESCRIPTION
===========

   The Geo::Storm_Tracker::Parser module is a component of the
Storm-Tracker perl bundle.  The Storm-Tracker perl bundle is designed to
track weather events using the national weather advisories.  The original
intent is to track tropical depressions, storms and hurricanes.  The
various read methods of Geo::Storm_Tracker::Parser take a plain text
advisory as input and return Geo::Storm_Tracker::Advisory objects.

CONSTRUCTOR
===========

new
     Creates a new instance of a Geo::Storm_Tracker::Parser object and
     returns a blessed reference to it.

METHODS
=======

read (TYPEGLOB_REF)
     Reads from the type glob reference passed as an argument and returns
     a Geo::Storm_Tracker::Advisory object if successful.  If unsuccessful
     the method returns an undefined value.

read_data (STRING)
     Attempts to parse the advisory text input as a string argument and
     returns a Geo::Storm_Tracker::Advisory object if successful.  If
     unsuccessful the method returns an undefined value.

read_file (STRING)
     Reads an advisory saved in a file whose path is passed as a string
     argument and returns a Geo::Storm_Tracker::Advisory object if
     successful.  If unsuccessful the method returns an undefined value.

AUTHOR
======

   James Lee Carpenter, Jimmy.Carpenter@chron.com

   All rights reserved.  This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.

   Thanks to Dr. Paul Ruscher for his assistance in helping me to
understand the weather advisory formats.

SEE ALSO
========

     Geo::Storm_Tracker::Advisory
     Geo::Storm_Tracker::Main
     Geo::Storm_Tracker::Data
     perl(1).


File: pm.info,  Node: Geo/TigerLine,  Next: Geo/TigerLine/Record,  Prev: Geo/Storm_Tracker/Parser,  Up: Module List

TIGER/Line geographic data
**************************

NAME
====

   Geo::TigerLine - TIGER/Line geographic data

DESCRIPTION
===========

   This is a module around the TIGER/Line geogrpahic data generated by the
U.S. Census.  TIGER/Line data files contain detailed information about
roads, waterways, political and property boundries, addresses, etc...
Basically everything you need to recreate something like Mapquest.

   *IT IS INCOMPLETE*

AUTHOR
======

   Michael G Schwern <schwern@pobox.com>

COPYRIGHT
=========

   Copyright (c) 2000 Michael G Schwern

   TIGER is a registered trademark of the US Census.

BUGS, CAVEATS and Other Musings
===============================

   Seeing as how TIGER is trademarked, I might want to call this module
something else.

SEE ALSO
========

   TIGER/Line data, manuals and additional info can be gotten from
ftp://ftp.linuxvc.com/US-map

   Bruce Perens's TIGER/Line mailing list is at
http://lists.perens.com/mailman/listinfo/map


File: pm.info,  Node: Geo/TigerLine/Record,  Next: Geo/TigerLine/Record/,  Prev: Geo/TigerLine,  Up: Module List

Superclass for all TIGER/Line record classes.
*********************************************

NAME
====

   Geo::TigerLine::Record - Superclass for all TIGER/Line record classes.

SYNOPSIS
========

     package Geo::TigerLine::Record::42;
     use base qw(Geo::TigerLine::Record);

     $record = __PACKAGE__->new(\%fields);

DESCRIPTION
===========

   From this class all the specific TIGER/Line record classes inherit.  It
provides some of the basic methods common to all records.

   You shouldn't be here.

Methods
-------

new
          $record = __PACKAGE__->new(\%fields);

     A simple constructor.  Each field is passed through its accessor and
     sanity checked.

AUTHOR
======

   Michael G Schwern <schwern@pobox.com>

SEE ALSO
========

   *Note Geo/TigerLine: Geo/TigerLine,


File: pm.info,  Node: Geo/TigerLine/Record/,  Next: Geo/TigerLine/Record/1,  Prev: Geo/TigerLine/Record,  Up: Module List


File: pm.info,  Node: Geo/TigerLine/Record/1,  Next: Geo/TigerLine/Record/2,  Prev: Geo/TigerLine/Record/,  Up: Module List

TIGER/Line 1998 Complete Chain Basic Data Record
************************************************

NAME
====

   Geo::TigerLine::Record::1 - TIGER/Line 1998 Complete Chain Basic Data
Record

SYNOPSIS
========

     use Geo::TigerLine::Record::1;

     @records = Geo::TigerLine::Record::1->parse_file($fh);
     @records = Geo::TigerLine::Record::1->parse_file($fh, \&callback);

     $record = Geo::TigerLine::Record::1->new(\%fields);

     $record->rt();
     $record->version();
     $record->tlid();
     $record->side1();
     $record->source();
     $record->fedirp();
     $record->fename();
     $record->fetype();
     $record->fedirs();
     $record->cfcc();
     $record->fraddl();
     $record->toaddl();
     $record->fraddr();
     $record->toaddr();
     $record->friaddl();
     $record->toiaddl();
     $record->friaddr();
     $record->toiaddr();
     $record->zipl();
     $record->zipr();
     $record->fairl();
     $record->fairr();
     $record->trustl();
     $record->trustr();
     $record->census1();
     $record->census2();
     $record->statel();
     $record->stater();
     $record->countyl();
     $record->countyr();
     $record->fmcdl();
     $record->fmcdr();
     $record->fsmcdl();
     $record->fsmcdr();
     $record->fpll();
     $record->fplr();
     $record->ctl();
     $record->ctr();
     $record->blkl();
     $record->blkr();
     $record->frlong();
     $record->frlat();
     $record->tolong();
     $record->tolat();

DESCRIPTION
===========

   This is a class representing record type 1 of the TIGER/Line 1998
census geographic database.  Each object is one record.  It also contains
methods to parse TIGER/Line record type 1 files and turn them into objects.

   This is intended as an intermediate format between pulling the raw data
out of the simplistic TIGER/Line data files into something more
sophisticated (a process you should only have to do once).  As such, its
not very fast, but its careful, easy to use and performs some
verifications on the data being read.

   As this class is autogenerated by mk_parsers, think before you modify
this file.  Its OO, so consider sub-classing instead.

Accessors
---------

   These are simple get/set accessors for each field of a record generated
from the TIGER/Line 1998 data dictionary.  They perform some data
validation.

rt
          $data = $record->rt();
          $record->rt($data);

     Record Type.

     Expects alphanumeric data of no more than 1 characters.  $data cannot
     be blank and should be left justified.

version
          $data = $record->version();
          $record->version($data);

     Version Number.

     Expects numeric data of no more than 4 characters.  $data cannot be
     blank and should be left justified.

tlid
          $data = $record->tlid();
          $record->tlid($data);

     TIGER/Line ID, Permanent Record Number.

     Expects numeric data of no more than 10 characters.  $data cannot be
     blank and should be right justified.

side1
          $data = $record->side1();
          $record->side1($data);

     Single-Side Complete Chain Code.

     Expects numeric data of no more than 1 characters.  $data can be blank
     and should be right justified.

source
          $data = $record->source();
          $record->source($data);

     Linear Segment Source Code.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

fedirp
          $data = $record->fedirp();
          $record->fedirp($data);

     Feature Direction, Prefix.

     Expects alphanumeric data of no more than 2 characters.  $data can be
     blank and should be left justified.

fename
          $data = $record->fename();
          $record->fename($data);

     Feature Name.

     Expects alphanumeric data of no more than 30 characters.  $data can
     be blank and should be left justified.

fetype
          $data = $record->fetype();
          $record->fetype($data);

     Feature Type.

     Expects alphanumeric data of no more than 4 characters.  $data can be
     blank and should be left justified.

fedirs
          $data = $record->fedirs();
          $record->fedirs($data);

     Feature Direction, Suffix.

     Expects alphanumeric data of no more than 2 characters.  $data can be
     blank and should be left justified.

cfcc
          $data = $record->cfcc();
          $record->cfcc($data);

     Census Feature Class Code.

     Expects alphanumeric data of no more than 3 characters.  $data can be
     blank and should be left justified.

fraddl
          $data = $record->fraddl();
          $record->fraddl($data);

     Start Address, Left.

     Expects alphanumeric data of no more than 11 characters.  $data can
     be blank and should be right justified.

toaddl
          $data = $record->toaddl();
          $record->toaddl($data);

     End Address, Left.

     Expects alphanumeric data of no more than 11 characters.  $data can
     be blank and should be right justified.

fraddr
          $data = $record->fraddr();
          $record->fraddr($data);

     Start Address, Right.

     Expects alphanumeric data of no more than 11 characters.  $data can
     be blank and should be right justified.

toaddr
          $data = $record->toaddr();
          $record->toaddr($data);

     End Address, Right.

     Expects alphanumeric data of no more than 11 characters.  $data can
     be blank and should be right justified.

friaddl
          $data = $record->friaddl();
          $record->friaddl($data);

     Start Imputed Address Flag, Left.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

toiaddl
          $data = $record->toiaddl();
          $record->toiaddl($data);

     End Imputed Address Flag, Left.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

friaddr
          $data = $record->friaddr();
          $record->friaddr($data);

     Start Imputed Address Flag, Right.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

toiaddr
          $data = $record->toiaddr();
          $record->toiaddr($data);

     End Imputed Address Flag, Right.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

zipl
          $data = $record->zipl();
          $record->zipl($data);

     ZIP Code, Left.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

zipr
          $data = $record->zipr();
          $record->zipr($data);

     ZIP Code, Right.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

fairl
          $data = $record->fairl();
          $record->fairl($data);

     FIPS 55 Code (American Indian/Alaska Native Area), Current Left.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

fairr
          $data = $record->fairr();
          $record->fairr($data);

     FIPS 55 Code (American Indian/Alaska Native Area), Current Right.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

trustl
          $data = $record->trustl();
          $record->trustl($data);

     American Indian Trust Land Flag, Current Left.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

trustr
          $data = $record->trustr();
          $record->trustr($data);

     American Indian Trust Land Flag, Current Right.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

census1
          $data = $record->census1();
          $record->census1($data);

     Census Use 1.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

census2
          $data = $record->census2();
          $record->census2($data);

     Census Use 2.

     Expects alphanumeric data of no more than 1 characters.  $data can be
     blank and should be left justified.

statel
          $data = $record->statel();
          $record->statel($data);

     FIPS State Code, Current Left.

     Expects numeric data of no more than 2 characters.  $data can be blank
     and should be left justified.

stater
          $data = $record->stater();
          $record->stater($data);

     FIPS State Code, Current Right.

     Expects numeric data of no more than 2 characters.  $data can be blank
     and should be left justified.

countyl
          $data = $record->countyl();
          $record->countyl($data);

     FIPS County Code, Current Left.

     Expects numeric data of no more than 3 characters.  $data can be blank
     and should be left justified.

countyr
          $data = $record->countyr();
          $record->countyr($data);

     FIPS County Code, Current Right.

     Expects numeric data of no more than 3 characters.  $data can be blank
     and should be left justified.

fmcdl
          $data = $record->fmcdl();
          $record->fmcdl($data);

     FIPS 55 Code (MCD/CCD) Left, Current.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

fmcdr
          $data = $record->fmcdr();
          $record->fmcdr($data);

     FIPS 55 Code (MCD/CCD) Right, Current.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

fsmcdl
          $data = $record->fsmcdl();
          $record->fsmcdl($data);

     FIPS 55 Code (Sub-MCD), Current Left.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

fsmcdr
          $data = $record->fsmcdr();
          $record->fsmcdr($data);

     FIPS 55 Code (Sub-MCD), Current Right.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

fpll
          $data = $record->fpll();
          $record->fpll($data);

     FIPS 55 Code (Incorporated Place), Current Left.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

fplr
          $data = $record->fplr();
          $record->fplr($data);

     FIPS 55 Code (Incorporated Place), Current Right.

     Expects numeric data of no more than 5 characters.  $data can be blank
     and should be left justified.

ctl
          $data = $record->ctl();
          $record->ctl($data);

     Census Tract Code, 1990 Left.

     Expects numeric data of no more than 6 characters.  $data can be blank
     and should be left justified.

ctr
          $data = $record->ctr();
          $record->ctr($data);

     Census Tract Code, 1990 Right.

     Expects numeric data of no more than 6 characters.  $data can be blank
     and should be left justified.

blkl
          $data = $record->blkl();
          $record->blkl($data);

     Census Block Number, 1990 Left.

     Expects alphanumeric data of no more than 4 characters.  $data can be
     blank and should be left justified.

blkr
          $data = $record->blkr();
          $record->blkr($data);

     Census Block Number, 1990 Right.

     Expects alphanumeric data of no more than 4 characters.  $data can be
     blank and should be left justified.

frlong
          $data = $record->frlong();
          $record->frlong($data);

     Start Longitude.

     Expects numeric data of no more than 10 characters.  $data cannot be
     blank and should be right justified.

frlat
          $data = $record->frlat();
          $record->frlat($data);

     Start Latitude.

     Expects numeric data of no more than 9 characters.  $data cannot be
     blank and should be right justified.

tolong
          $data = $record->tolong();
          $record->tolong($data);

     End Longitude.

     Expects numeric data of no more than 10 characters.  $data cannot be
     blank and should be right justified.

tolat
          $data = $record->tolat();
          $record->tolat($data);

     End Latitude.

     Expects numeric data of no more than 9 characters.  $data cannot be
     blank and should be right justified.

Data dictionary
---------------

   This is the original TIGER/Line 1998 data dictionary from which this
class was generated.

     Record Type 1 - Complete Chain Basic Data Record
     
          Field   BV  Fmt  Type  Beg  End  Len  Description
             RT   No    L     A    1    1    1  Record Type
        VERSION   No    L     N    2    5    4  Version Number
           TLID   No    R     N    6   15   10  TIGER/Line ID, Permanent Record Number
          SIDE1  Yes    R     N   16   16    1  Single-Side Complete Chain Code
         SOURCE  Yes    L     A   17   17    1  Linear Segment Source Code
         FEDIRP  Yes    L     A   18   19    2  Feature Direction, Prefix
         FENAME  Yes    L     A   20   49   30  Feature Name
         FETYPE  Yes    L     A   50   53    4  Feature Type
         FEDIRS  Yes    L     A   54   55    2  Feature Direction, Suffix
           CFCC  Yes    L     A   56   58    3  Census Feature Class Code
         FRADDL  Yes    R     A   59   69   11  Start Address, Left
         TOADDL  Yes    R     A   70   80   11  End Address, Left
         FRADDR  Yes    R     A   81   91   11  Start Address, Right
         TOADDR  Yes    R     A   92  102   11  End Address, Right
        FRIADDL  Yes    L     A  103  103    1  Start Imputed Address Flag, Left
        TOIADDL  Yes    L     A  104  104    1  End Imputed Address Flag, Left
        FRIADDR  Yes    L     A  105  105    1  Start Imputed Address Flag, Right
        TOIADDR  Yes    L     A  106  106    1  End Imputed Address Flag, Right
           ZIPL  Yes    L     N  107  111    5  ZIP Code, Left
           ZIPR  Yes    L     N  112  116    5  ZIP Code, Right
          FAIRL  Yes    L     N  117  121    5  FIPS 55 Code (American Indian/Alaska Native Area), Current Left
          FAIRR  Yes    L     N  122  126    5  FIPS 55 Code (American Indian/Alaska Native Area), Current Right
         TRUSTL  Yes    L     A  127  127    1  American Indian Trust Land Flag, Current Left
         TRUSTR  Yes    L     A  128  128    1  American Indian Trust Land Flag, Current Right
        CENSUS1  Yes    L     A  129  129    1  Census Use 1
        CENSUS2  Yes    L     A  130  130    1  Census Use 2
         STATEL  Yes    L     N  131  132    2  FIPS State Code, Current Left
         STATER  Yes    L     N  133  134    2  FIPS State Code, Current Right
        COUNTYL  Yes    L     N  135  137    3  FIPS County Code, Current Left
        COUNTYR  Yes    L     N  138  140    3  FIPS County Code, Current Right
          FMCDL  Yes    L     N  141  145    5  FIPS 55 Code (MCD/CCD) Left, Current
          FMCDR  Yes    L     N  146  150    5  FIPS 55 Code (MCD/CCD) Right, Current
         FSMCDL  Yes    L     N  151  155    5  FIPS 55 Code (Sub-MCD), Current Left
         FSMCDR  Yes    L     N  156  160    5  FIPS 55 Code (Sub-MCD), Current Right
           FPLL  Yes    L     N  161  165    5  FIPS 55 Code (Incorporated Place), Current Left
           FPLR  Yes    L     N  166  170    5  FIPS 55 Code (Incorporated Place), Current Right
            CTL  Yes    L     N  171  176    6  Census Tract Code, 1990 Left
            CTR  Yes    L     N  177  182    6  Census Tract Code, 1990 Right
           BLKL  Yes    L     A  183  186    4  Census Block Number, 1990 Left
           BLKR  Yes    L     A  187  190    4  Census Block Number, 1990 Right
         FRLONG   No    R     N  191  200   10  Start Longitude
          FRLAT   No    R     N  201  209    9  Start Latitude
         TOLONG   No    R     N  210  219   10  End Longitude
          TOLAT   No    R     N  220  228    9  End Latitude

AUTHOR
======

   Michael G Schwern <schwern@pobox.com>

SEE ALSO
========

   *Note Geo/TigerLine: Geo/TigerLine,, `mk_parsers' in this node


