GNavigia/Gina
Für Fortgeschrittene
Der Abschnitt «GNavigia für Fortgeschrittene» beschäftigt sich mit folgenden Themen:
- Festlegen neuer Fachbedeutungen in der Datei «GpsCodedValueDefinitions.xml».
- Struktur der GTD-Datei.
Festlegen neuer Fachbedeutungen
Neue Fachbedeutungen werden in der Datei «GpsCodedValueDefinitions.xml» eingetragen, hierzu gibt es nun einen eigenen Abschnitt unter Fachbedeutungen.
Die Ortsbezeichnung wird zurzeit nicht ausgewertet. Sie ist gedacht zur einheitlichen räumlichen Gliederung und sollte sich hinsichtlich der Orte und Städte im Code an den Postleitzahlen orientieren. Allerdings ist der Code kein ganzahliger Wert sondern eine Zeichenkette, sodass für Regionen der Kennung ein Buchstabe vorangestellt ist.
Struktur der GTD-Datei
Die Datendatei, die GNavigia beim Speichern schreibt, besitzt eine wesentlich kompliziertere Struktur als die Datei der Fachbedeutungen. Allerdings müssen Sie diese Struktur dann und nur dann kennen, wenn Sie einen Datentransfer programmieren, wie er zum Beispiel bei der Implementierung einer Datenbankschnittstelle unerlässlich ist. Um die einzelnen Parameter und Werte zu erforschen, empfehle ich Ihnen, GNavigia mit der Kommandozeilenoption
-guidzu starten, damit die Position der GUID in der Datei zum Ausdruck kommt, wie in der Dokumentation der Datenbankschnittstelle beschrieben. Sie werden die GUID brauchen, um die datenbankeigene ID durch das Programm zu schleusen. Bedenken Sie: Wenn Sie eine GUID angeben, wird diese automatisch ausgegeben, wenn Sie die Daten als Datei speichern. Den o. a. Schalter brauchen Sie nur, um die Position der GUID zu erforschen, wenn Sie zu Testzwecken Daten ohne GUID bereithalten. GNavigia selbst käme nicht auf die Idee, eine GUID zu erzeugen oder eine existierende zu überschreiben. Neu erzeugte Elemente erkennen Sie also später daran, dass sie keine GUID besitzen.
Eine Änderungskennung namens «Status» gibt es übrigens auch, sie wird zurzeit aber nicht gepflegt. Wenn Sie ermitteln wollen, ob sich Elemente geändert haben, müssen Sie zurzeit alle Elemente, die wieder gespeichert werden sollen, mit den selbst gemerkten Ausgangsdaten vergleichen.
Grundlegende Struktur ohne eingeschlossene Elemente
Die Datei beginnt mit der XML-Kennung, Version und Kodierung. Der Stammknoten trägt die Bezeichnung «GPSTrackEditor»:
<?xml version="1.0" encoding="ISO-8859-1"?>
<GNavigia application="GNavigia ...">
XML-Elemente, die sich zwischen den Markierungen
<Database>
</Database>
Der Abschnitt Styles trägt die Ausgabe- und Visualisierungseinstellungen. In der Regel ist einem Layout auch ein Schema zugeordnet, doch ist die Zuordnung frei vergebbar. Das Layout entspricht einem Ausgabeziel, also in der aktuellen Implementierung dem Bildschirm und Google EarthTM-KML, weshalb es meist zwei Layoutdefinitionen gibt. Dagegen ist es durchaus denkbar, dass Sie verschiedene Schemadefinitionen angeben, die Sie bei Bedarf einem Layout zuordnen.
<Styles>
<Schema name="Bildschirmdarstellung">
</Schema>
<Schema name="KML-Export">
</Schema>
<Layout name="Bildschirmdarstellung">
</Layout>
<Layout name="KML-Export">
</Layout>
</Styles>
<Mapping>
</Mapping>
<Settings>
<KML-Export>
<Waypoints>
<Tracks>
<Objects>
</Settings>
Die KML-Export Sektion dient der Festlegung des Layouts, das für den Export benutzt wird. Abgelegt wird nur der Name.
</KML-Export>
<wpt id="1" l="7.747704573" b="45.890034987" h="1618.733154">
</wpt>
</Waypoints>
Zwischen Start- und Endtag erscheinen die zugehörigen Trackpunkte
mit
den Eigenschaften ID, Länge, Breite, Höhe, Track-ID, Name,
Datumsstempel und den Angaben, ob selektiert und/oder gelöscht.
<trk id="477" nam="09-APR-06" dtm="2006-04-18T18:47:44Z">
<trkpt id="478" l="7.747743130" b="46.016814709" h="1609.864746">
</trkpt>
</trk>
</Tracks>
<object id="5003" name="Zermatt mit Breuil-Cervinia" exp="1">
<object id="5007" name="Zermatt - Sunnegga" exp="1">
<objex fbg="3210" prio="1" />
<trk id="3268" exp="0" />
</object>
</object>
</Objects>
Das Attrribut «exp» dient allein der Darstellung und besagt, ob der Knoten im Objektbaum geöffnet (aufgeklappt) ist, oder nicht.
Vergessen Sie nicht das schließende Tag des Stammknotens:
</GNavigia>
Eine Beispieldatei mit allen verfügbaren Elementen
Die folgende Beispieldatei enthält alle Elemente, die im Programm zum Einsatz kommen:
<?xml version="1.0" encoding="ISO-8859-1"?><GNavigia application="GNavigia ...">
<Styles>
<encoding text="ISO-8859-1" />
<author text="Thomas Korten" />
<homepage text="https://www.skiraware.de/GPS" />
<Schema name="Bildschirmdarstellung">
<Style name="Skirouten">
<LineWidth value="2" />
<LineColor value="ff00ffff" />
<LineStyle value="DashDotDot" />
<Font name="Microsoft Sans Serif">
<desc family="Microsoft Sans Serif" />
<grad size="10" bold="0" italic="0" />
</Font>
<AreaColor value="00ffffff" />
</Style>
...
</Schema>
<Schema name="KML-Export">
...
</Schema>
<Layout name="Bildschirmdarstellung">
<author text="Thomas Korten" />
<homepage text="https://www.skiraware.de/GPS" />
<headline text="Zermatt" />
<encoding text="ISO-8859-1" />
<majorwponly value="1" />
<schema name="Bildschirmdarstellung" />
<item fbg="3110" style="Skirouten" />
...
</Layout>
<Layout name="KML-Export">
...
<filename name="C:\Dokumente und Einstellungen\...\Output.kml" />
<schema name="KML-Export" />
<item fbg="3258" style="Aufstiegshilfen" />
...
</Layout>
</Styles>
<Mapping>
<scaling scale="0.0502667" />
<center worldY="405573.99" worldX="5095373.20" />
</Mapping>
<Settings>
<display layout="Bildschirmdarstellung" />
<show maskText="1" maskSmooth="1" heights="1" waypoints="1" trackpoints="0" />
<options selection="Add" />
<deleted value="No" />
<background guid="e5ba0208-4452-3664-99a6-503c846ca794" show="1" transparent="0"/>
</Settings>
<KML-Export>
<layout name="KML-Export" />
</KML-Export>
<Waypoints>
<wpt id="1" l="7.747704573" b="45.890034987" h="1618.733154">
<desc nam="007" cmt="007" desc="007" sym="007" />
<stat dtm="" sel="0" del="1" minor="0" />
</wpt>
...
</Waypoints>
<Tracks>
<trk id="477" nam="09-APR-06" dtm="2006-04-18T18:47:44Z">
<trkex fbg="1120" prio="1" />
<twpt start="0" end="0" sel="0" del="0" />
<style visible="0" color="" line="" />
<trkpt id="478" l="7.747743130" b="46.016814709" h="1609.864746">
<tpt trkid="477" dtm="2006-04-09T07:42:31Z" sel="0" del="1" />
<tpn nam="T 478" />
</trkpt>
<trkpt id="479" l="7.747893333" b="46.017222404" h="1628.610840">
<tpt trkid="477" dtm="2006-04-09T07:43:07Z" sel="0" del="1" />
<tpn nam="T 479" />
</trkpt>
...
<trkpt id="856" l="7.753922939" b="46.004948616" h="2215.014893">
<tpt trkid="477" dtm="2006-04-09T13:11:15Z" sel="0" del="1" />
<tpn nam="T 856" />
</trkpt>
</trk>
<trk id="857" nam="Fußweg zur Sunnegga" dtm="2006-04-09T13:11:15Z">
...
</trk>
</Tracks>
<Objects>
<object id="5003" name="Zermatt mit Breuil-Cervinia" exp="1">
<object id="5004" name="Zermatt" exp="1">
<object id="5005" name="Skigebiet" exp="1">
<object id="5006" name="Aufstiegshilfen" exp="1">
<object id="7226" name="Rothorn" exp="0">
<object id="5007" name="Zermatt - Sunnegga" exp="1">
<objex fbg="3210" prio="1" />
<trk id="3268" exp="0" />
<trk id="3271" exp="0" />
<trk id="3273" exp="0" />
</object>
...
</object>
<object id="7228" name="Gornergrat" exp="0">
...
</object>
</object>
<object id="5008" name="Skipisten" exp="1">
...
</object>
</object>
<object id="7033" name="Zermatt an einem Tag / in a day" exp="1">
<object id="6985" name="Alle Abfahrten" exp="0">
<text id="7530" name="Zermatt-Sunnegga"
text="<i>Zermatt-Sunnegga</i>" exp="1" />
<ref id="6998" obj="5018" exp="1" />
<text id="7532" name="Patrullarve-Blauherd"
text="<i>Patrullarve-Blauherd</i>" exp="1" />
<trk id="3296" exp="1" />
...
</object>
</object>
</object>
<object id="7261" name="Breuil-Cervinia" exp="1">
<object id="7263" name="Skigebiet" exp="1">
<object id="7475" name="Aufstiegshilfen" exp="1">
...
</object>
<object id="7474" name="Skipisten" exp="1">
...
</object>
</object>
</object>
<object id="7573" name="Gesamtskigebiet Zermatt/Breuil-Cervinia" exp="1">
<object id="7574" name="Aufstiegshilfen" exp="1">
<ref id="7576" obj="5006" exp="1" />
<ref id="7577" obj="7475" exp="1" />
</object>
<object id="7575" name="Skipisten" exp="1">
<ref id="7578" obj="5008" exp="1" />
<ref id="7579" obj="7474" exp="1" />
</object>
</object>
</object>
</Objects>
</GNavigia>
Kopieren von Layout- und Schemadifinitionen
Es gibt aber noch einen weiteren Grund, warum es nicht schlecht ist, die Datenstruktur zu kennen. Wenn Sie nämlich unter großen Anstrengungen diverse Layoutdefinitionen mittels Dialog erstellt haben, können Sie diese nicht ohne weiteres auf ein neues, bereits initialisiertes Projekt übertragen. In diesem Fall verlassen Sie GNavigia, machen Sie eine Sicherungskopie der Datendatei und fügen die Blöcke der Layout- und Schemadefnitionen von Hand ein. Die Blöcke befinden sich umschlossen von dem Element
<Styles></Styles>,
das Sie weit vorne am Anfang der Datei finden und das Sie als Ganzes übertragen können. Starten Sie danach das Programm neu und vergewissern Sie sich, dass die Datei korrekt geladen wurde und die Layout- und Schemadefinitionen korrekt in den einschlägigen Dialogen erscheinen!