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 ver­sion="1.0" en­co­ding="ISO-8859-1"?>
<GNavigia ap­p­li­ca­ti­on="GNavigia ...">
<Sty­les>
<en­co­ding text="ISO-8859-1" />
<au­t­hor text="Tho­mas Kor­ten" />
<ho­me­pa­ge text="http://www.ski­ra­wa­re.de/GPS" />
<Sche­ma na­me="Bild­schirm­dar­stel­lung">
<Sty­le na­me="Ski­rou­ten">
<Li­neWidth va­lue="2" />
<Li­neCo­lor va­lue="ff00ffff" />
<Li­neS­ty­le va­lue="Das­hDotDot" />
<Font na­me="Mi­cro­soft Sans Se­rif">
<de­sc fa­mi­ly="Mi­cro­soft Sans Se­rif" />
<grad si­ze="10" bold="0" ita­lic="0" />
</Font>
<AreaCo­lor va­lue="00ffffff" />
</Sty­le>
...
</Sche­ma>
<Sche­ma na­me="KML-Export">
...
</Sche­ma>
<Lay­out na­me="Bild­schirm­dar­stel­lung">
<au­t­hor text="Tho­mas Kor­ten" />
<ho­me­pa­ge text="http://www.ski­ra­wa­re.de/GPS" />
<head­li­ne text="Zer­matt" />
<en­co­ding text="ISO-8859-1" />
<ma­jor­w­pon­ly va­lue="1" />
<sche­ma na­me="Bild­schirm­dar­stel­lung" />
<item fbg="3110" sty­le="Ski­rou­ten" />
...
</Lay­out>
<Lay­out na­me="KML-Export">
...
<fi­lena­me na­me="C:\Do­ku­men­te und Ein­stel­lun­gen\...\Out­put.kml" />
<sche­ma na­me="KML-Export" />
<item fbg="3258" sty­le="Auf­stiegs­hil­fen" />
...
</Lay­out>
</Sty­les>
<Map­ping>
<sca­ling sca­le="0.0502667" />
<cen­ter worldY="405573.99" worldX="5095373.20" />
</Map­ping>
<Set­tings>
<dis­play lay­out="Bild­schirm­dar­stel­lung" />
<show mas­kText="1" mas­kS­mooth="1" heights="1" way­po­ints="1" track­points="0" />
<op­ti­ons se­lec­ti­on="Add" />
<de­le­ted va­lue="No" />
<back­ground guid="e5­ba0208-4452-3664-99a6-503c846­ca794" show="1" trans­pa­rent="0"/>
</Set­tings>
<KML-Export>
<lay­out na­me="KML-Export" />
</KML-Export>
<Way­po­ints>
<wpt id="1" l="7.747704573" b="45.890034987" h="1618.733154">
<de­sc nam="007" cmt="007" de­sc="007" sym="007" />
<stat dtm="" sel="0" del="1" mi­nor="0" />
</wpt>
...
</Way­po­ints>
<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" />
<sty­le vi­si­ble="0" co­lor="" li­ne="" />
<trk­pt 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" />
</trk­pt>
<trk­pt 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" />
</trk­pt>
...
<trk­pt 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" />
</trk­pt>
</trk>
<trk id="857" nam="Fuß­weg zur Sun­neg­ga" dtm="2006-04-09T13:11:15Z">
...
</trk>
</Tracks>
<Ob­jects>
<ob­ject id="5003" na­me="Zer­matt mit Breuil-Cer­vi­nia" exp="1">
<ob­ject id="5004" na­me="Zer­matt" exp="1">
<ob­ject id="5005" na­me="Ski­ge­biet" exp="1">
<ob­ject id="5006" na­me="Auf­stiegs­hil­fen" exp="1">
<ob­ject id="7226" na­me="Ro­t­horn" exp="0">
<ob­ject id="5007" na­me="Zer­matt - Sun­neg­ga" exp="1">
<ob­jex fbg="3210" prio="1" />
<trk id="3268" exp="0" />
<trk id="3271" exp="0" />
<trk id="3273" exp="0" />
</ob­ject>
...
</ob­ject>
<ob­ject id="7228" na­me="Gor­ner­grat" exp="0">
...
</ob­ject>
</ob­ject>
<ob­ject id="5008" na­me="Ski­pis­ten" exp="1">
...
</ob­ject>
</ob­ject>
<ob­ject id="7033" na­me="Zer­matt an ei­nem Tag / in a day" exp="1">
<ob­ject id="6985" na­me="Al­le Ab­fahr­ten" exp="0">
<text id="7530" na­me="Zer­matt-Sun­neg­ga"
text="<i>Zer­matt-Sun­neg­ga</i>" exp="1" />
<ref id="6998" obj="5018" exp="1" />
<text id="7532" na­me="Pat­rul­larve-Blau­herd"
text="<i>Pat­rul­larve-Blau­herd</i>" exp="1" />
<trk id="3296" exp="1" />
...
</ob­ject>
</ob­ject>
</ob­ject>
<ob­ject id="7261" na­me="Breuil-Cer­vi­nia" exp="1">
<ob­ject id="7263" na­me="Ski­ge­biet" exp="1">
<ob­ject id="7475" na­me="Auf­stiegs­hil­fen" exp="1">
...
</ob­ject>
<ob­ject id="7474" na­me="Ski­pis­ten" exp="1">
...
</ob­ject>
</ob­ject>
</ob­ject>
<ob­ject id="7573" na­me="Ge­samt­ski­ge­biet Zer­matt/Breuil-Cer­vi­nia" exp="1">
<ob­ject id="7574" na­me="Auf­stiegs­hil­fen" exp="1">
<ref id="7576" obj="5006" exp="1" />
<ref id="7577" obj="7475" exp="1" />
</ob­ject>
<ob­ject id="7575" na­me="Ski­pis­ten" exp="1">
<ref id="7578" obj="5008" exp="1" />
<ref id="7579" obj="7474" exp="1" />
</ob­ject>
</ob­ject>
</ob­ject>
</Ob­jects>
</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!