GIS-Distance-GeoEllipsoid

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN


# Set the ellipsoid:
my $gis = GIS::Distance->new( 'GeoEllipsoid', 'NAD27' );
```

# DESCRIPTION

This module is a wrapper around [Geo::Ellipsoid](https://metacpan.org/pod/Geo%3A%3AEllipsoid) for [GIS::Distance](https://metacpan.org/pod/GIS%3A%3ADistance).

Normally this module is not used directly.  Instead [GIS::Distance](https://metacpan.org/pod/GIS%3A%3ADistance)
is used which in turn interfaces with the various formula classes.

# OPTIONAL ARGUMENTS

## ellipsoid

```perl
my $gis = GIS::Distance->new( 'GeoEllipsoid', 'NAD27' );
```

Pass the name of an ellipsoid, per ["DEFINED ELLIPSOIDS" in Geo::Ellipsoid](https://metacpan.org/pod/Geo%3A%3AEllipsoid#DEFINED-ELLIPSOIDS).

lib/GIS/Distance/GeoEllipsoid.pm  view on Meta::CPAN

    my $gis = GIS::Distance->new( 'GeoEllipsoid' );
    
    # Set the ellipsoid:
    my $gis = GIS::Distance->new( 'GeoEllipsoid', 'NAD27' );

=head1 DESCRIPTION

This module is a wrapper around L<Geo::Ellipsoid> for L<GIS::Distance>.

Normally this module is not used directly.  Instead L<GIS::Distance>
is used which in turn interfaces with the various formula classes.

=head1 OPTIONAL ARGUMENTS

=head2 ellipsoid

    my $gis = GIS::Distance->new( 'GeoEllipsoid', 'NAD27' );

Pass the name of an ellipsoid, per L<Geo::Ellipsoid/DEFINED ELLIPSOIDS>.

If not set the default ellipsoid, C<WGS84>, will be used.

t/accuracy.t  view on Meta::CPAN


my $test_cases = {
    'Canoga Park to San Francisco' => [ 34.202361, -118.601875,  37.752258, -122.441254,   524.347542197146, 'km'],
    'Egypt to Anchorage'           => [ 26.185018,   30.047607,  61.147543, -149.81575,  10324.656666156,    'km'],
    'London to Sydney'             => [ 51.497736,   -0.115356, -33.81966,   151.169472, 16982.5402359324,   'km'],
    'Santiago to Rio de Janeiro'   => [-33.446339,  -70.63591,  -22.902981,  -43.213177,  2923.66733201558,  'km'],
    'Beirut to Dimashq'            => [ 33.863146,   35.52824,   33.516496,   36.287842, 80241.1054436632,   'm' ],
};
my $test_case_count = @{[ keys %$test_cases ]} + 0;

test_formula( 'GeoEllipsoid' );

done_testing;

sub test_formula {
    my ($formula) = @_;
    my $gis = GIS::Distance->new( "GIS::Distance::$formula" );
    foreach my $title (keys %$test_cases) {
        my $case     = $test_cases->{$title};
        my $unit     = $case->[5];
        my $distance = $case->[4];

        my $length = $gis->distance( $case->[0], $case->[1], $case->[2], $case->[3] )->$unit();

        is_close( $length, $distance, $title );
    }
}



( run in 0.315 second using v1.01-cache-2.11-cpan-26ccb49234f )