Hallo,
vermutlich ist die Frage, die ich habe ziemlich dumm, aber dennnoch stelle ich sie.
Ich muss in größeren Textdateien (GPX-Datei, oft mehr als 100.000 Zeichen) die Werte der Longitude und der Latitude in jedem Trackpunkt ermitteln.
Mein bisheriger Ansatz:
Alles aus der Datei in einen String (zwischen) schaufeln, dabei die Zeilenden nicht mitnehmen.
Dann alles über zwischen.indexOf(Zeichenfolge, Startwert) suchen.
String TP_SEGSTART="<trkseg>",TP_PUNKTSTART="<trkpt",TP_PUNKTENDE="</trkpt>";
String TP_LATSTART="lat=",TP_GAENSE=""",TP_LONGSTART="lon=";
Erst nach TP_SEGSTART darf dann nach TP_PUNKTSTART gesucht werden.
Erst hinter TP_PUNKTSTART dürfen dann die anderen Daten bis zum nächsten TP_PUNKTENDE genutzt werden.
In diesem Bereich ist dann der Beginn von TP_LATSTART und TP_LONGSTART zu suchen, wobei die Reihenfolge nicht wirklich feststeht.
Nach dem Startwert ist dann das betreffende Ende TP_GAENSE zu suchen und jeweils dann die Zahlenwerte dazwischen zu ermitteln.
Dann den nächsten Trackpunktbeginn suchen über zwischen.indexOf(TP_PUNKTSTART, Startwert von gefundenem TP_PUNKTENDE +1) und dies dann bis zum Ende des ganzen Strings( > 100.000 Zeichen).
Leider ist mit meinem Vorgehen die Zeitdauer bis zu 5 mal größer, als wenn ich die gleichen Daten auf dem gleichen Gerät mit einer anderen App (etwa OSMAnd) einlese.
Wer kann mir helfen?
Wo liegt mein Fehler?
Fragenden Grüße,
schymura