Geo-Code-XYZEN

 view release on metacpan or  search on metacpan

lib/Geo/Code/XYZEN.pm  view on Meta::CPAN

package Geo::Code::XYZEN;
use 5.006;
use warnings;
use Math::BigInt lib => 'GMP';
my %vowel = ('A' => '1','O' => '1','E' => '1','I' => '1','Y' => '1','U' => '1');
use constant DEBUG    => 0;
use constant BASEN    => 146300;
use constant BASEA    => 36;
use constant BASEAEL    => 26;
use constant PADD     => 282699884614999;
use constant ALPHA         => [ A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z ];

my %altmap = ( 'A'=>'0','B'=>'1','C'=>'2','D'=>'3','E'=>'4','F'=>'5','G'=>'6','H'=>'7','I'=>'8','J'=>'9','K'=>'10','L'=>'11','M'=>'12','N'=>'13','O'=>'14','P'=>'15','Q'=>'16','R'=>'17','S'=>'18','T'=>'19','U'=>'20','V'=>'21','W'=>'22','X'=>'23','Y'=>...

use constant ALPHANUMERIC         => [ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z ];

use constant GEONAMETRIPLE              => [ 

KABWE,PLANKAGE,LAWRENSON,HALOXENE,EUNUCHAL,SQUIER,BRODHEAD,GLISSADE,KOZHIKODE,NEWBORN,ZONOID,PREZNIT,SOROLLA,FICKORGIE,WAYBIRD,DIG,ESPIO,AMPED,LIMULUS,PROCITY,GOOOF,NISHI,CHARAN,KWANZAA,CULLIMORE,SAICES,MESENTERY,JUGOSLAV,ALNOITE,BARTIN,HEXEREI,TURJI...
 











sub new {
    my $class = shift;
    my $self = {
    };
    bless ($self, $class);
    return $self;
}

sub geodata {
  my $self = shift;
  $self->{geodata} = $_[0] if defined $_[0];
  return $self->{geodata};
}

sub geocode {
  my $self    = shift;
  my %params = @_;
	my $lat = $params{lat} if defined $params{lat};
	my $lon = $params{lon} if defined $params{lon};
	my $el = $params{el} if defined $params{el};
	my $code = uc $params{gc} if defined $params{gc}; #Geo::Code::XYZEN is case insensitive
	my $geo3name = 1;
	if (defined $lat && defined $lon) {
	if ($geo3name) {
	  $self->ngcode($lat,$lon,$geo3name,$el);
	} else {
	  $self->gcode($lat,$lon);
	}
	} else {
	  $self->gll($code);
	}
	  my $geodata    = $self->geodata;
	  return $self->geodata;
}

sub gcode {
  my $self        = shift;
  my ($lat,$lon) = @_;
  my $geodata = &lltodec($lat,$lon);
  return $self->geodata($geodata);
}

sub gll {
	my $self        = shift;
	my $code = shift;
	my $geodata = &dencd($code);
	return $self->geodata($geodata);
}



( run in 1.329 second using v1.01-cache-2.11-cpan-39bf76dae61 )