Geolog->GPX (Found-GPX für Nicht-PM)

Geocaching-Programme für Windows.

Moderator: Christian und die Wutze

skywalker90
Geomaster
Beiträge: 570
Registriert: Do 14. Mai 2009, 17:06

Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von skywalker90 » Mi 11. Aug 2010, 20:13

Idee: Die vorhanden Daten (Log und Datum) von Geolog für andere Programme wie z.B. GSAK aufbereiten.

Problem: Geolog speichert die Daten in verschiedenen Dateien und teilweise nicht im "richtigen" Format.

Eine Lösung: Ich habe ein kleines Programm geschrieben, dass alle DNF- und Found-Logs ausliest und als GPX-Datei speichert (die GPX-Datei enthält weniger Daten über den Cache als eine originale Datei) Deswegen meckert z.B. GSAK auch das fehlen der Attribute an. Macht aber nix wenn der Cache schon in GSAK eingepflegt ist.

Bedienung: Einfach nur die "FoundGPX.exe" starten. Das gcdir-Verzeichnis wird automatisch gefunden und die gpx-Datei im aktuellen Verzeichnis erstellt. Wenn die exe per Doppelklick gestartet wurde ==> selber Ordner wie die FoundGPX.exe. Wenn die exe über die Kommandozeile gestartet wurde, gilt das aktuelle Verzeichnis der Kommandozeile.

Alternativ Optionen setzen:

Code: Alles auswählen

FoundGPX.exe [/out outputfile] [/noCoord] [/gcdir gcdirDirectory]

/out outputfile: Write result to outputfile.
                 If not specified, filename=found_(date).gpx
/noCoord: If set no coordinates were written to file.
/gcdir gcdirDirectory: Sets gcdir to gcdirDirectory.
                       If not specified, gcdir is searched automatically.
/? /h /help: Shows this help.
noCoord sorgt falls gewünscht dafür dass keine Koordinaten in die GPX-Datei geschrieben werden.
Die Parameter dürfen jetzt auch in beliebiger Reihenfolge und Konstellation gesetzt werden.

Bekanntes Problem: Die Koordinaten werden von Geolog im Minutes-Format gespeichert, im GPX müssen sie allerdings im Degree-Format abgespeichert werden. Dies wird von der FoundGPX.exe automatisch erledigt. Allerdings können durch Rundung minimalst andere Koordinaten entstehen:

Code: Alles auswählen

Vorher:8.7859166666  Nacher:8.7859166666667
oder
Vorher:13.352783333  Nacher:13.3527833333333
Die Abweichungen sind so minimal, dass sie zu vernachlässigen sind.
EDIT: ==>Scheit wohl an meinen Daten zu liegen. Ich hab mir gerade mal eine Orginal GS-GPX angeschaut, die runden genau wie mein Programm auch nach 13 Nachkommastellen.

Wie immer gilt: Ich kann nicht garantieren, dass das Programm immer fehlerfrei arbeitet. Aber wenn ihr einen Bug entdeckt, werde ich versuchen ihn zu fixen.

Viele Grüße
Skywalker90

Edit: Neue Version: Parameter überarbeitet, kleinen Bug gefixt, Ergänzungen im Text
Edit2: Neue Version: Parameter-Bug unter Linux behoben, bei Fehlern bleibt das Fenster jetzt offen
Zuletzt geändert von skywalker90 am Fr 13. Aug 2010, 17:13, insgesamt 2-mal geändert.

Werbung:
Benutzeravatar
MaxED9
Geocacher
Beiträge: 243
Registriert: Di 30. Dez 2008, 12:35
Ingress: Enlightened
Wohnort: 10315 Berlin
Kontaktdaten:

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von MaxED9 » Mi 11. Aug 2010, 22:43

Hallo,

ich nutze zwar kein GSAK, aber die GPX hätte mich mal interessiert.

Bei mir wirds gcdir scheinbar schonmal nicht automatisch gefunden und folgendes ausgegeben:

Code: Alles auswählen

FoundGPX 0.1.0.2 BETA by Skywalker90
----------------------------------------
START
Error: Index was outside the bounds of the array.
Finished...
Wo holt sich denn das Programm die Infos zum Verzeichnis?

Selbst wenn ichs über die Schalter angebe, rennt es nicht, liegt aber vielleicht daran, dass es ein Netzlaufwerk ist. Hoffe das hilft ;)
Bild

skywalker90
Geomaster
Beiträge: 570
Registriert: Do 14. Mai 2009, 17:06

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von skywalker90 » Do 12. Aug 2010, 14:09

Hallo MaxED9,
währe auch ja zu einfach wenn mal was auf Anhieb funktioniert :p
Aber Danke fürs Feedback, ich habe das Programm etwas angepasst.
MaxED9 hat geschrieben:Wo holt sich denn das Programm die Infos zum Verzeichnis?
Es sucht nach der Datei Geolog\profile.txt im Ordner (LocalApplicationData) in der Regel:

Code: Alles auswählen

"C:\Dokumente und Einstellungen\Username\Lokale Einstellungen\Anwendungsdaten\Geolog\profile.txt" 
(Das ganze funktioniert natürlich nur wenn gcLog auf diesem PC installiert ist)
MaxED9 hat geschrieben:Error: Index was outside the bounds of the array.
Hört sich nach einem Problem mit dem Parameter-Array an. Ich muss zugeben, die Implementierung der Parameter war "etwas" unflexibel. :D
==> Ich habe das Parameterparsing neu geschrieben, jetzt sollte es einfach zu bedienen sein und es sollte keine Array-Index-Fehler mehr geben.
MaxED9 hat geschrieben:liegt aber vielleicht daran, dass es ein Netzlaufwerk ist.
Hab hier gerade das Ganze mal im Netzwerk getestet. Funktioniert ohne Probleme. (der Netzlaufwerkpfad für das gcdir-Verzeichniss muss natürlich manuell angegeben werden)

Hoffe das die Anpassung dein Problem lösen sollte.

Grüße
Skywalker90

Benutzeravatar
Schrottie
Geoguru
Beiträge: 3582
Registriert: Di 29. Jul 2008, 15:23
Wohnort: 13595 Spandau
Kontaktdaten:

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von Schrottie » Do 12. Aug 2010, 14:39

In welcher Sprache ist das Programm eigentlich geschrieben? Ist es wie geolog eine Scriptsprache, so das man das Ding auch auf richtigen Betriebssystem laufen lassen kann? Oder führt am DOS-Adventure-Game kein Weg vorbei?
Good Byte,

Schrottie

skywalker90
Geomaster
Beiträge: 570
Registriert: Do 14. Mai 2009, 17:06

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von skywalker90 » Fr 13. Aug 2010, 17:05

Schrottie hat geschrieben:In welcher Sprache ist das Programm eigentlich geschrieben?
Das Programm ist in C#.NET geschrieben. Benötigt also das .NET-Framework (in Vista und Windows7 bereits integriert).

Der Grund warum es "nur" eine Console Application ist, ist einfach: Das Programm braucht nur in Sonderfällen eine Benutzereingabe und erledigt sonst alles automatisch (in der Regel: starten und gut). Außerdem liegt die Arbeitszeit des Programms im unteren Sekundenbereich und dafür eine GUI fand ich überdimensioniert. Die "Technik" dahinter ist die selbe, ob Console oder GUI.
Schrottie hat geschrieben:Ist es wie geolog eine Scriptsprache, so das man das Ding auch auf richtigen Betriebssystem laufen lassen kann? Oder führt am DOS-Adventure-Game kein Weg vorbei?
Es ist demnach ist es kein Skript sondern eine kompiliertes Programm (wenn man es genau nimmt vorkompiliert: CIL).

Was verstehst du unter einem "richtigen Betriebssystem" ?
Falls du damit ein Linux-System gemeint hast, mit Hilfe von Mono laufen viele .NET-Anwendungen unter Linux. Ich habe das Programm gerade unter SUSE Linux getestet: Bis auf einen kleinen Fehler mit den Parametern (habe ich in der neuen Version behoben) funktioniert es einwandfrei.

Das Programm läuft getestet unter
  • Windows XP
  • Windows Vista
  • Windows 7
  • SUSE Linux (mit Mono)
.

Wenn Interesse besteht, kann ich das Programm auch noch um ein paar Optionen erweitern (keine/nur DNFs, nur Funde die neuer als [Datum] sind) und dann währe auch aus meiner Sicht eine GUI sinnvoll.

skywalker90
Geomaster
Beiträge: 570
Registriert: Do 14. Mai 2009, 17:06

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von skywalker90 » Sa 14. Aug 2010, 09:10

Leider darf meinen alten Beitrag nicht mehr editieren.

Neue Version:
  • Neuer Parameter [/gcName name] wird benötigt, wenn das gcdir-Verzeichnis nicht automatisch gefunden wird.
  • Mehr Daten im gpx: Hidden-Date, Type, Container, Difficulty, Terrain, Country, State

Code: Alles auswählen

FoundGPX 0.1.2.2 BETA by Skywalker90
----------------------------------------
Lucas.Projects.foundgpx.exe [/out outputfile] [/noCoord] [/gcdir gcdirDirectory]
 [/gcName name]

/out outputfile: Write result to outputfile.
                 If not specified, filename=found_(date).gpx
/noCoord: If set no coordinates were written to file.
/gcdir gcdirDirectory: Sets gcdir to gcdirDirectory.
                       If not specified, gcdir is searched automatically.
/gcName name: Set the gcName to name.
              If not specified, gcName is searched automatically.
/verbose: Detailed output.
/? /h /help: Shows this help.
Edit: Neu Version: Errorhandling verbessert, Verbose-Parmeter für detaillierteren Log hinzugefügt
Edit2: Neue Version: Bug beim Lesen der Daten-Dateien behoben, kleinere Korrekturen
Edit3: Neue Version: Bug bei Sonderzeichen in den Daten behoben
Zuletzt geändert von skywalker90 am So 15. Aug 2010, 21:38, insgesamt 3-mal geändert.

Benutzeravatar
MaxED9
Geocacher
Beiträge: 243
Registriert: Di 30. Dez 2008, 12:35
Ingress: Enlightened
Wohnort: 10315 Berlin
Kontaktdaten:

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von MaxED9 » Sa 14. Aug 2010, 09:31

hmm, die neuen Versionen fanden zwar nun das Geolog-Verzeichnis automatisch, aber brechen weiterhin mit folgender Meldung ab:

Code: Alles auswählen

Error: Index was outside the bounds of the array.
Bild

skywalker90
Geomaster
Beiträge: 570
Registriert: Do 14. Mai 2009, 17:06

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von skywalker90 » Sa 14. Aug 2010, 15:33

Hallo MaxED9,

leider konnte ich deinen Fehler weder finden noch bei mir hier provozieren.
Allerdings habe ich die Fehlerbehandlung verbessert und einen erweiterten Logmodus hinzugefügt.
(Parmater /verbose setzen)

Ich hoffe das wir dem Fehler so auch die Schliche kommen.
MaxED9 hat geschrieben:hmm, die neuen Versionen fanden zwar nun das Geolog-Verzeichnis automatisch
Könntest du eventuell überprüfen ob in dem Ordner der angezeigt wird auch wirklich die beiden Ordner "found" und "not-found" vorhanden sind. (Nicht dass die Automatik gar den falschen Ordner gefunden hat)

Vielen Dank fürs Testen. :)

Benutzeravatar
MaxED9
Geocacher
Beiträge: 243
Registriert: Di 30. Dez 2008, 12:35
Ingress: Enlightened
Wohnort: 10315 Berlin
Kontaktdaten:

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von MaxED9 » Sa 14. Aug 2010, 16:09

skywalker90 hat geschrieben:Könntest du eventuell überprüfen ob in dem Ordner der angezeigt wird auch wirklich die beiden Ordner "found" und "not-found" vorhanden sind. (Nicht dass die Automatik gar den falschen Ordner gefunden hat)

es findet schon den korrekten Ordner und auch die entsprechenden Unterordner sind vorhanden.

folgendes wird nun angezeigt:

Code: Alles auswählen

Error: Der Index war außerhalb des Arraybereichs.

   bei Lucas.Projects.foundgpx.Program.loadFile(FileInfo file)
   bei Lucas.Projects.foundgpx.Program.loadCache(DirectoryInfo dir)
   bei Lucas.Projects.foundgpx.Program.loadCaches(DirectoryInfo dir)
   bei Lucas.Projects.foundgpx.Program.loadAllCaches(DirectoryInfo dir)
   bei Lucas.Projects.foundgpx.Program.Main(String[] args)

Finished WITH ERROR(S)... (Press any key)
Ich hab ja ne Vermutung, wenn ich das so lese. Lädt das Programm die HTML-Index-Seiten und folgt den Links? Denn das würde bei mir nicht funktionieren.
Bild

skywalker90
Geomaster
Beiträge: 570
Registriert: Do 14. Mai 2009, 17:06

Re: Geolog->GPX (Found-GPX für Nicht-PM)

Beitrag von skywalker90 » So 15. Aug 2010, 14:12

MaxED9 hat geschrieben:   bei Lucas.Projects.foundgpx.Program.loadFile(FileInfo file)
Ich hab mir die Funktion die den Fehler ausgelöst hat nochmal genauer angeschaut. Der Fehler war möglich wenn eine Zeile in den Datendateien nicht in dem Format waren (warum auch immer??) wie ich sie erwartet hab. Wenn das die Fehlerquelle war, sollte es jetzt laufen.
MaxED9 hat geschrieben:Ich hab ja ne Vermutung, wenn ich das so lese. Lädt das Programm die HTML-Index-Seiten und folgt den Links? Denn das würde bei mir nicht funktionieren.
Nicht ganz. Das Programm liest die Datendateien aus in denen geolog sich die Daten für die nächste Verwendung speichert:
In den Ordnern "found" und "not-found" befindet sich für jeden Cache ein Ordner mit den Dateien:
  • cache.txt
  • log.txt
  • note.txt
  • index.html (wird ignoriert)
So in der Richtung sollte der Output aussehen:

Code: Alles auswählen

C:\Users\Lucas>C:\Users\User\Desktop\FoundGPX.exe /gcdir C:\Users\User\Desktop\gcdir /gcName Skywalker90 /verbose

FoundGPX 0.1.2.2 BETA by Skywalker90
----------------------------------------
START
gcDir could not be found automatically
gcDir overrode with: C:\Users\Lucas\Desktop\gcdir
gcName overrode with: Skywalker90
Load Data
 Load DNFs start
    Parsed cache: GCYV42        (34 items)
    [...]
    Parsed cache: GC1996R       (34 items)
 Load DNFs end
 Load Founds start
    Parsed cache: GC1NC69       (32 items)
    [...]
    Parsed cache: GC1AJ3A       (32 items)
 Load Founds end
Prepare Data
 Prepare start
    Prepared cache: GCYV42      (33 nodes)
    [...]
    Prepared cache: GC1AJ3A     (33 nodes)
 Prepare end
Save Data
Finished without errors... (Press any key)
Anmerkung: beim Parsen kann die Anzahl der Items schwanken

Ich hoffe, dass es jetzt auch bei dir funktioniert.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder