• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

gpx-Dateien besser auf der SD-Karte oder im internen Speicher?

Fadenkreuz

Geoguru
In einem anderen Thread ging es um die Frage, ob man bei einem Garmin-GPSr das Kartenmaterial und die gpx-Dateien besser auf der SD-Karte oder besser im internen Speicher ablegt. Beim Kartenmaterial herrscht offenbar Einigkeit (besser auf SD-Karte), bei gpx-Dateien wurde hingegen geschrieben:

"Karten auf die Karte, das stimmt. Aber GPX-Daten gehören immer in den internen Speicher. Warum? SD-Karten haben grundsätzlich temporäre Schreib-Lesefehler. Fällt der zufällig mit einem Schreibvorgang, z. B. beim Loggen eines Caches, zusammen, dann ist die GPX-Datei nicht mehr zu lesen, da der Index der GPX-Datei jetzt korrupt ist. Folge: Man kann im Feld keine Caches mehr auf dem Gerät sehen. Und das ist ziemlich peinlich, wenn das weit entfernt von einem ladefähigen Computer vorkommt."

Die gpx-Datei selbst wird im Garmin gar nicht verändert (beschrieben), aber die dazu gehörige xml-Datei mit dem Index. Wenn aber nun der Index korrupt ist, dann nützt es doch nichts, wenn die gpx-Datei auf dem internen Speicher statt auf der SD-Karte liegt, oder? Sie liegt ja in beiden Fällen unverändert (unbeschädigt) vor und es würde keine Rolle spielen, auf welchem Speicherplatz sie abgelegt ist.

Ich würde gerne wissen, was denn nun stimmt. Ich selbst speichere Kartenmaterial und gpx-Dateien schon immer auf der SD-Karte und hatte damit noch nie Probleme. Bei manchen älteren Garmin-Geräten gab es das Problem, dass aus unerfindlichen Gründen ohne erkennbares Muster die gpx-Datei nach dem Hochfahren neu eingelesen wurde (grüner Fortschrittsbalken), was je nach Anzahl der 1000er gpx-Dateien etwas dauern konnte. Aber wenn ich es richtig verstehe, würde das ja nicht verhindert werden, wenn die gpx-Dateien im internen Speicher liegen würden. Bei den Geräten ab Oregon 600 kam das auch nicht mehr vor.

Ist es nicht eher von Vorteil, dass ich bei einer korrupten xml-Datei das Neu-Einlesen erzwingen kann, indem ich die SD-Karte herausnehme und das Gerät einmal "leer" starte und dann die SD-Karte wieder einlege? Dieses erzwungene Neu-Einlesen würde ja nicht funktionieren, wenn die gpx-Datei im internen Speicher liegt.
 

jennergruhle

Geoguru
Ist es nicht eher von Vorteil, dass ich bei einer korrupten xml-Datei das Neu-Einlesen erzwingen kann, indem ich die SD-Karte herausnehme und das Gerät einmal "leer" starte und dann die SD-Karte wieder einlege? Dieses erzwungene Neu-Einlesen würde ja nicht funktionieren, wenn die gpx-Datei im internen Speicher liegt.
Exakt das ist der Grund, weshalb ich alles grundsätzlich auf die Speicherkarte lade. Natürlich per Kartenleser im PC - ansonsten dauert es Stunden (zumindest beim Kartenmaterial).
 
OP
Fadenkreuz

Fadenkreuz

Geoguru
Ich hatte eigentlich gehofft, dass Hans noch mal erklärt, warum seiner Meinung nach gpx-Dateien besser im internen Speicher abgelegt werden sollen, weil ich seine Erklärung nicht ganz nachvollziehen konnte.
 
OP
Fadenkreuz

Fadenkreuz

Geoguru
Hmm, nein. In Bezug auf die angeblich regelmäßigen Lese-/Schreibfehler zwar schon, aber nicht in Bezug auf die Indizierung und eine eventuell "korrupte" Datei.
 

pikachu

Geomaster
Vermutlich nimmt er an, daß die Indexdatei auf demselben Medium erstellt wird, auf dem auch die GPX liegt.
Woher er das nur alles weiß (falls er es weiß)?

Ansonsten hättest Du recht: Wenn Garmin den Index IMMER im internen Speicher anlegte, ganz egal, wo die GPX liegt, wäre das ja egal ...
 
OP
Fadenkreuz

Fadenkreuz

Geoguru
Ansonsten hättest Du recht: Wenn Garmin den Index IMMER im internen Speicher anlegte, ganz egal, wo die GPX liegt, wäre das ja egal ...
So ist es meiner Meinung nach auch. Wenn ich auf eine leere SD-Karte nur eine gpx-Datei speichere, dann ist hinterher immer noch nur diese (unveränderte) gpx-Datei darauf, egal, was ich mit dem Garmin-GPSr alles angestellt habe.
 

jennergruhle

Geoguru
daß die Indexdatei auf demselben Medium erstellt wird, auf dem auch die GPX liegt.
Wenn dort Dateien erstellt werden, sollte das doch (zumindest auf der SD-Karte) als Dateien erkennbar sein.

Ich denke eher, dass wenn interne Indizes erstellt werden, diese in einem von außen nicht zugänglichen Bereich des internen Speichers liegen. Vermutlich ist es dann auch egal, wo die GPX-Datei liegt.

Nur beim Speicherinterface (der Anbindung der Speicherchips an den Prozessor) kann ich mir Vorteile beim internen Speicher vorstellen. Denn (Micro-)SD-Karten sind mit einem seriellen Bus angebunden, interner Speicher vermutlich parallel mit etlichen Daten- und Adressleitungen. Um das bestätigen, müsste man nachsehen, was für Speicher und Prozessoren (meine Vermutung: ARM Cortex-irgendwas) verwendet werden.
 

pikachu

Geomaster
Es ändert aber alles nichts am "Gesamtproblem", das sich einfach daraus ergibt, daß eine GPX-Datei nun einmal eine Textdatei ist und keine Datenbank-Tabelle. Punkt 1.

Demnach muß eine GPX zunächst einmal immer komplett eingelesen werden, damit sie verarbeitet bzw. durchsucht werden kann. Nun wäre es natürlich denkbar, daß Garmin die GPX einliest und in ein internes DBMS konvertiert und darüber dann Indexe anlegt. Ich glaube das nicht, lasse mich aber gern eines Besseren belehren.

Man darf das nicht mit XML-Spalten einer Datenbanktabelle verwechseln. Hier ist eine Indizierung dieser Spalte (und damit der XML-Daten) möglich, diese wird jedoch vom DBMS verwaltet und eingerichtet.

Punkt 2: @Fadenkreuz hat ja bereits darauf hingewiesen, daß die GPX immer nur gelesen werden. Daher kann dort nach dem Transfer auf die SD-Karte kein Defekt durch Schreibvorgänge entstehen. Wenn man nun aber Defekte der SD-Karte annimmt, die persistieren und nicht durch die Software korrigiert werden (können), dann muß das so hingenommen werden und kann auch nicht durch Anlegen von Indizes auf dem internen Speicher korrigiert werden.

Bleibt die Annahme, die (vermeintlichen) Indizes würden auf der SD-Karte erstellt. Kommt es hierbei zu Schreibfehlern, kann dieser Index natürlich korrupt werden. Wenn die Software damit nicht zurecht kommt, dann wird die Funktion damit außer Kraft gesetzt. Käme das jedoch häufig vor, würde der Softwarehersteller darauf reagieren (müssen), und zwar wegen massiver Kundenbeschwerden. Eine Umgehung wäre ja durchaus machbar, indem man halt temporäre Indizes im Haupt-Speicher anlegt oder auf den internen Speicher legt. Oder ... oder ... oder ... (z.B. Prüfsummen mit automatischer Neuerzeugung des Indexes, etc.).

(Unmaßgeblicher Anekdotenbeweis: Ich habe davon, daß sowas häufig vorkommt bei Garmin noch nie gehört. Heißt aber nix.)
 
Demnach muß eine GPX zunächst einmal immer komplett eingelesen werden, damit sie verarbeitet bzw. durchsucht werden kann. Nun wäre es natürlich denkbar, daß Garmin die GPX einliest und in ein internes DBMS konvertiert und darüber dann Indexe anlegt. Ich glaube das nicht, lasse mich aber gern eines Besseren belehren.

Im internen Dateisystem des Garmin (zumindest bei meinem Oregon 700) gibt es im Verzeichnis /GARMIN/SQL eine sqlite3 Datenbank "UserData.sqlite3". Die ist der Index für die eingelesene GPX Datei. Unter anderem wird auf die Originaldatei (file_zdx) und die Position des Caches im GPX in der DB verwiesen.

Eine typische Zeile sieht so aus:

1741631114636.png

Udo
 

pikachu

Geomaster
Ahja, stimmt. Da ist eine Datenbank, die (auf meinem Gerät) die Geocaches enthält, die ich mit Basecamp und dem "Senden"-Befehl auf das Garmin kopiert habe.

Dann gibt es noch "CustomMaps.db" und "cwm.db", die bei mir beide leer sind, jedoch eine ganze Reihe von Tabellen enthalten. Die letztere scheint für Wettervorhersagen zu sein ...

Es wäre nun denkbar, daß auch eine DB für Wegpunkte und Routen/Tracks existiert. Ich schaue mir das mal an.

Danke für den Hinweis!
(y)
 

pikachu

Geomaster
So, ich habe mal ein wenig herumgespielt. Folgende Beobachtungen auf meiner Umgebung (GPSMAX 66sr, BaseCamp 4.75):

  • Einige Geocaches, die ich mit "Senden" vom BC aufs 66sr geschickt habe, sind in der Datenbank.
  • Andere nicht. Ich kann derzeit nicht nachvollziehen, was der Trigger hier ist.
  • Die Caches bleiben auch dann in der DB, wenn ich sie im Basecamp aus dem 66sr lösche.
  • Routen und Tracks finde ich nie in der DB.
  • Die sqlite mit darin enthaltenen Geocaches befindet sich immer im internen Speicher, obwohl die GPX der Caches auf der SD-Karte liegen und es auf der SD-Karte ebenfalls einen Ordner SQL gibt. Dieser enthält jedoch nur die "CustomMaps.db".
Tja, was soll man davon halten ...
 
Zuletzt bearbeitet:
Oben