GPS-Daten speichern und abrufen

Für Fragen von Einsteigern und Programmieranfängern...

GPS-Daten speichern und abrufen

Beitragvon bastler » 24. Aug 2017, 14:33 GPS-Daten speichern und abrufen

Hallo an Alle,

ich habe eine Konzeptfrage. Ich habe ein GPS-Modul, von dem ich regelmäßig Daten in meiner Anwendung erhalte. Hauptsächlich zeige ich die GPS-Daten nur einmalig live als Wert in einem Form an. Nun will ich aber eine Track-Verlaufs-Anzeige bauen. Dazu muss ich logischerweise die GPS-Daten (Longitude und Latitude + evtl. Zeitstempel) speichern. Wenn ich den Track zeichne, muss ich die gespeicherten Daten wieder abfragen/auslesen. Der Track wird entweder komplett neu gezeichnet, wenn aus einem anderen Menü auf die Track-Anzeige geklickt wird, oder wenn man schon in der Track-Anzeige ist, wird der Track fortgeführt gezeichnet, also ergänzt mit jedem neuen Wert.

Was würdet ihr für die Speicherung der GPS-Daten empfehlen? Wegschreiben in eine Textdatei oder doch schon eine kleine Datenbank nehmen? Hätte da an TDbF gedacht. Oder überlebt das die Anwendung auch, wenn ich einen sehr Großen Integer-Array nehme. Datenmäßig würden da ca. 45 MB auflaufen. Nach Beendigung der Anwendung, brauche die Daten nicht mehr unbedingt. Sie können dann also gelöscht werden.

Danke für eure Hilfe!
Der bastler
bastler
 
Beiträge: 10
Registriert: 30. Jan 2016, 15:54

Beitragvon Socke » 24. Aug 2017, 15:12 Re: GPS-Daten speichern und abrufen

bastler hat geschrieben:Was würdet ihr für die Speicherung der GPS-Daten empfehlen? Wegschreiben in eine Textdatei oder doch schon eine kleine Datenbank nehmen? Hätte da an TDbF gedacht. Oder überlebt das die Anwendung auch, wenn ich einen sehr Großen Integer-Array nehme. Datenmäßig würden da ca. 45 MB auflaufen. Nach Beendigung der Anwendung, brauche die Daten nicht mehr unbedingt. Sie können dann also gelöscht werden.

Wenn du die Daten nach einem Neustart bzw. Programmabsturz nicht mehr brauchst, kannst du die in einem Array speichern. Hier solltest du aber nicht für jeden neuen Wert die Größe des Arrays um 1 erhöhen.
Alternativ verwendest du z.B. spezialisierte Listen.

Wenn du die GPS-Daten extern speichern möchtest, solltest du dich an einem vorhandenn Standard, z.B. GPS Exchange Format halten. Damit steigen die Chancen, dass andere Programme deine Aufzeichnung auch lesen können.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2385
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon wp_xyz » 24. Aug 2017, 15:28 Re: GPS-Daten speichern und abrufen

Was sind heute schon 45 MB? Ich würde ein Array nehmen, das ich im Speicher halte, nachdem du die Werte später nicht mehr benötigst. Aber warum redest du von Integer-Array? GPS-Koordinaten sind doch Gleitkommazahlen, so wie ein Winkel. Für die Auflösung von 1" (8E-7°, etw 30 m, https://wiki.openstreetmap.org/wiki/DE: ... oordinaten) reichen Double-Zahlen . Je nachdem, wenn du noch viel rechnen musst oder mehr Genauigkeit brauchst, ist wahrscheinlich Extended günstiger, wegen der Rundungsfehler. Pro Datenpunkt hast du dann 20 Byte, und in die 45MB würden etwas mehr als 2 Millionen Punkte passen. Falls du lieber in Grad-Minuten-Sekunden getrennt als Integer speichern willst, brauchst du zwar nur - ich würde sagen - 4 oder 6 Byte pro Wert (eher 6), aber du hast beim Zugriff immer den Aufwand, das in eine Gleitkommazahl umzurechnen.
wp_xyz
 
Beiträge: 2249
Registriert: 8. Apr 2011, 08:01

Beitragvon bastler » 25. Aug 2017, 06:38 Re: GPS-Daten speichern und abrufen

Danke für eure Antworten!

Dann werde ich einen Array nehmen. Integer-Array deswegen, da ich schon eine Dezimalkoordinate als Integerwert von der Elektronik bekomme (Latitude z.B. 50123456). Will ich sie als Gleitkommazahl anzeigen, formatiere ich sie mit formfloat in latitude/1000000 um. Alle internen Geschichten mache ich mit den Integerwerten. Da brauch ich somit nie umzurechnen.

Socke meinte, dass ich den Array nicht ständig vergößern soll. Also definiere ich ihn gleich mit

Code: Alles auswählen
gpsposLat: array[0..15000] of Integer;
bastler
 
Beiträge: 10
Registriert: 30. Jan 2016, 15:54

Beitragvon Socke » 25. Aug 2017, 07:53 Re: GPS-Daten speichern und abrufen

bastler hat geschrieben:Socke meinte, dass ich den Array nicht ständig vergößern soll. Also definiere ich ihn gleich mit

Code: Alles auswählen
gpsposLat: array[0..15000] of Integer;

Wenn du vorher weißt, wie viele Koordinatenpunkte du maximal haben wirst, kannst du das so machen.

Mit meinem Kommentar bezog ich mich auf dynamische Arrays; mit folgender Konstruktion kannst du ein 32-Bit-Programm Programm auch bei 15000 Datenpunkten ganz gut unnötig verlangsamen. Besser wäre es, den Array immer in Blöcken zu vergrößern und in einer weiteren Variablen den aktuell höchsten belegten Index zu vermerken.
Code: Alles auswählen
var
  a: array of Integer;
begin
  while True do
    setlengh(a, length(a) + 1);
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2385
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast

cron
porpoises-institution
accuracy-worried