GIS::Distance - Calculate geographic distances.
use GIS::Distance; my $gis = GIS::Distance->new(); $gis->formula( 'Polar' ); # Optional, default is Haversine. my $distance = $gis->distance( $lat1,$lon1 => $lat2,$lon2 ); print $distance->meters();
This perl library aims to provide as many tools to make it as simple as possible to calculate distances between geographic points, and anything that can be derived from that.
my $distance = $gis->distance( $lat1,$lon1 => $lat2,$lon2 );
Returns a Class::Measure::Length object for the distance between the two degree lats/lons. The distance is calculated using whatever formula the object is set to use.
This is an object who's class inherits from GIS::Distance::Formula. This object is used to calculate distance. The formula may be specified as either a blessed object, or as a string, such as "Haversine" or any of the other formulas.
If you specify the formula as a string then a few different class names will be searched for. So, if you did:
$gis->formula( 'Haversine' );
Then this list of packages would automatically be looked for. The first one that exists will be created and used:
GIS::Distance::Formula::Haversine::Fast GIS::Distance::Formula::Haversine Haversine
If you are using your own custom formula class make sure it extends() (Moose) the GIS::Distance::Formula class.
Note that a ::Fast version of the class will be looked for first. By default the ::Fast versions of the formulas, written in C, are not available and the pure perl ones will be used instead. If you would like the ::Fast formulas then install GIS::Distance::Fast and they will be automatically used.
GIS::Distance::Fast - C implmentation of some of the formulas shipped with GIS::Distance. This greatly increases the speed at which distance calculations can be made.
GIS::Distance::Formula::Cosine
GIS::Distance::Formula::GeoEllipsoid
GIS::Distance::Formula::GreatCircle
GIS::Distance::Formula::Haversine
GIS::Distance::Formula::MathTrig
GIS::Distance::Formula::Polar
GIS::Distance::Formula::Vincenty
Create a GIS::Coord class that represents a geographic coordinate. Then modify this module to accept input as either lat/lon pairs, or as GIS::Coord objects.
Create an extension to DBIx::Class with the same goal as Geo::Distance's closest() method.
Write a super accurate formula module called GIS::Distance::Geoid. Some very useful info is at http://en.wikipedia.org/wiki/Geoid.
Both the GIS::Distance::Formula::GreatCircle and GIS::Distance::Formula::Polar formulas are broken. Read their respective man pages for details.
---------------------------- ------ ------ ------ ------ ------ ------ ------ File stmt bran cond sub pod time total ---------------------------- ------ ------ ------ ------ ------ ------ ------ blib/lib/GIS/Distance.pm 100.0 n/a n/a 100.0 100.0 24.0 100.0 ...b/GIS/Distance/Formula.pm 75.0 n/a n/a 66.7 100.0 1.9 75.0 ...istance/Formula/Cosine.pm 100.0 n/a n/a 100.0 100.0 5.9 100.0 ...e/Formula/GeoEllipsoid.pm 100.0 n/a n/a 100.0 100.0 3.6 100.0 ...ce/Formula/GreatCircle.pm 100.0 n/a n/a 100.0 100.0 5.9 100.0 ...ance/Formula/Haversine.pm 100.0 n/a n/a 100.0 100.0 9.1 100.0 ...tance/Formula/MathTrig.pm 100.0 n/a n/a 100.0 100.0 2.4 100.0 ...Distance/Formula/Polar.pm 100.0 n/a n/a 100.0 100.0 2.7 100.0 ...tance/Formula/Vincenty.pm 100.0 50.0 50.0 100.0 100.0 44.6 93.1 Total 98.8 50.0 50.0 97.2 100.0 100.0 96.7 ---------------------------- ------ ------ ------ ------ ------ ------ ------
Aran Clary Deltac <bluefeet@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install GIS::Distance, copy and paste the appropriate command in to your terminal.
cpanm
cpanm GIS::Distance
CPAN shell
perl -MCPAN -e shell install GIS::Distance
For more information on module installation, please visit the detailed CPAN module installation guide.