This is an automated email from the git hooks/post-receive script. dom pushed a commit to branch master in repository libgeo-coordinates-utm-perl.
commit 9f8511fd2fa20fa844148c39fe84004e226b1a89 Author: Dominic Hargreaves <[email protected]> Date: Sat Apr 20 23:34:44 2013 +0100 Imported Upstream version 0.10 --- Changes | 11 ++++++-- MANIFEST | 1 + META.yml | 42 ++++++++++++++-------------- Makefile.PL | 0 README | 3 +- UTM.pm | 29 ++++++++++++++------ t/01_basic_settings.t | 0 t/02_points.t | 0 t/03_mgrs.t | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 128 insertions(+), 34 deletions(-) diff --git a/Changes b/Changes old mode 100755 new mode 100644 index 1cfb241..bb50bb1 --- a/Changes +++ b/Changes @@ -1,4 +1,4 @@ -Revision history for Perl extension Geo::Coord. +Revision history for Perl extension Geo::Coordinates::UTM. 0.01 Wed Sep 27 12:37:38 2000 - original version; created by h2xs 1.19 @@ -23,7 +23,12 @@ Revision history for Perl extension Geo::Coord. - Addition of new ellipsoids - Refinement of MGRS calculations - Addition of latlon_to_utm_force_zone -0.08 Thu Dec 06 17:15:03 +0.08 Thu Dec 06 17:15:03 2007 - Refinement of MGRS calculations -0.09 Mon May 17 16:30:32 +0.09 Mon May 17 16:30:32 2010 - Patched mgrs_to_utm to handle short MGRS strings +0.10 Mon Mar 25 19:05:12 2013 + - fixed error in Everest Pakistan ellipsoid axis + - Added Arc 1950 ellipsoid + - patched MGRS calculations for S. Hemisphere + - Added MGRS tests \ No newline at end of file diff --git a/MANIFEST b/MANIFEST old mode 100755 new mode 100644 index 48324ed..4eb2551 --- a/MANIFEST +++ b/MANIFEST @@ -5,4 +5,5 @@ MANIFEST README t/01_basic_settings.t t/02_points.t +t/03_mgrs.t META.yml Module meta-data (added by MakeMaker) diff --git a/META.yml b/META.yml old mode 100755 new mode 100644 index 4c7354d..7eacba9 --- a/META.yml +++ b/META.yml @@ -1,21 +1,21 @@ ---- #YAML:1.0 -name: Geo-Coordinates-UTM -version: 0.09 -abstract: Convert LatLon to UTM and vice versa -author: - - Graham Crookham ([email protected]) -license: unknown -distribution_type: module -configure_requires: - ExtUtils::MakeMaker: 0 -build_requires: - ExtUtils::MakeMaker: 0 -requires: {} -no_index: - directory: - - t - - inc -generated_by: ExtUtils::MakeMaker version 6.55_02 -meta-spec: - url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 +--- #YAML:1.0 +name: Geo-Coordinates-UTM +version: 0.10 +abstract: Convert LatLon to UTM and vice versa +author: + - Graham Crookham ([email protected]) +license: unknown +distribution_type: module +configure_requires: + ExtUtils::MakeMaker: 0 +build_requires: + ExtUtils::MakeMaker: 0 +requires: {} +no_index: + directory: + - t + - inc +generated_by: ExtUtils::MakeMaker version 6.55_02 +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 diff --git a/Makefile.PL b/Makefile.PL old mode 100755 new mode 100644 diff --git a/README b/README old mode 100755 new mode 100644 index a23c702..0bcb3c6 --- a/README +++ b/README @@ -137,6 +137,7 @@ EXAMPLES 27 Everest 1969 Malaysia 28 Everest Pakistan 29 Indonesian 1974 + 30 Arc 1950 ellipsoid_names @@ -289,7 +290,7 @@ THANKS Peder Stray for the short MGRS patch COPYRIGHT - Copyright (c) 2000,2002,2004,2007,2010 by Graham Crookham. All rights reserved. + Copyright (c) 2000,2002,2004,2007,2010,2013 by Graham Crookham. All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/UTM.pm b/UTM.pm old mode 100755 new mode 100644 index a3701f3..0b5f7ae --- a/UTM.pm +++ b/UTM.pm @@ -12,7 +12,7 @@ our @EXPORT = qw( latlon_to_utm latlon_to_utm_force_zone latlon_to_mgrs mgrs_to_utm mgrs_to_latlon ellipsoid_info ellipsoid_names ); -our $VERSION = '0.09'; +our $VERSION = '0.10'; use Math::Trig; my $deg2rad = pi / 180; @@ -66,8 +66,18 @@ BEGIN { # Initialize this before other modules get a chance , [ "Everest 1969 Malaysia", 6377296, 0.006637847] , [ "Everest Pakistan", 6377296, 0.006637534] , [ "Indonesian 1974", 6378160, 0.006694609] + , [ "Arc 1950", 6378249.145,0.006803481] ); +# calc ecc as +# a = semi major axis +# b = semi minor axis +# e^2 = (a^2-b^2)/a^2 +# For clarke 1880 (Arc1950) a=6378249.145 b=6356514.966398753 +# e^2 (40682062155693.23 - 40405282518051.34) / 40682062155693.23 +# e^2 = 0.0068034810178165 + + foreach my $el (@Ellipsoid) { my ($name, $eqrad, $eccsq) = @$el; $Ellipsoid{$name} = $el; @@ -279,7 +289,7 @@ sub utm_to_mgrs($$$) unless _valid_utm_zone $zone_letter; my $northing_zones="ABCDEFGHJKLMNPQRSTUV"; - my $rnd_north=sprintf("%.0f",$northing); + my $rnd_north=sprintf("%d",$northing); my $north_split=length($rnd_north)-5; $north_split=0 if $north_split < 0; my $mgrs_north=substr($rnd_north,(length($rnd_north)-5)); @@ -290,7 +300,7 @@ sub utm_to_mgrs($$$) $num_north-=20 until $num_north <20; my $lett_north=substr($northing_zones,$num_north,1); - my $rnd_east=sprintf("%.0f",$easting); + my $rnd_east=sprintf("%d",$easting); my $east_split=length($rnd_east)-5; $east_split=0 if $east_split < 0; my $mgrs_east=substr($rnd_east,(length($rnd_east)-5)); @@ -322,8 +332,9 @@ sub latlon_to_mgrs($$$) sub mgrs_to_utm($) { my ($mgrs_string) = @_; - - my $zone = substr($mgrs_string,0,3); + my $zone = substr($mgrs_string,0,2); + $mgrs_string = "0$mgrs_string" if !($zone =~ /^\d+$/); + $zone = substr($mgrs_string,0,3); my $zone_number = $zone; my $zone_letter = chop $zone_number; @@ -379,16 +390,14 @@ sub mgrs_to_utm($) } else { #Southern Hemisphere - #my $tmpNorth=index('MLKJHGFEDC',$zone_letter); my $tmpNorth=index('CDEFGHJKLM',$zone_letter); - $tmpNorth++; $tmpNorth*=8; $tmpNorth*=10/9; $tmpNorth=int((($tmpNorth-$north_pos)/20)+0.5)*20; $north_pos+=$tmpNorth; $north_pos*=100000; $north_pos-=100000; - $north_pos+=2000000; + $north_pos+=2000000 if $zone_letter ne "C"; $y_coord+=$north_pos; } @@ -531,6 +540,8 @@ The Ellipsoids available are as follows: =item 29 Indonesian 1974 +=item 30 Arc 1950 + =back @@ -695,7 +706,7 @@ Peder Stray for the short MGRS patch =head1 COPYRIGHT -Copyright (c) 2000,2002,2004,2007,2010 by Graham Crookham. All rights reserved. +Copyright (c) 2000,2002,2004,2007,2010,2013 by Graham Crookham. All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/t/01_basic_settings.t b/t/01_basic_settings.t old mode 100755 new mode 100644 diff --git a/t/02_points.t b/t/02_points.t old mode 100755 new mode 100644 diff --git a/t/03_mgrs.t b/t/03_mgrs.t new file mode 100644 index 0000000..6115d4b --- /dev/null +++ b/t/03_mgrs.t @@ -0,0 +1,76 @@ +#!/usr/bin/perl + +use Test::More tests =>118; +BEGIN { use_ok ('Geo::Coordinates::UTM'); } + +use constant maxerror => 1e-2; + +use warnings; +use strict; + +sub fleq ($$;$) { + if (abs($_[0] - $_[1]) < maxerror) { + pass($_[2]); + } + else { + fail($_[2]); + diag("floating point value $_[0] too different to reference $_[1]"); + } +} + +my $latlon = "CCDEFGHJKLMNPQRSTUVWXX"; + +while(<DATA>) { + chomp; + next if /^\s*(?:#.*)?$/; + + my ($ellipsoid, $latitude, $longitude, $mgrs) = split /\|/; + my ($m) = latlon_to_mgrs($ellipsoid, $latitude, $longitude); + is($m, $mgrs, "MGRS $."); + + my ($lat, $lon) = mgrs_to_latlon($ellipsoid, $m); + fleq($lon, $longitude, "longitude $."); + fleq($lat, $latitude, "latitude $."); +} + +__DATA__ +# ellipsoid|latitude|longitude|mgrs +WGS-84|-15.038207087342|-169.633239244409|2LPJ4692336993 +Airy|-62.664347298066|-18.1318011641218|27EXL4689749077 +Bessel 1841 Nambia|-25.9668774017417|176.847283481794|60JVS8471328217 +Fischer 1968|35.6355896701843|-128.779407270838|9SWV1997243564 +Clarke 1880|-23.7249091815666|-58.725260492694|21KUP2412875382 +Clarke 1880|32.1214082107167|39.4139996279968|37SER3905453697 +Everest 1830 India|-77.8630147119741|-167.673126297052|3CVP3729056475 +Airy|18.3773457007429|166.226582243424|58QFF2956632235 +Australian National|56.0384628238617|-162.332085699794|3VXC6620413592 +GRS 1967|73.8433062387819|84.4955735592175|45XVB2223396218 +WGS-84|45.3359588450991|40.0400031298722|37TEL8148720798 +Helmert 1906|59.9201815839611|-99.2827685844408|14VMM8418942625 +Bessel 1841 Nambia |-14.7469801908782|85.8375051526079|45LUD7488269470 +WGS 66|76.7872465101191|65.0798587586657|41XNF5305723979 +Clarke 1880|-77.955182771371|144.231341269374|55CDP3552145300 +WGS-84|-46.0648299617229|79.4920266271394|44GLP8337197644 +Fischer 1968|-46.0648299617229|79.4920266271394|44GLP8337097630 +Airy|-29.748187686171|-135.405807319046|8JMN6076509275 +Airy|7.02664660839798|25.1759536336006|35NKH9852877035 +GRS 1980|-23.328081037079|-157.911520393938|4KFV1128219742 +Krassovsky|11.2850029025532|160.123416303008|57PXN2261647750 +Modified Fischer 1960|63.3429435572545|-65.5753780930164|20VLR7110826412 +Hough|18.8829467124758|-72.6426446845981|18QYF4834589517 +Bessel 1841 Nambia |-33.5599610482547|149.259628455931|55HGC0974084663 +Fischer 1968|-42.9864757600699|73.2901330922691|43GCN6059939255 +GRS 1967|19.5586150524789|78.6857081619374|44QKG5719264288 +International|52.870630356142|-150.706593044311|5UPU5436760466 +WGS 66|59.0836358798848|-60.7869841003324|20VPL2681951474 +Krassovsky|50.3319354501851|50.6262418599614|39UVR7339875702 +Hough|-67.0761049801843|17.6673796933028|33DXF1591557596 +Hough|44.6070598377999|-79.0353060704053|17TPK5590741178 +WGS 66|56.9743083375776|-0.986959536978418|30VXJ2236216335 +WGS-84|54.8376254894191|-30.4398113516179|25UFA6441379726 +Everest 1830 India|7.80734863804564|-94.7379708763827|15NUJ0838563327 +WGS-84|42.1388081786232|94.1239212872368|46TEM9287865799 +Modified Fischer 1960|-50.2668337384696|137.577966166824|53FPE8371928502 +Modified Fischer 1960|-16.0823420814511|-30.9872437684145|25KGC1529720901 +Airy|-66.2328424771405|-54.6449818303734|21DXG0588052719 +Everest 1830 India|-6.84757411014701|39.7458086007605|37MEN8239243096 \ No newline at end of file -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libgeo-coordinates-utm-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits
