AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

.GPX datei auslesen

Ein Thema von BBoy · begonnen am 22. Mai 2011 · letzter Beitrag vom 24. Mai 2011
Antwort Antwort
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

.GPX datei auslesen

  Alt 22. Mai 2011, 11:27
Ich möchte eine .gpx datei auslesen und die Werte in Editfelder oder ähnliches eintragen oder vielleicht sogar in eine Datenbank übertragen.
eine .gpx Datei ist eine XML datei, hat aber spezielle werte wie <wpt> usw. Außerdem sind meine XML Kenntnisse nahezu null
Daher such eich nach einer sehr einfachen möglichkeit mein vorhaben umzusetzen. Vielleicht gibt es eine fertige klasse für GPX oder eine komponente mit der es sogar ich hin bekommen könnte

Das ganze hat etwas mit Geocaching zu tun. Da kann man bei der Internetseite (Groundspeak) .gpx dateien herunterladen für eine Tour. Und um eben die Tour besser planen zu können möchte ich ein programm schreiben und dessen grundlage ist eben erstmal der import der gpx datei um an die nötigen daten zu kommen. Und später dann auch der export in eine gpx datei um diese dann an das GPS-Gerät zu übertragen.

habe es mal mit Easyxmlscanner versucht, aber da komme ich an so einträge wie:
<bounds minlat="49.615" minlon="8.320833" maxlat="49.65965" maxlon="8.384933" />
<wpt lat="49.64075" lon="8.363">
nicht ran. Komischerweise werden diese ignoriert.


Wäre nett wenn jemand helfen könnte. danke.

Hier noch ein auszug aus einer Gpx datei:
Code:
<?xml version="1.0" encoding="utf-8"?>
<gpx xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" creator="Groundspeak Pocket Query" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.groundspeak.com/cache/1/0/1 http://www.groundspeak.com/cache/1/0/1/cache.xsd" xmlns="http://www.topografix.com/GPX/1/0">
  <name>Worms</name>
  <desc>Geocache file generated by Groundspeak</desc>
  <author>Groundspeak</author>
  <email>contact@groundspeak.com</email>
  <time>2011-05-19T07:06:40.9618119Z</time>
  <keywords>cache, geocache, groundspeak</keywords>
  <bounds minlat="49.615" minlon="8.320833" maxlat="49.65965" maxlon="8.384933" />
  <wpt lat="49.64075" lon="8.363">
    <time>2007-05-07T07:00:00Z</time>
    <name>GC12R2Z</name>
    <desc>Prinz-Carl-Anlage by Whitman, Multi-cache (2/1.5)</desc>
    <url>http://www.geocaching.com/seek/cache_details.aspx?guid=6cb5a6eb-e7dc-4b5d-a388-729d9da1ad7f</url>
    <urlname>Prinz-Carl-Anlage</urlname>
    <sym>Geocache</sym>
    <type>Geocache|Multi-cache</type>
    <groundspeak:cache id="595139" available="True" archived="False" xmlns:groundspeak="http://www.groundspeak.com/cache/1/0/1">
      <groundspeak:name>Prinz-Carl-Anlage</groundspeak:name>
      <groundspeak:placed_by>Whitman</groundspeak:placed_by>
      <groundspeak:owner id="1078871">Whitman</groundspeak:owner>
      <groundspeak:type>Multi-cache</groundspeak:type>
      <groundspeak:container>Regular</groundspeak:container>
      <groundspeak:attributes>
        <groundspeak:attribute id="42" inc="1">Needs maintenance</groundspeak:attribute>
        <groundspeak:attribute id="41" inc="1">Stroller accessible</groundspeak:attribute>
        <groundspeak:attribute id="39" inc="1">Thorns</groundspeak:attribute>
        <groundspeak:attribute id="13" inc="1">Available at all times</groundspeak:attribute>
        <groundspeak:attribute id="33" inc="1">Motorcycles</groundspeak:attribute>
        <groundspeak:attribute id="32" inc="1">Bicycles</groundspeak:attribute>
        <groundspeak:attribute id="7" inc="1">Takes less than an hour</groundspeak:attribute>
        <groundspeak:attribute id="29" inc="1">Telephone nearby</groundspeak:attribute>
        <groundspeak:attribute id="27" inc="1">Drinking water nearby</groundspeak:attribute>
        <groundspeak:attribute id="25" inc="1">Parking available</groundspeak:attribute>
        <groundspeak:attribute id="1" inc="1">Dogs</groundspeak:attribute>
      </groundspeak:attributes>
      <groundspeak:difficulty>2</groundspeak:difficulty>
      <groundspeak:terrain>1.5</groundspeak:terrain>
      <groundspeak:country>Germany</groundspeak:country>
      <groundspeak:state>Rheinland-Pfalz</groundspeak:state>
      <groundspeak:short_description html="False">Kleiner Multicache in der Prinz-Carl-Anlage in Worms - Zollstock mitbringen!!!</groundspeak:short_description>
      <groundspeak:long_description html="False">WICHTIG: Zollstock mitnehmen!!!
(Ich hoffe, dass ich alles richtig berechnet habe - dies ist mein erster Cach, den ich versteckt habe!)

An den Startkoordinaten angekommen stehen vier silber-metallische Hausnummern bzw. Firmenschilder.
Notiere dir alle Hausnummern (am besten auf einem Zettel in einer Zeile, also nebeneinander) im Uhrzeigersinn beginnend bei Hausnummer 42. Insgesamt sind es fünf Hausnummern.

Um zu den nächsten Koordinaten zu gelangen musst du zwei Rechenrätsel lösen:

Rätsel A: (Du hast die Nummern am besten in einer Zeile auf einem Zettel aufgeschrieben) Addiere die dritte und vierte Hausnummer. Vom Ergebnis ziehst du die erste Hausnummer ab. Das Endergebnis drehst du um (also Zahlendreher).

Rätsel B: Addiere die zweite und dritte Hausnummer.

Nächste Location:    N49 38.(445+A) E008 21.(780-B)


Stage 2

An den Koordinaten angekommen zähle die dort stehenden Schranken sowie die Anzahl der Buchstaben des Wortes, dass auf der grauen Wand direkt neben den Schranken steht.

Das dort stehende Wort rechnest du nun in die jeweiligen Zahlen des Alphabets um (also A=1, B=2, C=3 etc.).

Rätsel C: Rechne die Zahlen des zweiten, dritten, sechsten, siebten und achten Buchstaben des Wortes zusammen. Nun ziehe vom Ergebnis die Anzahl der Schranken ab.

Rätsel D: Ziehe von der Zahl des siebten Buchstabens die Zahl des fünften Buchstabens ab. Das Ergebnis multiplizierst du mit der Zahl des sechsten Buchstabens.

Nächste Location:   N49 38.(455-Rätsel C) E008 21.(780-Rätsel D)


Stage 3

An der Location angekommen steht am Wegrand ein hüfthoher Stein.
Vermesse den Stein in Höhe und Breite. Dabei wird in 5cm Schritten gemessen.

Rätsel E: Multipliziere die Breite mit 18.

Rätsel F: Das Ergebnis von Rätsel E + Höhe + Breite + Buchstabe L (der wievielte Buchstabe im Alphabet ist das?)

Finale Location: N49   38.Ergebnis Rätsel E / E008 21.Ergebnis Rätsel F

Suche an den Koordinaten nun den Cach!

Additional Waypoints
</groundspeak:long_description>
      <groundspeak:encoded_hints>
      </groundspeak:encoded_hints>
      <groundspeak:logs>
        <groundspeak:log id="159979461">
          <groundspeak:date>2011-05-07T19:00:00Z</groundspeak:date>
          <groundspeak:type>Found it</groundspeak:type>
          <groundspeak:finder id="3938801">ROTWILD R.E1</groundspeak:finder>
          <groundspeak:text encoded="False">Schöne kleine Runde durch die Anlage.

T4TC

Team ROTWILD R.E1

#563</groundspeak:text>
        </groundspeak:log>
        <groundspeak:log id="159785118">
          <groundspeak:date>2011-05-07T19:00:00Z</groundspeak:date>
          <groundspeak:type>Found it</groundspeak:type>
          <groundspeak:finder id="2956382">Trudeuskölle</groundspeak:finder>
          <groundspeak:text encoded="False">Auf dem Weg der Lösung konnten wir leckeres Eis schlecken und konnten die Aufgaben alle gut meistern.
Gut gefunden.DfdC
Gruß trudeuskölle</groundspeak:text>
        </groundspeak:log>
        <groundspeak:log id="157313539">
          <groundspeak:date>2011-04-24T19:00:00Z</groundspeak:date>
          <groundspeak:type>Found it</groundspeak:type>
          <groundspeak:finder id="3272050">Team Find nix</groundspeak:finder>
          <groundspeak:text encoded="False">Heute führte uns dieser Multi quer durch die Prinz-Carl-Anlage. Beim Final muss man etwas aufpassen, da es dort sehr dornig ist.

TFTC
Team Find nix</groundspeak:text>
        </groundspeak:log>
        <groundspeak:log id="151185863">
          <groundspeak:date>2011-03-25T19:00:00Z</groundspeak:date>
          <groundspeak:type>Found it</groundspeak:type>
          <groundspeak:finder id="1962888">gigi-mo</groundspeak:finder>
          <groundspeak:text encoded="False">Auch ohne Zollstock, aber mit kariertem Papier die Aufgabe lösen können. Ich hatte hier eine Tagung und so konnte ich auch in Worms eine Cachemarke setzen.</groundspeak:text>
        </groundspeak:log>
        <groundspeak:log id="150333382">
          <groundspeak:date>2011-03-21T19:00:00Z</groundspeak:date>
          <groundspeak:type>Found it</groundspeak:type>
          <groundspeak:finder id="4297883">fabi1402</groundspeak:finder>
          <groundspeak:text encoded="False">Hat Spaß gemacht,nach 4mal nachrechnen endlich gefunden

lg fabi1402[:)]</groundspeak:text>
        </groundspeak:log>
      </groundspeak:logs>
      <groundspeak:travelbugs />
    </groundspeak:cache>
  </wpt>
  <wpt lat="49.639167" lon="8.368167">
    <time>2011-01-07T08:00:00Z</time>
    <name>GC2M3NP</name>
    <desc>Wormser Portale #2 Liebfrauen (reloaded) by Bizzler, Multi-cache (2/1)</desc>
    <url>http://www.geocaching.com/seek/cache_details.aspx?guid=1bef3da6-af70-4977-8703-464ee9765161</url>
    <urlname>Wormser Portale #2 Liebfrauen (reloaded)</urlname>
    <sym>Geocache</sym>

Geändert von BBoy (22. Mai 2011 um 11:35 Uhr)
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: .GPX datei auslesen

  Alt 22. Mai 2011, 11:46
Hast Du mal die Suche im Forum benutzt 'xml parser'?
Den ohne sowas, ist es Aufwendig es selbst zu machen!

Gruss alfold
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: .GPX datei auslesen

  Alt 22. Mai 2011, 12:51
Weiß ja nicht welche xml Parser du probiert hast(bis auf den ein genannten), aber hier ist mal einer:

http://www.muetze1.de/?page_id=31ja
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: .GPX datei auslesen

  Alt 22. Mai 2011, 13:15
GPX-Editor mit Delphi 7 Sourcen:
http://www.knackes.com/blog/2008/11/...x-editor-1070/
Markus Kinzler
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: .GPX datei auslesen

  Alt 24. Mai 2011, 12:05
Die source davon lässt sich unter D2009 nicht kompilieren da einige benötigte Bibliotheken zu alt sind. Ich will ja auch was eigenes machen.

Um die Daten zu importieren sieht mein Code nun so aus (ist noch in der Testphase):
Code:
procedure TForm2.Button3Click(Sender: TObject);
var
i : Integer;
wpt1_node : Txmlnode;
gc_node  : Txmlnode;
cacheGC: String;
CacheTime : String;
CacheDesc : String;
cacheUrl : String;
CacheUrln : String;
CacheSym : String;
CacheType : String;
CacheId  : String;
CacheAvail: String;
CacheArch : String;
CacheXMLNS: String;
GSName   : String;
begin
  Memo1.Lines.Clear;
  ADoc := TNativeXml.Create(self);
  ADoc.LoadFromFile('1.gpx');

wpt1_node := adoc.Root.FindNode('wpt');

cacheGC  := wpt1_node.FindNode('name').Value;
CacheTime := wpt1_node.FindNode('time').Value;
CacheDesc := wpt1_node.FindNode('desc').Value;
CacheUrl := wpt1_node.FindNode('url').Value;
CacheUrln := wpt1_node.FindNode('urlname').Value;
CacheSym := wpt1_node.FindNode('sym').Value;
CacheType := wpt1_node.FindNode('type').Value;

gc_node := wpt1_node.FindNode('groundspeak:cache');

CacheId  := gc_node.Attributes[0].Value;
CacheAvail:= gc_node.Attributes[1].Value;
CacheArch := gc_node.Attributes[2].Value;
CacheXMLNS:= gc_node.Attributes[3].Value;

GSName   := gc_node.FindNode('groundspeak:name').Value;

end;

Ist es so ok oder gibt es bessere Möglichkeiten?

Dann noch eine andere Frage für später wenn ich die Daten in eine Datenbank speichern möchte. Und zwar sind in der XML Datei immer verschieden viele Einträge <wpt>, es könnten bis zu 30 oder theoretisch sogar mehr sein. Nun frage ich mich wie ich so etwas in eine DB bringe. Im Code würde ich das mit einem dynamischen Array lösen, aber wie geht das mit einer Datenbank??

Geändert von BBoy (24. Mai 2011 um 12:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz