GNavigia/Gina

Für Fort­ge­schrit­te­ne

Der Ab­schnitt «GNavigia für Fort­ge­schrit­te­ne» be­schäf­tigt sich mit fol­gen­den The­men:

Fest­le­gen neu­er Fach­be­deu­tun­gen

Neue Fach­be­deu­tun­gen wer­den in der Da­tei «GpsCo­de­dVa­lueDe­fi­ni­ti­ons.xml» ein­ge­tra­gen, hier­zu gibt es nun ei­nen ei­ge­nen Ab­schnitt un­ter Fach­be­deu­tun­gen.
*
Die Orts­be­zeich­nung wird von GNavigia zur­zeit nicht aus­ge­wer­tet. Sie ist ge­dacht zur ein­heit­li­chen räum­li­chen Glie­de­rung und soll­te sich hin­sicht­lich der Or­te und Städ­te im Co­de an den Post­leit­zah­len ori­en­tie­ren. Al­ler­dings ist der Co­de kein gan­zah­li­ger Wert son­dern ei­ne Zei­chen­ket­te, so­dass für Re­gio­nen der Ken­nung ein Buch­sta­be vor­an­ge­stellt ist.

Struk­tur der GTD-Datei

Die Da­ten­da­tei, die GNavigia beim Spei­chern schreibt, be­sitzt ei­ne we­sent­lich kom­pli­zier­te­re Struk­tur als die Da­tei der Fach­be­deu­tun­gen. Al­ler­dings müs­sen Sie die­se Struk­tur dann und nur dann ken­nen, wenn Sie ei­nen Da­ten­trans­fer pro­gram­mie­ren, wie er zum Bei­spiel bei der Im­ple­men­tie­rung ei­ner Da­ten­bank­schnitt­stel­le un­er­läss­lich ist. Um die ein­zel­nen Pa­ra­me­ter und Wer­te zu er­for­schen, emp­feh­le ich Ih­nen, GNavigia mit der Kom­man­do­zei­len­op­ti­on
 -guid
zu star­ten, da­mit die Po­si­ti­on der GUID in der Da­tei zum Aus­druck kommt, wie in der Do­ku­men­ta­ti­on der Da­ten­bank­schnitt­stel­le be­schrie­ben. Sie wer­den die GUID brau­chen, um die da­ten­bank­ei­ge­ne ID durch das Pro­gramm zu schleu­sen. Be­den­ken Sie: Wenn Sie ei­ne GUID an­ge­ben, wird die­se au­to­ma­tisch aus­ge­ge­ben, wenn Sie die Da­ten als Da­tei spei­chern. Den o. a. Schal­ter brau­chen Sie nur, um die Po­si­ti­on der GUID zu er­for­schen, wenn Sie zu Test­zwe­cken Da­ten oh­ne GUID be­reit­hal­ten. GNavigia selbst käme nicht auf die Idee, ei­ne GUID zu er­zeu­gen oder ei­ne exis­tie­ren­de zu über­schrei­ben. Neu er­zeug­te Ele­men­te er­ken­nen Sie al­so spä­ter dar­an, dass sie kei­ne GUID be­sit­zen.

Ei­ne Än­de­rungs­ken­nung na­mens «Sta­tus» gibt es üb­ri­gens auch, sie wird zur­zeit aber nicht ge­pflegt. Wenn Sie er­mit­teln wol­len, ob sich Ele­men­te ge­än­dert ha­ben, müs­sen Sie zur­zeit al­le Ele­men­te, die wie­der ge­spei­chert wer­den sol­len, mit den selbst ge­merk­ten Aus­gangs­da­ten ver­glei­chen.

Grund­le­gen­de Struk­tur oh­ne ein­ge­schlos­se­ne Ele­men­te

Die Da­tei be­ginnt mit der XML-Ken­nung, Ver­sion und Ko­die­rung. Der Stamm­kno­ten trägt die Be­zeich­nung «GPSTrackE­di­tor»:
<?xml ver­sion="1.0" en­co­ding="ISO-8859-1"?>
<GNavigia ap­p­li­ca­ti­on="GNavigia ...">

XML-Ele­men­te, die sich zwi­schen den Mar­kie­run­gen
 <Da­ta­ba­se>
</Da­ta­ba­se>
be­fin­den, wer­den vom Pro­gramm als Gan­zes ge­le­sen, aber nicht in­ter­pre­tiert. Beim Aus­ge­ben der Da­ten als Da­tei oder beim Zu­rück­schrei­ben in die Da­ten­bank wird die­ses Tag wie­der aus­ge­ge­ben.
Der Ab­schnitt Sty­les trägt die Aus­gabe- und Vi­sua­li­sie­rungs­ein­stel­lun­gen. In der Re­gel ist ei­nem Lay­out auch ein Sche­ma zu­ge­ord­net, doch ist die Zu­ord­nung frei ver­geb­bar. Das Lay­out ent­spricht ei­nem Aus­ga­be­ziel, al­so in der ak­tu­el­len Im­ple­men­tie­rung dem Bild­schirm und Goo­gle Earth TM-KML, wes­halb es meist zwei Lay­out­de­fi­ni­tio­nen gibt. Da­ge­gen ist es durch­aus denk­bar, dass Sie ver­schie­de­ne Sche­ma­de­fi­ni­tio­nen an­ge­ben, die Sie bei Be­darf ei­nem Lay­out zu­ord­nen.
 <Sty­les>
<Sche­ma na­me="Bild­schirm­dar­stel­lung">
</Sche­ma>
<Sche­ma na­me="KML-Export">
</Sche­ma>
<Lay­out na­me="Bild­schirm­dar­stel­lung">
</Lay­out>
<Lay­out na­me="KML-Export">
</Lay­out>
</Sty­les>
Wenn Sie ei­ne GTD-Daten­struk­tur schrei­ben, las­sen Sie das nach­fol­gen­de Ele­ment aus. Es wird beim La­den der Da­ten be­rech­net, wo­durch si­cher­ge­stellt ist, dass al­le ver­füg­ba­ren Da­ten sicht­bar sind:
 <Map­ping>
</Map­ping>
Der Be­reich der Set­tings be­schreibt die Dis­playpa­ra­me­ter, ins­be­son­de­re das zu­ge­ord­ne­te Lay­out, die Mas­kie­rung von Text, auch als «Ha­lo» be­zeich­net, die An­zei­ge­op­tio­nen für Weg- und Track­punk­te und die Dar­stel­lung der Hö­hen­an­ga­ben, den Se­lek­ti­ons­mo­dus, so­wie An­ga­ben zum Hin­ter­grund­ser­ver so­wie zur An­zei­ge ge­lösch­ter Da­ten.
 <Set­tings>
</Set­tings>
Die KML-Export Sek­ti­on dient der Fest­le­gung des Lay­outs, das für den Ex­port be­nutzt wird. Ab­ge­legt wird nur der Na­me.
 <KML-Export>
</KML-Export>
Lis­te der Weg­punk­te mit den Ei­gen­schaf­ten ID, Län­ge, Brei­te, Hö­he, Na­me, Kom­men­tar, Be­schrei­bung und Sym­bol­ken­nung, so­wie Lis­te der Fach­be­deu­tun­gen und Da­tums­stem­pel (meist leer) und den An­ga­ben, ob se­lek­tiert, ge­löscht und ob Haupt- oder Ne­ben­weg­punkt:
 <Way­po­ints>
<wpt id="1" l="7.747704573" b="45.890034987" h="1618.733154">
</wpt>
</Way­po­ints>
Lis­te der Tracks mit den Ei­gen­schaf­ten ID, Na­me, Da­tums­stem­pel, Lis­te der Fach­be­deu­tun­gen, Re­fe­ren­zen der Weg­punk­te am An­fang und En­de (zur­zeit nicht aus­ge­wer­tet), den An­ga­ben, ob se­lek­tiert, ge­löscht, sicht­bar und den zur­zeit nicht aus­ge­wer­te­ten und durch das Lay­out ab­ge­deck­ten Ei­gen­schaf­ten Far­be und Li­ni­en­typ.
Zwi­schen Start- und End­tag er­schei­nen die zu­ge­hö­ri­gen Track­punk­te mit den Ei­gen­schaf­ten ID, Län­ge, Brei­te, Hö­he, Track-ID, Na­me, Da­tums­stem­pel und den An­ga­ben, ob se­lek­tiert und/oder ge­löscht.
 <Tracks>
<trk id="477" nam="09-APR-06" dtm="2006-04-18T18:47:44Z">
<trk­pt id="478" l="7.747743130" b="46.016814709" h="1609.864746">
</trk­pt>
</trk>
</Tracks>
Das Er­zeu­gen der Ob­jekt­struk­tur dürf­te Ih­nen die meis­te Ar­beit ma­chen, was Sie folg­lich ver­mei­den soll­ten. Le­gen Sie Ob­jek­te da­her prak­tisch nur über GNavigia an. Trotz­dem soll­ten Sie ei­ni­ge De­tails wis­sen.
 <Ob­jects>
<ob­ject id="5003" na­me="Zer­matt mit Breuil-Cer­vi­nia" exp="1">
<ob­ject id="5007" na­me="Zer­matt - Sun­neg­ga" exp="1">
<ob­jex fbg="3210" prio="1" />
<trk id="3268" exp="0" />
</ob­ject>

</ob­ject>
</Ob­jects>
Ob­jek­te die­nen der Zu­sam­men­fas­sung von Tracks und an­de­ren Ob­jek­ten un­ter ei­nem ge­mein­sa­men Na­men und der Sum­men­bil­dung der Ein­zel­län­gen. Es gel­ten we­ni­ge, aber stren­ge Re­geln. Ob­jek­te kön­nen sich aus Ob­jek­ten (O) zu­sam­men­set­zen und aus Tracks, Text­ob­jek­ten oder Ob­jek­tre­fe­ren­zen (TTO), aber nicht gleich­zei­tig auf der­sel­ben Hier­ar­chie­stu­fe, mit an­de­ren Wor­ten, hat ein Ob­jekt be­reits ein Ele­ment aus der TTO-Grup­pe zu­ge­ord­net be­kom­men, so kann ihm kein Ob­jekt zu­ge­ord­net wer­den und an­ders­her­um. Ob­jek­tre­fe­ren­zen dür­fen kei­ne Re­kur­si­on er­zeu­gen, al­so nicht auf Ob­jek­te ver­wei­sen, die di­rek­te Vor­fah­ren sind! GNavigia prüft die­se Be­din­gun­gen im Pro­gram­ma­b­lauf, ist aber bei fremd­be­reit­ge­stell­ten Ob­jek­ten zur­zeit macht­los. Beim La­den der Da­tei dürf­te es da­her ei­nen «stack over­flow» (neu­deutsch: «Sta­pel­über­lauf») ge­ben.
Das At­trri­but «exp» dient al­lein der Dar­stel­lung und be­sagt, ob der Kno­ten im Ob­jekt­baum ge­öff­net (auf­ge­klappt) ist, oder nicht.

Ver­ges­sen Sie nicht das schlie­ßen­de Tag des Stamm­kno­tens:
</GNavigia>

Ei­ne Bei­spiel­da­tei mit al­len ver­füg­ba­ren Ele­men­ten

Die fol­gen­de Bei­spiel­da­tei ent­hält al­le Ele­men­te, die im Pro­gramm zum Ein­satz kom­men:
<?xml version="1.0" encoding="ISO-8859-1"?>
<GNavigia application="GNavigia ...">
<Styles>
<encoding text="ISO-8859-1" />
<author text="Thomas Korten" />
<homepage text="http://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="http://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>

Ko­pie­ren von Lay­out- und Sche­ma­di­fi­ni­tio­nen

Es gibt aber noch ei­nen wei­te­ren Grund, warum es nicht schlecht ist, die Da­ten­struk­tur zu ken­nen. Wenn Sie näm­lich un­ter gro­ßen An­stren­gun­gen di­ver­se Lay­out­de­fi­ni­tio­nen mit­tels Dia­log er­stellt ha­ben, kön­nen Sie die­se nicht oh­ne wei­te­res auf ein neu­es, be­reits in­itia­li­sier­tes Pro­jekt über­tra­gen. In die­sem Fall ver­las­sen Sie GNavigia, ma­chen Sie ei­ne Si­che­rungs­ko­pie der Da­ten­da­tei und fü­gen die Blö­cke der Lay­out- und Sche­ma­def­ni­tio­nen von Hand ein. Die Blö­cke be­fin­den sich um­schlos­sen von dem Ele­ment
  <Sty­les></Sty­les>, das Sie weit vor­ne am An­fang der Da­tei fin­den und das Sie als Gan­zes über­tra­gen kön­nen. Star­ten Sie da­nach das Pro­gramm neu und ver­ge­wis­sern Sie sich, dass die Da­tei kor­rekt ge­la­den wur­de und die Lay­out- und Sche­ma­de­fi­ni­tio­nen kor­rekt in den ein­schlä­gi­gen Dia­lo­gen er­schei­nen!