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.

