From 76534d0723c34daa99765905286c6b5f1941d80b Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20A=2E=20Holm?= Date: Sun, 23 Jun 2013 19:45:17 +0200 Subject: [PATCH] gpst: print_gpx() truncates values instead of round in pgwtab and pgwupd See previous commit (2349bfd, "gpst: gpst_entry() truncates numbers instead of rounding", 2013-06-23 19:20:50 +0200) for an explanation why. This should probably be integrated into print_entry(), but that's a story for another branch. 18e6fbc8-dc30-11e2-af41-001f3b596ec9 --- gpst | 12 +++--------- tests/run-tests.pl | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/gpst b/gpst index e8f8434..e4aae6c 100755 --- a/gpst +++ b/gpst @@ -533,15 +533,9 @@ sub print_gpx { ($Sym = postgresql_copy_safe(xml_to_txt($2))); if (length($Opt{'round'})) { - if (defined($Round{'lat'}) && length($Lat)) { - ($Lat = 1.0 * sprintf("%.$Round{'lat'}f", $Lat)); - } - if (defined($Round{'lon'}) && length($Lon)) { - ($Lon = 1.0 * sprintf("%.$Round{'lon'}f", $Lon)); - } - if (defined($Round{'ele'}) && $Ele ne '\N') { - ($Ele = 1.0 * sprintf("%.$Round{'ele'}f", $Ele)); - } + $Round{'lat'} && ($Lat = int($Lat * (10**$Round{'lat'})) / 10**$Round{'lat'}); + $Round{'lon'} && ($Lon = int($Lon * (10**$Round{'lon'})) / 10**$Round{'lon'}); + $Round{'ele'} && $Ele ne '\N' && ($Ele = int($Ele * (10**$Round{'ele'})) / 10**$Round{'ele'}); } if ($Opt{'output-format'} eq "pgwtab") { diff --git a/tests/run-tests.pl b/tests/run-tests.pl index b2ceb64..cc7e344 100755 --- a/tests/run-tests.pl +++ b/tests/run-tests.pl @@ -1614,12 +1614,12 @@ END # }}} testcmd("../gpst -R lat=3,lon=3,ele=1 -o pgwtab multitrack.gpx", # {{{ <. ☺\t2469\tmountain\t2006-05-08T18:27:59Z\tHer er det &, < og >. ☺\tSchwæra greie\thttp://www.example.org/\tWaypoint -(60.397,5.351)\tHalfdan Griegs vei\t\\N\t\\N\t\\N\t04-AUG-02 19:42\t04-AUG-02 19:42\t\\N\t\\N +(51.477,-0.001)\t0-Meridian\t\\N\t\\N\t\\N\t11-FEB-03 15:46\t11-FEB-03 15:46\t\\N\t\\N +(51.532,-0.177)\tAbbey Road\t34.4\t\\N\t\\N\tDet hellige gangfeltet der Beatles valsa over.\t26-FEB-06 17:29:46\t\\N\t\\N +(61.636,8.312)\tGaldhøpiggen med ', &, < og >. ☺\t2469\tmountain\t2006-05-08T18:27:59Z\tHer er det &, < og >. ☺\tSchwæra greie\thttp://www.example.org/\tWaypoint +(60.397,5.35)\tHalfdan Griegs vei\t\\N\t\\N\t\\N\t04-AUG-02 19:42\t04-AUG-02 19:42\t\\N\t\\N (51.51,-0.13)\tLeicester Square\t\\N\t\\N\t\\N\t11-FEB-03 18:00\t11-FEB-03 18:00\t\\N\t\\N -(60.969,9.285)\tLeira camping\t\\N\t\\N\t\\N\t03-OKT-02 21:58\t03-OKT-02 21:58\t\\N\t\\N +(60.968,9.285)\tLeira camping\t\\N\t\\N\t\\N\t03-OKT-02 21:58\t03-OKT-02 21:58\t\\N\t\\N END "", "--round works with lat, lon, ele from gpx, pgwtab output", @@ -1630,28 +1630,28 @@ END testcmd("../gpst -R lat=3,lon=3,ele=1 -o pgwupd multitrack.gpx", # {{{ < coor) < 0.05; - UPDATE logg SET dist = cldist(coor) WHERE (point(51.478,-0.001) <-> coor) < 0.05; + UPDATE logg SET name = clname(coor) WHERE (point(51.477,-0.001) <-> coor) < 0.05; + UPDATE logg SET dist = cldist(coor) WHERE (point(51.477,-0.001) <-> coor) < 0.05; COMMIT; BEGIN; UPDATE logg SET name = clname(coor) WHERE (point(51.532,-0.177) <-> coor) < 0.05; UPDATE logg SET dist = cldist(coor) WHERE (point(51.532,-0.177) <-> coor) < 0.05; COMMIT; BEGIN; - UPDATE logg SET name = clname(coor) WHERE (point(61.637,8.312) <-> coor) < 0.05; - UPDATE logg SET dist = cldist(coor) WHERE (point(61.637,8.312) <-> coor) < 0.05; + UPDATE logg SET name = clname(coor) WHERE (point(61.636,8.312) <-> coor) < 0.05; + UPDATE logg SET dist = cldist(coor) WHERE (point(61.636,8.312) <-> coor) < 0.05; COMMIT; BEGIN; - UPDATE logg SET name = clname(coor) WHERE (point(60.397,5.351) <-> coor) < 0.05; - UPDATE logg SET dist = cldist(coor) WHERE (point(60.397,5.351) <-> coor) < 0.05; + UPDATE logg SET name = clname(coor) WHERE (point(60.397,5.35) <-> coor) < 0.05; + UPDATE logg SET dist = cldist(coor) WHERE (point(60.397,5.35) <-> coor) < 0.05; COMMIT; BEGIN; UPDATE logg SET name = clname(coor) WHERE (point(51.51,-0.13) <-> coor) < 0.05; UPDATE logg SET dist = cldist(coor) WHERE (point(51.51,-0.13) <-> coor) < 0.05; COMMIT; BEGIN; - UPDATE logg SET name = clname(coor) WHERE (point(60.969,9.285) <-> coor) < 0.05; - UPDATE logg SET dist = cldist(coor) WHERE (point(60.969,9.285) <-> coor) < 0.05; + UPDATE logg SET name = clname(coor) WHERE (point(60.968,9.285) <-> coor) < 0.05; + UPDATE logg SET dist = cldist(coor) WHERE (point(60.968,9.285) <-> coor) < 0.05; COMMIT; END "", -- 2.11.4.GIT