... the user friendly GPS tool


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
LengthCalculator - Tracks an mehreren Tagen
#1
Hi Christian,

erst mal danke für das Tool, war schon sehr nützlich.

Ich bin mit einer 1450km Deutschland Radtour auf einige Kleinigkeiten gestoßen, die man vielleicht ändern könnte.

Der vom Garmin aufgezeichnete Weg ist an mehreren Tagen (über mehrere Wochenenden) entstanden. Ich habe ihn mit BaseCamp von Garmin zu einem großen Track zusammengefügt. Wenn ich den im RouteConverter öffne, scheinen mir im LengthCalculator die Duration Berechnungen etwas problematisch:

In Zeile 167 wird bei:
int summedUp = totalTimeMilliSeconds > 0 ? (int) totalTimeMilliSeconds / 1000 : 0;

der Cast (int) totalTimeMilliSeconds in meinem Fall negativ ... geringfügig robuster dagegen wäre der Code mit cast nach division:

int summedUp = totalTimeMilliSeconds > 0 ? (int) (totalTimeMilliSeconds / 1000) : 0;


Was ich mir als Duration eigentlich dann vorstelle, wäre die Summe der jeweiligen Tages-Durations. Habe ich mal schnell als Patch im Attachment zusammengebastelt. (Zugegeben, der Code würde auch noch einen Fehler produzieren, wenn man die Schlafpause nach Mitternacht macht und dann am nächsten Morgen die nächste Etappe fährt).

Allgemein: besteht Interesse (wie bei mir) daran, diese Fälle zu handhaben? Evtl. wie Garmin es im Connect Service macht mit "time", "total time", "moving time"?

Gruß
Thomas
Reply
#2
(21.07.2014, 21:13)thomas.friese Wrote: erst mal danke für das Tool, war schon sehr nützlich.

Hallo Thomas,

das freut mich.

(21.07.2014, 21:13)thomas.friese Wrote: Ich bin mit einer 1450km Deutschland Radtour auf einige Kleinigkeiten gestoßen, die man vielleicht ändern könnte.

Vielen Dank für den Hinweis. Magst Du mir die Datei zuschicken, damit ich meinen Fix testen kann?

(21.07.2014, 21:13)thomas.friese Wrote: Der vom Garmin aufgezeichnete Weg ist an mehreren Tagen (über mehrere Wochenenden) entstanden. Ich habe ihn mit BaseCamp von Garmin zu einem großen Track zusammengefügt. Wenn ich den im RouteConverter öffne, scheinen mir im LengthCalculator die Duration Berechnungen etwas problematisch:

In Zeile 167 wird bei:
int summedUp = totalTimeMilliSeconds > 0 ? (int) totalTimeMilliSeconds / 1000 : 0;

der Cast (int) totalTimeMilliSeconds in meinem Fall negativ ... geringfügig robuster dagegen wäre der Code mit cast nach division:

int summedUp = totalTimeMilliSeconds > 0 ? (int) (totalTimeMilliSeconds / 1000) : 0;

Ich habe den Cast auf int nun erst beim Aufruf fireCalculatedDistance() da ich glaube, daß mehr als 2^31 Sekunden - also knapp 70 Jahre - unwahrscheinlich sind. Eine Vorabversion habe ich gerade hochgeladen, bitte teste und berichte mal!

(21.07.2014, 21:13)thomas.friese Wrote: Was ich mir als Duration eigentlich dann vorstelle, wäre die Summe der jeweiligen Tages-Durations. Habe ich mal schnell als Patch im Attachment zusammengebastelt. (Zugegeben, der Code würde auch noch einen Fehler produzieren, wenn man die Schlafpause nach Mitternacht macht und dann am nächsten Morgen die nächste Etappe fährt).

Hast Du den auch angehängt?

(21.07.2014, 21:13)thomas.friese Wrote: Allgemein: besteht Interesse (wie bei mir) daran, diese Fälle zu handhaben? Evtl. wie Garmin es im Connect Service macht mit "time", "total time", "moving time"?

Du meinst, die Analysefunktionen weiter auszubauen?
--
Christian
Reply
#3
(22.07.2014, 14:58)routeconverter Wrote:
(21.07.2014, 21:13)thomas.friese Wrote: Was ich mir als Duration eigentlich dann vorstelle, wäre die Summe der jeweiligen Tages-Durations. Habe ich mal schnell als Patch im Attachment zusammengebastelt. (Zugegeben, der Code würde auch noch einen Fehler produzieren, wenn man die Schlafpause nach Mitternacht macht und dann am nächsten Morgen die nächste Etappe fährt).

Hast Du den auch angehängt?

Ich habs versucht und bin offenbar gescheitert... jetzt sollte es anhängen.

Werde es im Laufe der Woche testen.


Attached Files
.zip   Inserted-handling-for-multiday-tracked-gpx-data.zip (Size: 1.36 KB / Downloads: 296)
Reply
#4
(22.07.2014, 14:58)routeconverter Wrote:
(21.07.2014, 21:13)thomas.friese Wrote: In Zeile 167 wird bei:
int summedUp = totalTimeMilliSeconds > 0 ? (int) totalTimeMilliSeconds / 1000 : 0;

der Cast (int) totalTimeMilliSeconds in meinem Fall negativ ... geringfügig robuster dagegen wäre der Code mit cast nach division:

int summedUp = totalTimeMilliSeconds > 0 ? (int) (totalTimeMilliSeconds / 1000) : 0;

Ich habe den Cast auf int nun erst beim Aufruf fireCalculatedDistance() da ich glaube, daß mehr als 2^31 Sekunden - also knapp 70 Jahre - unwahrscheinlich sind. Eine Vorabversion habe ich gerade hochgeladen, bitte teste und berichte mal!

Den Cast später zu machen löst das Problem: das war ja gerade, dass Du nicht mit Sekunden sondern mit Millisekunden hantiert hast in dem Cast und erst DANACH die Division ausgewertet wird. und 2^31 Millisekunden sind "nur" etwa 25 Tage.

Bei mir war z.B.
totalTimeMilliseconds = 58720821000
(int)totalTimeMilliSeconds = -1408721144
==> (int)totalTimeMilliSeconds / 1000 = -1408721

Dein fireCalculatedDistance( ..., max( ...,summedUp)); hat den Fehler dann sogar wieder aufgefangen, der Code ist aber sicherer wenn Du später castest.

Die neue Version funktioniert auf jeden Fall auch mit meiner Datei.

Gruß
Thomas
Reply
#5
(23.07.2014, 21:35)thomas.friese Wrote: Die neue Version funktioniert auf jeden Fall auch mit meiner Datei.

Gut :-)
--
Christian
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)