NAME

   Geo::Compass::Variation - Accurately calculate magnetic declination and
   inclination

SYNOPSIS

       use Geo::Compass::Variation qw(mag_dec mag_inc);

       my $lat = 53.1234567;
       my $lon = -114.1234567;
       my $alt = 1098;

       my $declination = mag_dec($lat, $lon, $alt);
       my $inclination = mag_inc($lat, $lon, $alt);

DESCRIPTION

   This module calculates and returns the Magnetic declination and
   inclination (dip) calculations based on WMM earth magnetism model for a
   specified latitude and longitude pair.

   See NOAA <https://www.ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml> for
   details.

   The WMM data is currently valid from January 1, 2015 through December
   31, 2019. This module will be updated with new WMM data as it becomes
   available.

EXPORT_OK

   All functions must be imported explicitly:

       use Geo::Compass::Variation qw(mag_dec mag_inc);

       # or

       use Geo::Compass::Variation qw(:all);

   Note: The mag_dec function has an alias of mag_var which can be
   imported explicitly, or with the :all tag.

FUNCTIONS

mag_dec

   Calculates and returns the magnetic declination of a pair of GPS
   coordinates.

   Parameters:

       $lat

   Mandatory, Float: Latitude, in signed notation (eg: 53.1111111.
   Negative is South and positive is North of the Equator.

       $lon

   Mandatory, Float: Longitude, in signed notiation (eg: -114.11111.
   Negative is West and positive is East of the Prime Meridian.

       $alt

   Optional, Integer: Altitude above sea level, in metres. Defaults to 0.

       $year

   Optional, Integer|Float: The year to base the calculation from.
   Defaults to YYYY.M, where YYYY is the year from localtime() and M is
   the month number from localtime().

   We will die() if the year is out of range of the current WMM
   specification.

   Return: A floating point number representing the magnetic declination.

mag_var

   Simply an alias for "mag_dec".

mag_inc

   Calculates and returns the magnetic inclination of a pair of GPS
   coordinates.

   Parameters:

   Parameters are exactly the same as for the "mag_dec" function. Please
   review that documentation section for full details.

   Return: A floating point number representing the magnetic inclination.

mag_field

   Core function that calcluates the raw magnetic field north component
   ($X), the east component ($Y) and the vertical component ($Z).

   Takes the same parameters as "mag_dec". Please see that function's
   documentation for full details.

AUTHOR

   Steve Bertrand, <steveb at cpan.org>

ACKNOWLEDGEMENTS

   All the thanks goes out to no_slogan
   <http://perlmonks.org/?node_id=78006> of Perlmonks for all of the core
   functionality.

   It was presented here <http://perlmonks.org/?node_id=1191907>, in
   response to this thread <http://perlmonks.org/?node_id=1191753> I had
   started regarding a code review of some prototype code I wrote to
   calculate the direction between two pairs of GPS coordinates.

LICENSE AND COPYRIGHT

   Copyright 2017 Steve Bertrand.

   This program is free software; you can redistribute it and/or modify it
   under the terms of either: the GNU General Public License as published
   by the Free Software Foundation; or the Artistic License.

   See http://dev.perl.org/licenses/ for more information.