Diplomarbeit

Transcrição

Diplomarbeit
Diplomarbeit
Umsetzung von Informationen zu Einschränkungen für
Großfahrzeuge und den Schwerlastgüterverkehr auf ein
routingfähiges Straßennetz
von
Daniela Vekonj
in Zusammenarbeit mit Falk MarcoPolo Interactive GmbH, Ostfildern
- Tochterunternehmen der Mair-Gruppe, Ostfildern Prüfer: Prof. Dr. Peter Freckmann
- Januar 2004 -
Fachbereich Geoinformationswesen
Studiengang Kartographie und Geomatik
Studienschwerpunkt Geoinformatik
Inhaltsverzeichnis
Inhaltsverzeichnis
Abbildungsverzeichnis ................................................................................... III
Tabellenverzeichnis....................................................................................... III
1.
Zielsetzung .............................................................................................1
2.
Referenzierungsmethoden ......................................................................2
2.1
2.2
2.3
2.4
3.
Allgemeines............................................................................................2
Direkte Referenzierungsmethode...............................................................2
Indirekte Referenzierungsmethode............................................................3
Referenzierung im Projekt ........................................................................3
Dokumentation .......................................................................................5
3.1. Allgemein...............................................................................................5
3.2. UseCases ...............................................................................................5
3.2.1.
3.2.2.
3.2.3.
3.2.4.
3.2.5.
3.2.6.
3.2.7.
Mögliche Aktoren ................................................................................ 5
UseCase „Transportplanung “ ................................................................ 6
UseCase „Änderung der Planung wegen Verkehrslage“ ................................ 7
UseCase “Ausgabe von POIs (Points Of Interest)“....................................... 9
UseCase „Anlegen eines Fahrzeugprofils“.................................................. 9
UseCase „Bearbeiten eines Fahrzeugprofils“ ............................................ 10
UseCase „Löschen eines Fahrzeugprofils“ ............................................... 11
3.3.1.
3.3.2.
3.3.3
Allgemeines ..................................................................................... 12
Symbolbewertung ............................................................................. 12
Ergebnis der Symbolbewertung ............................................................ 18
3.3. Legendenauswertung............................................................................. 12
3.4. Datenfelder .......................................................................................... 21
3.4.1.
3.4.2.
Allgemeines ..................................................................................... 21
Datenfelderdefinition ......................................................................... 21
3.5.1.
3.5.2.
Überblick ........................................................................................ 24
Rascon ........................................................................................... 25
3.5. Konzept ............................................................................................... 24
3.5.2.1.
3.5.2.2.
Was ist Rascon? ...............................................................................................25
Umsetzung ......................................................................................................26
3.5.3.1.
3.5.3.2.
3.5.3.3.
3.5.3.4.
3.5.3.5.
Was ist ArcView ...............................................................................................28
Was sind Shapes? ............................................................................................28
Konzept ...........................................................................................................29
Umsetzung ......................................................................................................31
Ablaufschema ..................................................................................................41
3.5.4.1.
3.5.4.2.
3.5.4.3.
3.5.4.4.
3.5.4.5.
Was ist MS Access? ..........................................................................................42
Was sind Abfragen ...........................................................................................42
Was sind Module ..............................................................................................43
Konzept ...........................................................................................................43
Umsetzung ......................................................................................................43
3.5.3.
3.5.4.
3.5.5.
ArcView.......................................................................................... 28
Microsoft Access............................................................................... 42
Attributierung in Rascon, Verknüpfung in ArcView - Zeitaspekt .................... 47
I
Inhaltsverzeichnis
4.
Konzept zur Datenaktualisierung........................................................... 51
4.1. Allgemeines.......................................................................................... 51
4.2. Benötigte Daten zur Aktualisierung.......................................................... 51
4.3. Aktualisierung der Rascon- Daten............................................................ 52
4.3.1.
4.3.2.
Ein Objekt wurde gelöscht .................................................................. 52
Ein Objekt wurde hinzugefügt .............................................................. 53
4.3.2.1.
4.3.2.2.
4.3.3.
Lösungsmöglichkeit 1 .......................................................................................53
Lösungsmöglichkeit 2 .......................................................................................58
Ein Objekt wurde verändert................................................................. 58
4.4. Aktualisierung der NavTech- Daten.......................................................... 58
4.4.1.
4.4.2.
4.4.3.
Allgemeines ..................................................................................... 58
Ein Objekt in NavTech wurde gelöscht ................................................... 59
Ein Objekt wurde in NavTech hinzugefügt............................................... 60
4.5. Graphische Darstellung der bereits verknüpften NavTech- Elemente............ 62
4.5.1.
5.
Skripte zur Datenaktualisierung ............................................................ 67
Bewertung und Ausblick........................................................................ 74
5.1 Bewertung............................................................................................ 74
5.2 Ausblick ............................................................................................... 75
6.
Quellennachweis ................................................................................... 76
6.1 Printmedien.......................................................................................... 76
6.2 Online-Medien....................................................................................... 78
Anhang ......................................................................................................... 79
I.
Skripte ................................................................................................. 79
ChangeKoord.............................................................................................. 79
id_uebergabe ............................................................................................. 80
koordinatenfb ............................................................................................. 82
koordinatent............................................................................................... 83
tableclose .................................................................................................. 84
username .................................................................................................. 85
writetxt .................................................................................................... 85
II.
VBA-Skripte aus Access .......................................................................... 87
TXTImport ................................................................................................. 87
Funktion “tokenize”...................................................................................... 91
III. Anleitung zur Verknüpfung in ArcView ..................................................... 92
II
Inhaltsverzeichnis
Abbildungsverzeichnis
Abbildung 1: Grober Ablaufplan........................................................................ 25
Abbildung 2: Ablaufschema der Arbeit in Rascon ................................................ 27
Abbildung 3: Ablaufschema der Arbeit in ArcView ............................................... 41
Abbildung 4: Ablaufschema für die Aktualisierung mit ganz neuen NavTechElementen ............................................................................................... 54
Abbildung 5: Anleitung zur Verknüpfung in ArcView ............................................ 57
Abbildung 6: Kurzes Schema zum Import in Access............................................. 59
Abbildung 7: Anleitung zum korrekten Import der NavTech-Elemente in ArcView ... 61
Abbildung 8: Schema zur graphischen Darstellung in ArcView .............................. 62
Abbildung 9: Screenshot aus ArcView. Gesonderte Darstellung der neuen Segmente
(türkis).................................................................................................... 63
Abbildung 10: Anleitung zur graphischen Verbindung von Objekten mit den NavTechSegmenten .............................................................................................. 66
Abbildung 11: Screenshot aus ArcView. Die Verbindungen zwischen Objekt und
Segment sind rot dargestellt. ..................................................................... 72
Abbildung 12: Screenshot aus ArcView. Die Verbindungen zwischen Objekt und
Segment sind rot dargestellt. ..................................................................... 73
Tabellenverzeichnis
Tabelle 1: Datenfelderdefinitionen .................................................................... 23
III
Zielsetzung
Zielsetzung
1.
Im Zuge der Neuauflage des Falk-TruckerAtlasses im Frühjahr 2003 wurde eine
große Anzahl von
neuen Themen für den Schwerlastgüterverkehr erfasst,
beziehungsweise auf amtlicher Grundlage aktualisiert. Diese, in der Generalkarte
Deutschland 1:200.000 generalisierten, eingearbeiteten, kartographischen Daten
sollen für eine Routing-Anwendung nutzbar gemacht werden.
In einem ersten Schritt sollen bestimmte, besonders wichtige Objekte mit einem
begrenzten Aufwand in Rascon attributiert werden. Zu diesen Objekten zählen
diejenigen, die im Zusammenhang mit Sperrungen für den Schwerlastgüterverkehr
oder Gefahrguttransporten stehen.
Dazu zählen:
-
Brücken
-
Unterführungen
-
Sperrungen jeglicher Art, wie zum Beispiel für
wassergefährdende Güter.
In weiteren Schritten besteht die Aufgabe darin, die attributierten Objekte mit einem
digitalen,
routingfähigen
Straßennetz
zu
verknüpfen.
Hierfür
steht
eine
Datenlieferung der Firma NavTech zur Verfügung.
Hinzu können perspektivisch Daten kommen, die im heute bestehenden Printprodukt
nicht enthalten sind, wie zum Beispiel Angaben zu temporären Sperrungen.
Zusammenfassend kann gesagt werden, dass das primäre Ziel der Arbeit die digitale
Verknüpfung von Objekten aus dem Printprodukt „Trucker Atlas“ mit den Segmenten
eines digitalen, routingfähigen Straßennetzes ist.
1
Referenzierungsmethoden
Referenzierungsmethoden
2.
2.1
Allgemeines
Unter einer Referenzierung – beziehungsweise Georeferenzierung – versteht man die
Verbindung von geographischen Objekten aus der realen Welt mit Punkten auf einer
digitalen
Karte
in
einem
bekannten
Koordinatensystem.
Eine
solche
Georeferenzierung kann in einem Geoinformationssystem ausgeführt werden, da ein
GIS1 grundsätzlich mit Geodaten arbeitet. Geodaten beinhalten Informationen über
ihren Raumbezug. Dieser kann sowohl direkt sein, sich also auf „die räumliche
Position der Information auf der Erde durch zwei- oder dreidimensionale
Koordinaten“ 2, wie Geographische Koordinaten, Gauß-Krüger-Koordinaten oder
geozentrische Koordinaten beziehen, als auch indirekt sein, und sich mit einem
Postleitzahlengebiet, einer Adresse oder einem administrativen Gebiet in Verbindung
bringen.
Einsatzgebiete für eine solchartige Referenzierung wäre beispielsweise die FahrzeugNavigation, Routinganwendungen und die Auswertung von Luftbildern.
Es können drei Referenzierungsmethoden unterschieden werden: die direkte, die
indirekte und die hybride Referenzierung, wobei die hybride Referenzierung eine
Kombination aus der direkten und der indirekten darstellt.
2.2
Direkte Referenzierungsmethode
Eine direkte (Geo)Referenzierung bezieht sich auf die Koordinaten eines Objektes.
Dies bedeutet, dass die Objekte, welche in ein Koordinatensystem referenziert
werden sollen, dasselbe Bezugssystem wie das Zielsystem haben müssen.
Der Vorteil einer direkten Referenzierung liegt in den Koordinaten: diese können
ohne Probleme miteinander abgeglichen werden, ein automatisierter Ablauf ist
einfach
zu
erstellen
und
die
Koordinaten
werden
von
allen
bekannten
Geoinformationssystemen erkannt.
1
2
GeoInformationsSystem
http://www.net-lexikon.de/Geobezug.html
2
Referenzierungsmethoden
2.3
Indirekte Referenzierungsmethode
Bei einer indirekten Referenzierung hat der Raumbezug der Objekte Attribute, die
nicht auf Geodaten basieren.
Mögliche Attribute für Referenzierungen wären:
?
Link-ID
?
Adressen und Hausnummern
?
Postleitzahlen
?
Straßenbezeichnungen
?
Kreuzungen
?
Lineare Referenzierung
Eine Link-ID ist ein eindeutiger Identifikator eines Straßenabschnittes einer digitalen
Karte, den Hersteller wie beispielsweise NavTech 3 oder Teleatlas, eingeführt haben.
Auch über Adressen (offizieller Straßename plus Hausnummer), Postleitzahlen,
Straßenbezeichnungen (zum Beispiel B10 für Bundesstraße 10, A8 für Autobahn 8)
oder Kreuzungen (Durlacher Allee/ Ostring) wäre eine eindeutige Verbindung von
Objekten mit einem digitalen Straßennetz möglich.
Die Lineare Referenzierung ähnelt der Referenzierung anhand von Straßenadressen.
Sie gibt zwar keine Hausnummer an, misst aber zwischen zwei Knoten die
Entfernung zu einem Knoten. Dies ähnelt den Kilometerangaben von Autobahnen,
zum Beispiel „A8, Kilometer 146,2“.
2.4
Referenzierung im Projekt
Für das in dieser Arbeit besprochene Projekt wäre eine hybride Referenzierung am
passendsten. Dabei würde die Referenzierung sowohl über Koordinaten, als auch
über zusätzliche Attribute, wie Straßenbezeichnungen, erfolgen.
Mit Hilfe der Koordinaten wäre eine manuelle und eine automatisierte Referenzierung
durchführbar. Probleme könnte es dabei jedoch mit der Genauigkeit der Koordinaten
geben. Nicht nur die Koordinaten der digitalen Straßenkarte liegen nicht zu hundert
Prozent an der richtigen Stelle, sondern auch die nach ArcView importierten Rascon3
Navigation Technologies (www.navtech.com)
3
Referenzierungsmethoden
Objekte haben eine gewisse Konvertierungs-Ungenauigkeit. Dies macht den Einsatz
einer
zusätzlichen
Referenzierung
notwendig.
Die
Straßenbezeichnungen
in
Verbindung mit den Koordinaten würde in allen Gegenden, auf dem Land und in
Ballungsgebieten, zum Erfolg führen. Würde die Koordinate nicht zu hundert Prozent
übereinstimmen, so könnte man immer noch die Straßenbezeichnung hinzuziehen.
Das ergäbe eine hohe Trefferquote.
Probleme ergeben sich hier aus den Objekten, die in das Netz überführt werden
sollen, da sie keinerlei Angaben zu den Straßen beinhalten, auf denen sie liegen.
Dies macht eine hybride und automatisierte Referenzierung in diesem Projekt
unmöglich.
Daher
wurde
auf
eine
direkte,
manuelle
und
zeitaufwändige
Referenzierung zurückgegriffen.
4
Dokumentation
3.
Dokumentation
3.1.
Allgemein
Bevor mit der eigentlichen Aufgabe, der Erstellung eines Konzeptes zur Verknüpfung
der Objekte aus Rascon mit den Straßensegmenten aus NavTech, begonnen werden
kann, müssen einige Punkte sorgfältig geprüft werden.
Mögliche
Anwendungsfälle
(Use
Cases)
für
die
Routinganwendung
werden
durchgespielt. Hierbei wird bereits im Vorfeld abgeklärt, auf welche Faktoren bei der
zukünftigen Anwendung eingegangen,
beziehungsweise Rücksicht genommen
werden muss. Die Use Cases geben dem Hersteller der Routinganwendung
Informationen über den möglichen Gebrauch sowie über denkbare zukünftige
Anwendungsarten, wie zum Beispiel ein ‚On-Board-System’ des Produktes.
Ferner muss anhand der Legende entschieden werden, welche Objekte aus dem
Printmedium für den Prototypen wichtig und auch umsetzbar sind.
Zusätzlich werden in dieser ersten Phase des Projektes Datenfelder definiert, in
denen die Enddatensätze schließlich gespeichert werden sollen.
3.2.
UseCases
3.2.1.
Mögliche Aktoren
Folgende Aktoren können identifiziert werden:
-
Aktor „Speditionssachbearbeiter“
Ein Speditionssachbearbeiter ist ein Mitarbeiter einer Speditionsfirma, der für die
Streckenplanung von Transportaufträgen verantwortlich ist.
-
Aktor „Fahrer“
Ein Fahrer ist der Führer eines Kraftfahrzeuges, der Änderungen an einer einmal
geplanten Route entsprechend der aktuellen Verkehrssituation durchführen muss.
5
Dokumentation
Hinweise:
Im Truckeratlas angedeutete Informationen wie
?
Rollende Landstraße
?
Schifffahrts-Terminals
können nur dann sinnvoll für die Routenplanung eingesetzt werden, wenn zusätzliche
Informationen wie zum Beispiel Zielorte, Anfahrtszeiten und Kosten verfügbar sind.
3.2.2.
UseCase „Transportplanung “
Main Flow
Der Sachbearbeiter lässt die Route für einen Transport berechnen.
Dem System werden Eckdaten für die Berechnung der Strecke mitgeteilt, wie zum
Beispiel
•
Es handelt sich um einen Gefahrguttransport.
•
Das Fahrzeug hat ein zulässiges Gesamtgewicht von mehr als 3,5 t.
•
Das Fahrzeug hat ein tatsächliches Gewicht (mit Ladung) von 30t.
•
Das Fahrzeug hat eine tatsächliche Achslast von 20t.
•
Das Fahrzeug ist 4,5 m breit.
•
Das Fahrzeug ist 4,0 m hoch.
•
Die Fahrzeuglänge ist 12 m.
•
Der Kurvenradius des Fahrzeugs ist 25 m.
Optionale Angaben des Sachbearbeiters können sein:
•
Die Nichtberücksichtigung bestimmter Straßenklassen.
•
Die Vermeidung von Steigungsstrecken.
•
Die Vermeidung von frei wählbaren Orten.
Optional:
•
Ein Fahrzeugprofil wird geladen, welches die Fahrzeuginformationen vorgibt.
•
Die Berechnung geschieht mit unvollständigen Fahrzeuginformationen.
6
Dokumentation
•
Die
aktuelle
Wetterlage
wird
bei
der
Berechnung
berücksichtigt
(Schneebericht) und schneekettenpflichtige Straßen von der Routenführung
ausgeschlossen.
•
Bei Berechnung der Route während des kalendarischen Winters werden
schneekettenpflichtige Straßen von der Routenberechnung ausgeschlossen.
All diese Angaben werden in der berechneten Route verarbeitet.
Post Condition
Der Sachbearbeiter erhält die Daten der berechneten Route.
Er
erhält
darüber
hinaus
Informationen
über
auf
der
Route
liegende
Grenzkontrollstellen, Schneekettenpflicht im Winter und auf dem Weg liegende
Raststätten (vor allem Autohöfe), eventuell schon unter Berücksichtigung der
Pausenregelung, und Tankstellen.
Darüber hinaus informiert das System über alternative Transportmöglichkeiten
(Rollende
Landstraße,
Binnenschiffterminals)
und
verkehrsgünstig
gelegene
Binnenzollämter. Der Sachbearbeiter erhält die Möglichkeit, Alternativstrecken
auszuwählen, sollte er die ausgegebene Strecke aus bestimmten Gründen ablehnen.
An allen Brücken und Unterführungen werden Warnhinweise bzw. Informationen zu
Höhe, Schrammbordenbreite und Tragfähigkeit ausgegeben. Schneekettenpflicht im
Winter wird angezeigt.
3.2.3.
UseCase „Änderung der Planung wegen Verkehrslage“
Main Flow
Der Fahrer
berechnet mit einem OnBoard-System aufgrund der aktuellen
Verkehrslage die Route neu (Stau, Sperrungen, Unwetter, Wartezeiten an Grenzen
usw.).
Der Fahrer (oder eine online übermittelte Stauinformation) sperrt
interaktiv
temporär Strecken für eine Neuberechnung in seinem System. Stauinformationen
oder Sperrungen werden online zur Spedition übermittelt, um den Sachbearbeiter
über die Streckenänderung zu informieren.
7
Dokumentation
Das
System
übernimmt
die
vom
Sachbearbeiter
eingegebenen
Rahmeninformationen und berechnet eine Alternativroute.
Post Condition
Der Fahrer erhält die Daten der berechneten Route.
Er
erhält
darüber
hinaus
Informationen
über
auf
der
Route
liegende
Grenzkontrollstellen, Schneekettenpflicht im Winter und auf dem Weg liegende
Raststätten, eventuell schon unter Berücksichtigung der Pausenregelung, und
Tankstellen.
Darüber hinaus informiert das System über alternative Transportmöglichkeiten
(Rollende
Landstraße,
Binnenschiffterminals)
und
verkehrsgünstig
gelegene
Binnenzollämter. Der Sachbearbeiter erhält die Möglichkeit, Alternativstrecken
auszuwählen, sollte er die ausgegebene Strecke aus bestimmten Gründen ablehnen.
An allen Brücken und Unterführungen werden Warnhinweise bzw. Informationen zu
Höhe, Schrammbordenbreite und Tragfähigkeit ausgegeben.
8
Dokumentation
3.2.4.
UseCase “Ausgabe von POIs (Points O f Interest)“
Pre Condition
Eine Routenberechnung liegt vor.
Main Flow
Der Fahrer oder der Sachbearbeiter lässt sich vom System an einer berechneten
Route liegende Points Of Interest (POIs) anzeigen.
Er erhält eine aktualisierte Routenplanung mit angegebenen
•
Binnenzollämtern
•
Grenzkontrollstellen für TIR-Verkehr
•
Güterverkehrszentren (GVZ)
•
Terminals für kombinierten Verkehr Straße/Schiene
•
Terminals für kombinierten Verkehr Straße/Schiene/Wasser
•
Seehafen-Terminals für kombinierten Verkehr Straße/Schiene/Wasser
•
Umschlag-Terminals für Rollende Landstraße
•
Rasthaus mit Übernachtung
•
Raststätte
•
Kleinraststätte
•
Tankstelle (LKW-geeignet)
•
Autohof
Post Condition
Der Fahrer erhält die Daten der ber echneten Route inklusive POIs.
3.2.5.
UseCase „Anlegen eines Fahrzeugprofils“
Main Flow
Der Sachbearbeiter definiert ein Fahrzeugprofil für einen LKW des Fuhrparks.
Eckdaten für Routenberechnungen werden unter einem eindeutigen Namen im
System abgelegt, wie zum Beispiel
•
Es ist ein Gefahrguttransport.
9
Dokumentation
•
Das Fahrzeug hat ein zulässiges Gesamtgewicht von mehr als 3,5 t.
•
Das Fahrzeug hat ein tatsächliches Gewicht (mit Ladung) von 30t.
•
Das Fahrzeug hat eine tatsächliche Achslast von 20t.
•
Das Fahrzeug ist 4,5 m breit.
•
Das Fahrzeug ist 4,0 m hoch.
•
Die Fahrzeuglänge ist 12 m.
•
Der Kurvenradius des Fahrzeugs ist 25 m.
Post Condition
Dem System liegen die Rahmeninformationen für ein bestimmtes Fahrzeug vor.
Alternate Flow
Der Sachbearbeiter prüft die getätigten Eingaben, welche ihm angezeigt werden
und akzeptiert diese nicht.
Post Condition
Das System hat die gesamten getätigten Eingaben nicht gespeichert.
3.2.6.
UseCase „Bearbeiten eines Fahrzeugprofils“
Main Flow
Der Sachbearbeiter lädt ein bestehendes Fahrzeugprofil für einen LKW des
Fuhrparks.
Eckdaten für Routenberechnungen werden angezeigt und vom Sachbearbeiter
verändert, wie zum Beispiel
•
Es ist ein Gefahrguttransport.
•
Das Fahrzeug hat ein zulässiges Gesamtgewicht von mehr als 3,5 t.
•
Das Fahrzeug hat ein tatsächliches Gewicht (mit Ladung) von 30t.
•
Das Fahrzeug hat eine tatsächliche Achslast von 20t.
•
Das Fahrzeug ist 4,5 m breit.
•
Das Fahrzeug ist 4,0 m hoch.
•
Die Fahrzeuglänge ist 12 m.
10
Dokumentation
•
Der Kurvenradius des Fahrzeugs ist 25 m.
Der Sachbearbeiter speichert die getätigten Änderungen.
Post Condition
Dem System liegen die Rahmeninformationen für ein bestimmtes Fahrzeug vor.
Alternate Flow
Der Sachbearbeiter prüft die getätigten Eingaben, welche ihm angezeigt werden
und akzeptiert diese nicht.
Post Condition
Das System hat die gesamten getätigten Änderungen nicht gespeichert. Der
Datensatz liegt im Ausgangszustand vor.
3.2.7.
UseCase „Löschen eines Fahrzeugprofils“
Main Flow
Der Sachbearbeiter löscht ein unter einem eindeutigen Namen abgelegtes Profil.
Eine Sicherheitsabfrage wird bestätigt.
Post Condition
Dem System liegen die Rahmeninformationen für ein bestimmtes Fahrzeug nicht
mehr vor.
Alternate Flow
Der Sachbearbeiter bricht den Löschvorgang bei der Sicherheitsabfrage ab.
PostCondition
Das System hat die Löschung nicht durchgeführt. Der Datensatz liegt im
Ausgangszustand vor.
11
Dokumentation
3.3.
Legendenauswertung
3.3.1.
Allgemeines
Zu Beginn des Projektes lagen die Rascon- Objekte unter anderem im Printprodukt
„Trucker Atlas“ vor. Da eine Verknüpfung aller im Atlas abgedruckten Objekte mit
dem digitalen Straßennetz nicht realisierbar war, musste eine kritische Bewertung
aller Symbole auf deren Wichtigkeit durchgeführt werden.
3.3.2.
?
Symbolbewertung
Grenzkontrollstellen international
Plus:
- Zeigen Fernfahrern, die ins Ausland müssen, wichtige Grenzstellen an.
Minus:
- Sind nicht nötig, da die Grenzstellen in den NavTech-Daten bereits
enthalten sind.
?
Grenzkontrollstellen mit Beschränkung
Plus:
- Zeigt die Grenzkontrollstellen an, für die nicht alle Lkws zugelassen
sind.
- Zeigt die Information an, dass die Grenzkontrollstelle nicht rund um die
Uhr geöffnet ist.
Minus:
- Grenzkontrollstellen beziehungsweise Grenzübergänge sind bereits in
den NavTech- Daten vorhanden.
?
Brücke, Tragfähigkeit in Tonnen
Plus:
- Wird dieses Symbol nicht berücksichtigt, würde dies schwerwiegende
Konsequenzen im Straßenverkehr nach sich ziehen.
- Muss bei der Routenplanung mit einbezogen werden.
12
Dokumentation
?
Brücke, Schrammbordenbreite in Meter
Plus:
- Wichtige Information für Lastkraftwagen mit Überbreite.
Minus:
- Brücken sind meist breit genug damit mindestens ein LKW hindurch
passt. Ein Lkw darf die maximale Breite von 2,55m4 nicht
überschreiten. Daher wären Signaturen mit einer Schrammbordenbreite
von über 3 m unnötig.
?
Brücke, genaue Einschränkungen vor Ort beachten
Plus:
- Diese Symbole zeigen alte Daten der Brücken an, die bis
Redaktionsschluss nicht bestätigt oder geändert wurden. Sie waren in
der letzten Ausgabe korrekt, sind jetzt jedoch ohne Gewähr.
- Wichtig für die Routenplanung, müssen auf Grund der
Verkehrssicherheit berücksichtigt werden.
Minus:
- Signatur ist ohne Gewähr, da sie bis Redaktionsschluss nicht bestätigt
worden ist.
Info:
- Bei der Routenausgabe sollte man neben diese Brücken entsprechende
Hinweise anbringen, eventuell „Ohne Gewähr“.
?
Unterführung, Durchfahrtshöhe in Meter
Plus:
- Sehr wichtige Signatur. Wird sie nicht berücksichtigt, würde dies
schwerwiegende Konsequenzen im Straßenverkehr nach sich ziehen.
- Sie muss bei der Routenplanung mit einbezogen werden.
?
Unterführung, Schrammbordenbreite in Meter
Plus:
- wichtig für Lastkraftwagen mit Überbreite
Minus:
- analog zu „Brücke, Schrammbordenbreite in Meter“
4
http://www.storck-verlag.de/studie1/teil_a21.htm
13
Dokumentation
?
Unterführung, genaue Einschränkung vor
Ort beachten
Plus:
- Diese Symbole zeigen alte Daten der Unterführungen an, die bis
Redaktionsschluss nicht bestätigt oder aktualisiert wurden. Sie waren
also in der letzten Ausgabe korrekt, sind jetzt ohne Gewähr.
- Wichtig für die Routenplanung, müssen auf Grund der
Verkehrssicherheit berücksichtigt werden.
Minus:
- Diese Signatur birgt ein höheres Sicherheitsrisiko als die normalen
Unterführungssignaturen, da sich der LKW-Fahrer über die exakten
Einschränkungen vor Ort informieren muss.
Info:
- Bei der Routenausgabe sollte man neben diesen Unterführungen
entsprechende Hinweise anbringen, eventuell „Ohne Gewähr“.
?
Gesperrt für kennzeichnungspflichtige Kfz
mit gefährlichen Gütern
Plus:
- Für den geregelten Straßenverkehr sehr wichtig.
?
Gesperrt für Kfz mit wassergefährdender Ladung
Plus:
- Für den geregelten Straßenverkehr und die
Absicherung der Umwelt sehr wichtig.
?
Gesperrt für Fahrzeuge aller Art
Plus:
- Sehr wichtig für die zukünftige Routinganwendung, da diese Strecken
vollständig gesperrt werden müssen.
?
Gesperrt für Kraftwagen und sonstige mehrspurige
Kraftfahrzeuge
Plus:
-
Sehr wichtig für die zukünftige Routinganwendung, da diese Strecken
gesperrt werden müssen.
14
Dokumentation
?
Gesperrt für Kraftfahrzeuge mit einem zulässigen
Gesamtgewicht über 3,5t
Plus:
- Sehr wichtig für die zukünftige Routinganwendung, da diese Strecken
für Lastkraftwagen gesperrt werden müssen.
?
Gesperrt für Fahrzeuge über angegebenem
tatsächlichem Gewicht
Plus:
- Diese Signatur muss ebenfalls übernommen werden.
?
Gesperrt für Fahrzeuge über angegebener
tatsächlicher Achslast
Plus:
- Wichtig für den geregelten Straßenverkehr und die Routinganwendung.
?
Schneekettenpflicht im Winter
Plus:
- Im Winter auf bestimmten Strecken
Verkehrsteilnehmer enorm wichtig.
für
die
Sicherheit
aller
Minus:
- Im Sommer in den meisten Regionen nicht notwendig, außer in den
Alpen und ähnlichem Gebiet, wie Bergland, Hochgebirge und
höhergelegenen Regionen.
Info:
- In der Anfangsmaske der Routinganwendung sollte eingegeben werden
können, in welcher Jahreszeit man sich befindet und ob Schneefalloder Glatteisrisiko vorhanden ist. Das System könnte das Datum bzw.
Jahreszeit auch automatisch bei jedem Start ermitteln. Die
vorherrschende Schnee- und Glatteissituation zu diesem Zeitpunkt
muss der User selbst angeben.
?
Gefälle von 6% bis 10%, über 10%
Plus:
- Eine sehr wichtige Signatur, für den Prototypen jedoch nicht
notwendig.
15
Dokumentation
?
Verkehrsgünstig gelegenes Binnenzollamt
Plus:
- Ist ein Binnenzollamt, das eine besonders gute Anbindung an das
Straßennetz besitzt.
- Wichtig für Spediteure, die ihre Fahrer ins Ausland schicken und lange
Wartezeiten an den Grenzen vermeiden wollen.
- Entlastung aller anderen Grenzstellen.
Minus:
- Im Prototyp nicht von Bedeutung.
?
Sonstiges Binnenzollamt
Plus:
- Wichtig für Spediteure, die ihre Fahrer ins Ausland schicken und lange
Wartezeiten an den Grenzen vermeiden wollen, da das Binnenzollamt
im Landesinneren liegt.
Minus:
- Im Prototyp nicht von Bedeutung.
?
Grenzzollstelle mit TIR-Verkehr
Plus:
- Schnellere Bearbeitung des TIR- Verkehrs, daher wichtig für TIRFahrer.
Minus:
- nicht von Bedeutung
?
Umschlag-Terminal für den kombinierten
Verkehr Straße/Schiene
Plus:
- Wichtig als Start- beziehungsweise Zielpunkt für Spediteure.
Minus:
- Da keine Informationen über Bahnhöfe vorhanden sind, ist diese
Signatur für die erste Datenlieferung nicht notwendig.
- Ist für den reibungslosen und gesicherten Ablauf des Straßenverkehrs
nicht dringend nötig.
?
Binnenschiff-Terminal für den kombinierten
Verkehr Straße/Schiene/Wasser
Plus:
- Wichtig als Start- beziehungsweise Zielpunkt für Spediteure.
Minus:
- Da keine Informationen über Bahnhöfe und Häfen vorhanden sind, ist
diese Signatur für die erste Datenlieferung nicht notwendig.
16
Dokumentation
-
Ist für den reibungslosen und gesicherten Ablauf des Straßenverkehrs
nicht dringend nötig.
?
Seehafen-Terminal für den kombinierten
Verkehr Straße/Schiene/Wasser
Plus:
- Wichtig als Start- beziehungsweise Zielpunkt für Spediteure.
Minus:
- Da keine Informationen über Bahnhöfe und Häfen vorhanden sind, ist
diese Signatur für die erste Datenlieferung nicht notwendig.
- Ist für den reibungslosen und gesicherten Ablauf des Straßenverkehrs
nicht dringend nötig.
?
Umschlag-Terminal für Rollende Landstraße
Plus:
- Wichtig als Start- beziehungsweise Zielpunkt für Spediteure.
Minus:
- Da keine Informationen über Bahnhöfe vorhanden sind, ist diese
Signatur für die erste Datenlieferung nicht notwendig.
- Ist für den reibungslosen und gesicherten Ablauf des Straßenverkehrs
nicht dringend nötig.
?
Güterverkehrszentrum
Plus:
- Wichtig als Start- beziehungsweise Zielpunkt für Spediteure.
Minus:
- Da keine Informationen über Bahnhöfe vorliegen, ist diese Signatur für
die erste Datenlieferung noch uninteressant.
Info:
- Ein Güterverkehrszentrum ist eine Ansammlung verkehrswirtschaftlicher
Betriebe, logistischer Dienstleister und Industrieunternehmen in einem
Gewerbegebiet mit Anbindung an mindestens zwei Verkehrsträger, zum
Beispiel Straße und Schiene.
?
Rasthaus mit Übernachtung
Plus:
- Könnte für Fernfahrer interessant sein.
Minus:
- Für den geregelten und sicheren Ablauf im Straßenverkehr ist diese
Signatur nicht notwendig. Fernfahrer übernachten meist in den eigenen
Fahrzeugen.
17
Dokumentation
?
Raststätte
Plus:
- Ebenfalls interessant für Fernfahrer.
Minus:
- Für den geregelten und sicheren Ablauf im Straßenverkehr ist diese
Signatur nicht notwendig.
?
Kleinraststätte
Plus:
- Interessant für Fernfahrer, die ihre vorgeschriebenen Pausen dort
verbringen könnten.
Minus:
- LKW-Fahrer fahren eher die großen Raststätten oder Autohöfe an.
- Für den geregelten und sicheren Ablauf im Straßenverkehr ist diese
Signatur nicht notwendig.
?
Tankstelle
Plus:
- Wichtige Signatur.
Minus:
- Meist gibt es Tankstellen auch an größeren Raststätten oder Autohöfen.
Ob einzelne Tankstellen wichtig sind, wird angezweifelt, da Fernfahrer
eher nicht die Autobahnen verlassen um zu tanken.
?
Autohof
Plus:
- Diese Signatur ist unverzichtbar. Sie ist wichtig für die großen Pausen
oder Übernachtungen der Fernfahrer.
3.3.3
Ergebnis der Symbolbewertung
Trotz der vielen wichtigen Signaturen können (vorerst) nicht alle für die
Routinganwendung übernommen werden. Anhand der Bewertung war es möglich
genau zu erkennen, was in der ersten Version für die Lastkraftwagenfahrer wirklich
wichtig sein könnte. Das heißt, es wurden die Signaturen übernommen, welche
zwingend
notwendig
für
den
sowohl
reibungslosen
als
auch
sicheren
Straßenverkehrsablauf sind.
18
Dokumentation
Übernommen wurden folgende Signaturen:
-
Brücke, Tragfähigkeit in Tonnen
-
Brücke, Schrammbordenbreite in Meter
-
Brücke, genaue Einschränkungen vor Ort beachten
-
Unterführung, Durchfahrtshöhe in Meter
-
Unterführung, Schrammbordenbreite in Meter
-
Unterführung, genaue Einschränkungen vor Ort beachten
-
Gesperrt für:
-
?
kennzeichnungspflichtige Kfz mit gefährlichen Gütern
?
Kfz mit wassergefährdender Ladung
?
Fahrzeuge aller Art
?
Kraftwagen und sonstige mehrspurige Kfz
?
Kfz mit einem zulässigen Gesamtgewicht von über 3,5 t
?
Fahrzeuge über angegebenem tatsächlichen Gewicht
?
Fahrzeuge über angegebener tatsächlicher Achslast
Schneekettenpflicht im Winter
Als eher zweitrangig wurden folgende Signaturen erachtet:
-
Grenzkontrollstelle international
-
Grenzkontrollstelle mit Beschränkung
-
Gefälle von 6% bis 10%
-
Gefälle von über 10%
-
Verkehrsgünstig gelegenes Binnenzollamt
-
Sonstiges Binnenzollamt
-
Grenzzollstelle mit TIR-Vekehr
-
Umschlag-Terminal für den kombinierten Verkehr Straße/Schiene
-
Binnenschiff-Terminal für den kombinierten Verkehr
Straße/Schiene/Wasser
-
Seehafen-Terminal für den kombinierten Verkehr
Straße/Schiene/Wasser
-
Umschlag-Terminal für Rollende Landstraße
-
Güterverkehrszentrum
19
Dokumentation
-
Rasthaus mit Übernachtung
-
Raststätte
-
Kleinraststätte
-
Tankstelle
-
Autohof
Diese eher sekundär wichtigen Signaturen sind nicht notwendigerweise mit dem
sicheren Ablauf des Straßenverkehrs verbunden. Sie geben zusätzliche Informationen
und erleichtern dem Reisenden die Fahrt, können jedoch auch weggelassen werden.
Die Signaturen der Umschlag-, Binnenschiff- und Seehafen- Terminals wurden aus
dem Grund nicht berücksichtigt, da bisher keine Zielorte wie Häfen oder Bahnhöfe,
Anfahrtszeiten oder Kosten verfügbar waren. Alle nicht einbezogenen Objekte
können jedoch jederzeit zum Projekt hinzugefügt werden.
20
Dokumentation
3.4.
Datenfelder
3.4.1.
Allgemeines
Da die einzelnen Datensätze später in Access weiterver arbeitet werden sollen,
werden für die Tabelle Datenfelder definiert. Diese geben an, in welchem
Datenformat die Informationen gespeichert werden sollen und wie der eindeutige
Spaltenname lauten soll.
3.4.2.
Datenfelderdefinition
Schlüsselwörter:
Sie sind Wortkreationen, durch die die Objekte eindeutig identifizierbar sind. Die
Schlüsselwörter sind außerdem auch die Spaltennamen in Access.
Abkürzung Schlüsselwörter:
Die Abkürzungen der Schlüsselwörter sind für die Bearbeitung in ArcView und Access
sehr wichtig, da diese in die Skripte eingearbeitet werden. Hierbei wurde die
Bearbeitung mit Kürzeln vorgezogen.
Datentyp:
Dieses Feld gibt den Datentyp des gespeicherten Objektes in Access wieder.
Schlüsselwörter
RasconID
Abkürzu Datentyp
ng
Schlüss
elwörter
Beschreibung
String
Ist die eindeutige ID innerhalb der MGVMapServer-Datenbank.
NetzID
String
StartpunktLamda
Float
StartpunktPhi
Float
EndpunktLamda
Float
EndpunktPhi
Float
Richtung
Boolean
Ist
die
eindeutige
ID
eines
Straßenabschnittes
innerhalb
des
Fremddatennetzes.
In NavTech die LinkID.
AnfangsKoordinate (geografisch)
des beschriebenen Objektes in WGS84-Länge
AnfangsKoordinate (geografisch)
des beschriebenen Objektes in WGS84-Breite
EndKoordinate (geografisch)
des beschriebenen Objektes in WGS84-Länge
EndKoordinate (geografisch)
des beschriebenen Objektes in WGS84-Breite
Bei
in
beide
Richtungen
geltende
Einschränkungen
0,
bei
einseitigen
Einschränkungen 1. Das Koordinatenpaar ist
21
Dokumentation
BrueckeTrag
bt
Float
BrueckeSchrammbord
bs
Float
BrueckeEinschr
Boolean
be
UnterfuehrungHoehe
uh
Float
UnterfuehrungSchrammbord
us
Float
UnterfuehrungEinschr
Boolean
ue
GesperrtGefahrgut
gg
GesperrtGefahrgutNurZeitweise
GesperrtWasser
String
gw
GesperrtWasserNurZeitweise
GesperrtAlles
Boolean
Boolean
String
ga
GesperrtAllesNurZeitweise
Boolean
Schrammbordbreite bezeichnet die Breite der
für Lkws befahrbaren Straße in Meter.
Dieses Symbol zeigt alte Daten der Brücken
an, die bis Redaktionsschluss nicht bestätigt
oder geändert wurden. Sie waren in der
letzten Ausgabe korrekt, sind jetzt ohne
Gewähr. Genaue Einschränkungen vor Ort
beachten.
Gibt die Durchfahrtshöhe der Unterführung
in Meter an.
Schrammbordenbreite bezeichnet die Breite
der für Lkws befahrbaren Straßen in Meter.
Dieses Symbol zeigt alte Daten der Brücken
an, die bis Redaktionsschluss nicht bestätigt
oder geändert wurden. Sie waren in der
letzten Ausgabe korrekt, sind jetzt ohne
Gewähr.
Die
Strecke
ist
gesperrt
für
kennzeichnungspflichtige
Kfz
mit
gefährlichen Gütern.
Die Sperrung ist in irgendeiner Weise
eingeschränkt.
Die
Strecke
ist
für
Kfz
mit
wassergefährdender Ladung gesperrt.
Die Sperrung ist in irgendeiner Weise
eingeschränkt.
Gesperrt für Fahrzeuge aller Art.
s
Boolean
Die Sperrung ist in irgendeiner Weise
eingeschränkt.
Gesperrt für Kraftwagen und sonstige
mehrspurige Kfz.
Die Sperrung ist in irgendeiner Weise
eingeschränkt.
Gesperrt für Kfz mit einem zulässigen
Gesamtgewicht über 3,5t.
Die Sperrung ist in irgendeiner Weise
eingeschränkt.
Gesperrt für Fahrzeuge über angegebenem
tatsächlichem Gewicht.
Die Sperrung ist in irgendeiner Weise
eingeschränkt
Gesperrt für Fahrzeuge über angegebener
tatsächlicher Achslast.
Die Sperrung ist in irgendeiner Weise
eingeschränkt.
Zeigt Schneekettenpflicht an.
Gefaelle6
ge6
Boolean
Zeigt das Gefälle von 6-10% an.
Gefaelle10
ge10
Boolean
Zeigt das Gefälle über 10% an.
biv
Boolean,
POI
bi
Boolean,
Binnenzollamt, das eine besonders gute
Anbindung an das Straßennetz besitzt
(verkehrsgünstig gelegen).
"Normales" Binnenzollamt.
GesperrtKfz
String
in Laufrichtung abgespeichert .
Gibt die Tragfähigkeit in Tonnen an.
gk
GesperrtKfzNurZeitweise
GesperrtKfz3t5
String
gk35
GesperrtKfz3t5NurZeitweise
GesperrtTatGewicht
gtg
BinnenzollamtV
Binnenzollamt
Float
String
gta
GesperrtTatAchslastNurZeitweise
Schneekette
Boolean
String
GesperrtTatGewichtNurZeitweise
GesperrtTatAchslast
Boolean
Float
String
22
Dokumentation
Zeitstempel
POI
Boolean,
POI
Boolean,
POI
Boolean,
POI
Boolean,
POI
Boolean,
POI
Boolean,
POI
String
NavTechReleass
String
TruckerRelease
String
Bearbeiter
String
GrenzTIR
GVZ
Raststaette
RaststaetteK
tir
gvz
r
rk
Tank
t
Autohof
a
Grenzzollstelle mit TIR-Verkehr. Schnellere
und exklusive Bearbeitung des TIR-Verkehrs.
Kleinraststätte
Tankstelle
Verknüpfungszeitpunkt zwischen
Rascon/NavTech.
Das NavTech-Release auf dessen Basis die
Verknüpfung der NavTechId’s mit den
RasconID’s erfolgt ist.
Angabe des Korrekturstandes der zugrunde
liegenden TruckerAtlas-Substanz.
Bearbeitername
Tabelle 1: Datenfelderdefinitionen
23
Dokumentation
3.5.
Konzept
3.5.1.
Überblick
Zu Beginn galt es zu bedenken, mit welchen Programmen das Projekt durchgeführt
werden sollte. Die Attributierung der Objekte aus dem Atlas sollte zuerst in dem
kartographischen Programm „Rascon“ erfolgen, da die Objekte nur in jenem
Programm zur Verfügung standen.
Das nächste Problem ergab sich aus den NavTech-Daten, die nur in Form von
Shapes verfügbar waren. Für diesen Fall musste ein Programm gefunden werden,
das mit Shapes arbeitet und in welchem man eigene Skripte integrieren kann. Die
Wahl fiel hierbei auf das Geoinformationssystem „ArcView 3.0a“ von ESRI.
Nach der Attributierung in Rascon sollten die modifizierten Objekte als Shapes
exportiert werden, um sie gemeinsam mit den Shapes des digitalen Straßennetzes in
ArcView bearbeiten zu können. Es galt jetzt das nächste Problem zu lösen: Wie
bekommen die NavTech-Segmente die Informationen über eventuelle Sperrungen,
Brücken oder Unterführungen übermittelt? Hierfür wurde an eine Verknüpfung der
Rascon-Objekte mit den Straßensegmenten gedacht. Durch Klicks auf die identischen
Objekte im jeweiligen Thema sollen automatisch Objekt-Ids, Anfangs- und
Endkoordinaten der NavTech-Segmente sowie der Infotext der Rascon-Objekte in
einer Textdatei gespeichert werden. Diese Informationen werden anschließend in
eine Access Datenbank importiert, liegen somit als Tabelle in einer eigenen
Datenbank vor und können dort weiter bearbeitet werden.
24
Dokumentation
Der grobe Ablauf in einem Schaubild:
Rascon
Attributierung der
Objekte
Export der Objekte aus
Rascon, Import im Shapeformat in ArcView
Laden der NavTechShapes in ArcView.
ArcView
Verknüpfen der Informationen aus den RasconObjekten mit dem digitalen Straßennetz.
Automatisiertes Schreiben der Datensätze in eine
externe Textdatei.
Access
Importieren der Textdatei in eine
Access- Tabelle.
Abbildung 1: Grober Ablaufplan
3.5.2.
Rascon
3.5.2.1.
Das
Was ist Rascon?
Programm
Bearbeitung
und
„Rascon“
ist
Erstellung
ein
von
„Werkzeug
Karten
und
zur
kartographischen
Plänen
mit
hoher
Komplexität“ 5. Diese Karten können digital oder als Printprodukt von
höchster Qualität herangezogen werden.
Die für das Projekt genutzte Version stellt einige Funktionen bereit, die für
die digitale Kartographie sehr wichtig sind. Dazu zählt unter anderem die
Möglichkeit, sowohl im Raster- als auch im Vektormodus zu arbeiten. Das
gibt dem Kartographen die Möglichkeit, eingescannte analoge Karten in
5
www.rascon.de
25
Dokumentation
Rascon zu laden und diese im Vektormodus fortzuführen. Es können
jedoch auch vektorisierte Karten aufgerastert werden.
Im Vektormodus kann man eine vielzahl von Objekten erstellen. Jedes
dieser
Objekte
besitzt
im
Bearbeitungsmodus
eine
Zeile,
in
die
Informationen eigegeben werden können. Bei texthaften Objekten ist diese
Angabe der Text, der in Rascon erscheint. Bei allen anderen Arten, wie
linienförmigen oder punkthaften Symbolen, wird diese Information nicht
sichtbar, sondern bleibt in der Info-Zeile im Hintergrund gespeichert.
Diese Möglichkeit der Speicherung von Informationen wurde im Projekt
genutzt, um Attribute zu Einschränkungen mit den Objekten, wie
beispielsweise Brücken oder Unterführungen, zu verbinden.
3.5.2.2.
Umsetzung
Zu Beginn des Projektes mussten die Einschränkungsinformationen mit den
Objekten in Rascon verbunden werden. Alle Objekte waren durch
eindeutige IDs gekennzeichnet, das heißt zum Beispiel, dass eine Brücke
von Beginn an als Objekt „Brücke“ attributiert war. Die genauen
Einschränkungen wie Tragfähigkeit oder Höhe waren in keinem Objekt
abgespeichert. Diese Informationen mussten daher jedem Objekt einzeln
zugeordnet werden.
Da jedoch jede Brücke oder Unterführung unterschiedliche Attribute hat,
musste diese Arbeit anstatt mit Hilfe von automatisierenden Skripten
vollständig manuell ausgeführt werden.
26
Dokumentation
Hier ein kurzes Ablaufschema der Arbeit in Rascon:
Rascon-Symbol
für Unterführung.
In das Textfeld des Elements
können zusätzliche Informationen
eingegeben werden.
Rascon-Symbol
mit beschreibenden Attributen.
Diese Informationen geben Aufschluss
über das zugehörige Symbol (z.B.
Unterführung, Brücke, gesperrte Strecke
etc.).
Die Attribute werden von Hand in das Textfeld des
Rascon- Symbols eingetragen.
Bei diesem Beispiel wäre dies „uh3.5“.
Konvertierung der bearbeiteten Rascon-Symbole
in ArcView-Shapes.
Abbildung 2: Ablaufschema der Arbeit in Rascon
Nachdem alle Objekte in Rascon mit Attributen versehen worden waren,
konnten sie durch ein von Herrn Markus Schorb selbst entwickeltes
Programm als Shapefile exportiert werden.
27
Dokumentation
3.5.3.
ArcView
3.5.3.1.
Was ist ArcView
ArcView ist ein Desktop-Geoinformationssystem (GIS) der Firma ESRI. Es
ist ein offenes System für die Darstellung, die Bearbeitung und die Abfrage
von
geographischen
Daten. „Geoinformationssysteme werden
unter
anderem in folgenden Bereichen eingesetzt:
-
Katasterämter (Liegenschaften)
-
Militär (Logistik)
-
Umweltschutz (Biotop- und Nutzungstypen)
-
Notdienste (Polizei, Feuerwehr, Rettungswesen)
-
Stadt- und Raumplanung (Kanalnetze)“ 6
Raumbezogene Daten können mit ArcView nicht nur erfasst und in einer
Datenbank
verwaltet,
sondern
auch
kartographisch
bearbeitet,
ausgewertet, exportiert oder auf Bildschirm oder Drucker ausgegeben
werden. Durch die Einbindung von Legenden, Tabellen und Diagrammen
können mit ArcView erzeugte Karten zusätzliche Informationen darstellen.
Das Programm ist überdies mit einer Entwicklungsumgebung für die
objektorientierte
Sprache
Programmiersprache
lässt
Benutzeroberfläche,
eine
die
„Avenue“
individuelle
hauptsächlich
ausgestattet.
Veränderung
aus
Diese
sowohl
der
Avenue-Skripten
und
Steuerelementen besteht, als auch eigener Skripte zu. Mit Hilfe dieser
Programmiersprache konnte das Projekt in ArcView ohne Probleme
umgesetzt werden.
3.5.3.2.
Was sind Shapes?
In ArcView wird mit Projekten gearbeitet. Die Daten, die in einem Projekt
angezeigt werden sollen, müssen dafür als neues Thema in einem
6
LIEBIG, Wolfgang (2001): Desktop-GIS mit ArcView GIS: Leitfaden für Anwender. Seite 3
28
Dokumentation
sogenannten View geöffnet werden. Um raumbezogene Daten öffnen zu
können, müssen diese in einem bestimmten Datenformat vorliegen.
ArcView unterstützt sowohl das Format von ARC/INFO - Datensätzen wie
Coverages und Grids, als auch Shapethemen.
Ein Shapethema ist ein ArcView-eigenes Datenformat für raumbezogene
Daten. 7 Die Geodaten müssen im die Auswahl Fall im Shapeformat
vorliegen, um mit ihnen problemlos in ArcView arbeiten zu können.
In dem Projekt zur Umsetzung der Einschränkungsinformationen auf ein
digitales
Straßennetz
liegen
sowohl
die
Objekte
mit
den
Einschränkungsinformationen als auch das digitale Straßennetz als
Shapedatei vor.
3.5.3.3.
Konzept
Es sollen Themen aus NavTech und Rascon als Shapes in ArcView
eingelesen werden. Die Rasconshapes wurden bereits georeferenziert und
besitzen Attributtabellen. Durch die Auswahl von zueinandergehörigen
Objekten im jeweiligen Thema, sollen automatisch Objekt-Ids, Anfangsund Endkoordinaten der NavTech-Segmente, sowie der Infotext, der den
Objekten in Rascon manuell zugeordnet wurde, der Rascon-Objekte in
einer Textdatei gespeichert werden.
Das Konzept zur Verknüpfung der Einschränkungsinformationen mit dem
digitalen Straßennetz gliedert sich in folgende Teilschritte:
Schritt 1
Im ersten Schritt muss der Bearbeiter seinen Namen angeben, der dann
als globale Variable für die Dauer der Session gespeichert bleibt und bei
jedem Schreiben der Textdatei mitgeschrieben wird.
Schritt 2
Als nächstes wird ein Skript benötigt, in welchem die Ids und der Infotext
der Rasconobjekte aus der jeweiligen Attributzeile an eine externe Datei
7
LIEBIG, Wolfgang (2001): Desktop-GIS mit ArcView GIS: Leitfaden für Anwender. Seite 79
29
Dokumentation
übergeben, beziehungsweise erst einmal als globale Variablen gespeichert
werden, wenn auf ein bestimmtes Objekt geklickt wird. Das Skript merkt
sich hier den Wert der Attribute.
Schritt 2.1
Die in Schritt 2 geöffneten Attributtabellen müssen
geschlossen werden und nicht im Hintergrund geöffnet
bleiben.
Schritt 3
Es soll überprüft werden, ob das markierte Objekt Richtungsinformationen
in der Attributtabelle enthält. Richtungsinformationen sind für die spätere
Routinganwendung unverzichtbar. Sind Informationen enthalten, soll
geprüft werden, in welche Richtung das Segment „zeigt“.
Schritt 3.1
Enthält das Richtungsfeld in der Attributtabelle die Information
„T“, so wird ein weiteres Skript aufgerufen, das die
Besonderheit dieser Richtung (entgegen der Fahrtrichtung)
berücksichtigt und die Anfangs- und Endkoordinaten des
NavTech-Segmentes in umgekehrter Reihenfolge aufnimmt und
in Variablen speichert.
Schritt 3.2
Enthält das Richtungsfeld in der Attributtabelle die Information
„B“ (Richtung beidseitig) oder „F“ (Richtung einseitig, jedoch mit
der Fahrtrichtung), so wird ein Skript aufgerufen, das die
Anfangs- und Endkoordinaten aufnimmt und in Variablen
speichert.
30
Dokumentation
Schritt4
Möchte man nun die Koordinaten eines Segmentes überprüfen, die
Richtung markieren oder die Koordinaten umkehren, so braucht man ein
Skript, das zuerst die bisherigen Koordinaten anzeigt. Dadurch kann man
überprüfen, ob die Digitalisierungsrichtung korrekt ist oder ob man sie
ändern muss.
Schritt 5
Die IDs aus Rascon und NavTech, die Anfangs- und Endkoordinaten des
NavTech-Segments, der Infotext, wahlweise die Richtungsinformation und
der Name des Bearbeiters müssen nun in dieser Reihenfolge in eine
externe Textdatei geschrieben werden.
3.5.3.4.
Umsetzung
Im Folgenden wird die Umsetzung der Ideen inklusive Auszügen aus den
Quelltexten dargestellt. Die vollständigen Quelltexte sind im Anhang zu
finden.
Schritt 1
Für den beim ersten Bearbeiten des Projektes aufzurufenden Dialoges
wurde das Skript „Username“ erstellt.
Skriptablauf:
Das Skript wird durch den Menüeintrag „Bearbeitername“, den Shortcut
strg+n, das Skript „id_uebergabe“ oder den Button
aufgerufen.
Es wird ein Eingabefenster geöffnet, in welches der Bearbeiter seinen
Namen eingeben muss. Wird dies nicht getan, so erscheint das
Eingabefenster so lange, bis eine Eingabe erfolgte.
Damit der Benutzername bei jeder Bearbeitung in ArcView eingegeben
wird, wurde in das Skript „id_uebergabe“ eine Sicherung eingebaut, die
prüft, ob die globale Variable „_Name“ bereits einen Wert enthält oder
31
Dokumentation
nicht. Ist diese Variable nicht belegt, so erscheint auch dann das
Eingabefenster mit der Aufforderung.
Skriptauszug:
' Öffnen eines Eingabefensters
_Name
=
MsgBox.Input("Bitte
geben
Sie
Ihren
Benutzernamen
hier
ein.","Eingabe","")
' so lange in das Textfeld des Eingabefensters nichts eingegeben
' wird, erscheint das Errorfenster
while (_Name = NIL)
MsgBox.Error("Bitte geben Sie Ihren Namen ein!","Eingabe")
_Name = MsgBox.Input("Bitte geben Sie Ihren Benutzernamen hier
ein.","Eingabe","Ihr Name")
end
Schritt 2
Es wurde das Skript „id_uebergabe“ erstellt, das sich, nachdem ein Objekt
im Thema angeklickt wurde, den Inhalt eines bestimmten Feldes im
markierten Datensatz temporär sichert. Bei diesem Beispiel ist es entweder
das Feld „Object_ID“ in den Rascon-Shapes oder das Feld „Link_ID“ aus
den NavTech-Shapes. Der Inhalt des Feldes wird einer globalen Variablen
zugewiesen, die später in einem anderen Skript wieder aufgerufen wird.
Das Skript wird über den Shortcut strg+a, den „Id-Klick“- Menüeintrag „IDÜbergabe“ oder diesen Button
aufgerufen.
32
Dokumentation
Skriptablauf:
Es wird überprüft, ob die Variable „_Name“ bereits einen Wert beinhaltet.
Wenn nicht, wird das Skript „Username“ ausgeführt. Dadurch wird
sichergestellt, dass immer ein Benutzername angegeben ist.
Anschließend wird eine Themenliste generiert, aus der der Bearbeiter das
Thema auswählen muss, welches im Moment bearbeitet werden soll.
Dieses wird dann aktiviert.
Die Tabelle des aktiven Themas wird zum editieren geöffnet. Anschließend
wird die virtuelle Tabelle (Vtab) des Themas aufgerufen und nach den
Feldern
„Object_ID“(Rascon-Daten) oder „Link_ID“ (NavTech-Daten),
sowie „Infotext“ gesucht, und schließlich der Inhalt des selektierten
Datensatzes einer globalen Variablen zugewiesen.
Skriptauszug:
'---------------------------------------------------------------'
Es
wird
die
Virtuelle
Tabelle
(VTab)
des
aktiven
Dokumentes
' aufgerufen, also die VTab der Attributtabelle. Felder
' werden gesucht. Die Werte, die in den Feldern stehen,
' werden in globalen Variablen gespeichert.
'----------------------------------------------------------------
myVTab = av.GetActiveDoc.GetVTab
Feld1 = myVTab.FindField("DB_id")
Feld2 = myVTab.FindField("Link_id")
Feld3 = myVTab.FindField("dir_travel")
Feld4 = myVTab.FindField("Infotext")
if (Feld1 = NIL) then
'MsgBox.Info("keine DB-ID","DB-ID")
else
_DBID = myVTab.ReturnValueString(Feld1,myVTab.GetSelection.
GetNextSet(-1))
MsgBox.Info(_DBID,"DB_id")
if (Feld4 = NIL) then
MsgBox.Info("Das Feld ist leer!","Leer")
33
Dokumentation
else
_Infotext
=
myVTab.ReturnValueString(Feld4,myVTab.
GetSelection.GetNextSet(-1))
'msgbox.info(_Infotext,"Infotext")
end
for each t in myVView
t.ClearSelection
end
end
Als nächstes muss das Richtungsfeld in der Attributtabelle des StreetsThemas überprüft werden.
Das Thema „streets.shp“ wird gesucht und aktiviert. Anschließend wird
überprüft, ob das Feld „dir_travel“ existiert. Wurde es gefunden, wird der
Wert des Feldes in einer globalen Variablen gespeichert. Anschließend wird
geprüft, welcher Wert im Feld steht. Bei dem Wert „T“ wird das Skript
„KoordinatenT“, bei den Werten „B“ und „F“ das Skript „KoordinatenFB“
ausgeführt.
Skriptauszug:
Streetsthema = Themenliste.FindTheme("streets.shp")
Streetsthema.setactive(TRUE)
if (Feld3 = NIL) then
MsgBox.Info("Das Richtungsfeld ist leer!","Leer")
else
Richtung = myVTab.ReturnValueString(Feld3, myVTab.
GetSelection.GetNextSet(-1))
if (Richtung = "T") then
av.run("KoordinatenT",NIL)
_Richtung = (";dir1")
elseif (Richtung = "B") then
av.run("KoordinatenFB",NIL)
_Richtung =("")
elseif (Richtung = "F") then
av.run("KoordinatenFB",NIL)
34
Dokumentation
_Richtung = (";dir1")
elseif (Richtung = NIL) then
MsgBox.Info(Richtung,"Richtung")
end
end
Schritt 2.1
Die in Schritt 2 geöffneten Tabellen werden noch innerhalb des Skriptes
„ID_uebergabe“ durch Aufruf des Skriptes „tableclose“ geschlossen.
Skriptauszug aus „tableclose“:
'--------------------------------------------------------------' Jede mögliche offene Tabelle wird namentlich im Projekt gesucht
' und anschließend geschlossen.
'---------------------------------------------------------------
Tabelle = av.GetProject
Tabellen = Tabelle.finddoc("Attribute von Linien.shp")
Tabellen2 = Tabelle.finddoc("Attribute von Majhwys.shp")
Tabellen3 = Tabelle.finddoc("Attribute von Sechwys.shp")
Tabellen4 = Tabelle.finddoc("Attribute von Symbole.shp")
Tabellen5 = Tabelle.finddoc("Attribute von Streets.shp")
if (Tabellen = NIL) then
else
Tabellen.getwin.close
end
if (Tabellen2 = NIL) then
else
Tabellen2.getwin.close
end
Schritt 3
Die Überprüfung nach Richtungsinformationen erfolgt bereits in Schritt 2
im Skript „id_uebergabe“.
35
Dokumentation
Schritt 3.1
Im Falle einer Richtungsinformation mit dem Wert „T“ wird in
„id_uebergabe“ das Skript „KoordinatenT“ aufgerufen.
Skriptauszug aus „KoordinatenT“:
'---------------------------------------------------------------'
Der Wert, der im Feld "Shape" steht, wird zurückgegeben.
'----------------------------------------------------------------
theShapeField = theFTab.FindField("Shape")
val
=
theFTab.ReturnValue(theShapeField,
theFTab.GetSelection.
GetNextSet(-1))
'---------------------------------------------------------------' Gibt einen Punkt zurück, der bei den angegebenen Prozent auf der
' Polylinie liegt. Der Anfangspunkt liegt also bei 100 Prozent,
' der Endpunkt bei Null Prozent. Dies wurde vertauscht, da die
' Information zur Richtung „Entgegen der Fahrtrichtung“ lautet.
'----------------------------------------------------------------
startp = val.Along(100)
endp = val.Along(0)
'---------------------------------------------------------------' Jetzt müssen die globalen Variablen definiert werden,
' die im späteren Verlauf der Verknüpfung wieder gebraucht werden.
'----------------------------------------------------------------
_startx = startp.GetX
_starty = startp.GetY
_endx = endp.GetX
_endy = endp.GetY
'---------------------------------------------------------------' Kurzer Check, ob auch wirklich die richtigen Koordinaten
' aufgenommen wurden. Hierfür werden die soeben erzeugten
36
Dokumentation
' Koordinaten in einer Messagebox ausgegeben.
'----------------------------------------------------------------
Liste = {_startx,_starty,_endx,_endy}
MsgBox.ListAsString(Liste,"Das
sind
die
Koordinaten",
"Koordinaten")
Schritt 3.2
Im Falle einer Richtungsinformation mit den Werten „B“ oder „F“, wird in
„id_uebergabe“ das Skript „KoordinatenFB“ aufgerufen.
Skriptablauf:
Das Skript „KoordinatenFB“ läuft im Grunde genau wie das Skript
„KoordinatenT“ ab, jedoch mit einem Unterschied: der Anfangspunkt liegt
hier bei Null Prozent der Polylinie, und nicht wie im Skript „KoordinatenT“
bei 100 Prozent. Dies liegt an der Tatsache, dass die Richtungsinformation
„F“ in eine Richtung, jedoch mit der Fahrtrichtung zeigt. Der Eintrag „B“
steht für eine beidseitige Richtungsinformation – daher ist es bei dieser
Information egal, in welche Richtung die Koordinaten zeigen.
Skriptauszug:
'---------------------------------------------------------------' Gibt einen Punkt zurück, der bei den angegebenen Prozent auf der
' Polylinie liegt. Der Anfangspunkt liegt also bei Null Prozent,
' der Endpunkt bei 100 Prozent.
'----------------------------------------------------------------
startp = val.Along(0)
endp = val.Along(100)
Schritt 4
Um die erzeugten Koordinaten überprüfen und bei Bedarf umdrehen zu
können, müssen diese in einem Fenster angezeigt werden. Außerdem
37
Dokumentation
besteht die Möglichkeit, die Koordinatenrichtung beizubehalten und der
Textdatei lediglich eine Richtungsinformation zu übergeben.
Skriptauszug:
'----------------------------------------------------------------' Die Infobox mit den Koordinaten wird erzeugt. Hierfür müssen die
' Koordinaten in einer Liste gespeichert werden, damit sie unter' einander angezeigt werden könne.
'-----------------------------------------------------------------
Anfangskoord = _startx.AsString ++ _starty.AsString
Endkoord = _endx.AsString ++ _endy.AsString
aeList = {Anfangskoord,Endkoord}
myString = ""
For each i in aeList
myString =
myString + NL + i.AsString
myString.BasicTrim(NL,"")
End
MsgBox.Info(myString,"Koordinaten")
'----------------------------------------------------------------' Es wird eine Auswahlliste erstellt. Man kann auswählen, ob man
' die Richtung beibehalten oder umkehren möchte. In beiden Fällen
' wird der Variablen _Richtung ein Wert zugewiesen. Möchte man der
' Variablen jedoch keinen Wert zuweisen und einfach abbrechen, so
' klickt man einfach auf „abbrechen“.
'-----------------------------------------------------------------
AuswahlListe = {"Richtung beibehalten", "Richtung umkehren"}
Auswahl = MsgBox.ListasString(AuswahlListe,"Bitte auswählen",
"Auswahl")
if (Auswahl = NIL) then
Msgbox.info("Der Vorgang wurde abgebrochen","Abbruch")
elseif (Auswahl = "Richtung beibehalten") then
_Richtung = (";dir1")
elseif (Auswahl = "Richtung umkehren") then
38
Dokumentation
_Richtung = (";dir1")
startx = _startx
starty = _starty
endx = _endx
endy = _endy
'---------------------------------------------------------------' Hier werden die Koordinaten umgekehrt. _startx wird zu endx und
' _endx zu startx. Schließlich wird wieder eine Liste generiert,
' die anschließend in einer Infobox zur Überprüfung ausgegeben
' wird.
'---------------------------------------------------------------_startx = endx
_starty = endy
_endx = startx
_endy = starty
Anfangskoord = _startx.AsString ++ _starty.AsString
Endkoord = _endx.AsString ++ _endy.AsString
aeList = {Anfangskoord,Endkoord}
myString = ""
For each i in aeList
myString =
myString + NL + i.AsString
myString.BasicTrim(NL,"")
End
MsgBox.Info(myString,"Koordinaten")
end
Schritt 5
Um nun die IDs aus Rascon und NavTech, die AnfangsEndkoordinaten
der
NavTech-Segmente,
den
Infotext,
und
die
Richtungsinformation und den Namen des Bearbeiters extern zu speichern,
wurde das Skript „Writetxt“ erstellt.
39
Dokumentation
Skriptauszug:
'----------------------------------------------------------------' Die globalen Variablen, die in den vorherigen Skripten definiert
' wurden, werden normalen Variablen zugewiesen. Anschließend
' wird eine neue Datei angelegt.
'-----------------------------------------------------------------
DBID = _DBID
LinkID = _LinkID
startx = _startx.asString
starty = _starty.asString
endx = _endx.asString
endy = _endy.asString
Infotxt = _Infotext
Richtung = _Richtung
name = ("n"+_Name)
newfile=Filename.Make("C:\IDdata.txt")
newfileexists=File.Exists(newfile)
MsgBox.info(newfileexists.asString,"Die Datei besteht bereits.")
'----------------------------------------------------------------' Existiert die Datei noch nicht, so wird sie neu angelegt und
' virtuell geöffnet. Existiert sie bereits, wird der Cursor an
' das Ende der Datei gestellt und alles, das hineingeschrieben
' werden soll, wird hinten angefügt.
'----------------------------------------------------------------if (newfileexists = false) then
lf = LineFile.Make(newfile, #FILE_PERM_WRITE )
lf.WriteElt(DBID+";"+LinkID+";"+startx+";"+starty+";"
+endx+";"+endy+";"+Infotxt+Richtung+";"+name)
lf.Close
else
lf = LineFile.Make(newfile,#FILE_PERM_MODIFY)
lf.gotoend
lf.WriteElt(DBID+";"+LinkID+";"+startx+";"+starty+";"
+endx+";"+endy+";"+Infotxt+Richtung+";"+name)
lf.close
end
40
Dokumentation
3.5.3.5.
Ablaufschema
ArcView
Import der Rascon- Shapes in
ArcView
Import der
ArcView
NavTech-
Shapes
in
Rascon-Shapes für Linien (gesperrte
Strecken) und Symbole (Brücken,
Unterführungen).
Relevante Informationen in der DBF:
- Infotext (Bsp. Uh3.5)
- Datenbank- ID
NavTech-Shape mit Straßen und
Straßeninformationen für Deutschland.
Relevante Informationen in der DBF:
- Shape (Polyline)
- Link- ID
- Direction of Travel
Wiederholung bei linienhaften Objekten so lange, bis
das Rascon-Objekt vollständig „abgedeckt“ ist.
Erfassung eines Rascon- Objektes aus dem
jeweils richtigen Shape (Linie oder Symbol)
und gleichzeitiges Extrahieren der relevanten
Informationen aus der DBF (Infotext und DB-ID).
Erfassung des lagerichtig zum Rascon- Objekt passenden
NavTech- Segmentes aus dem NavTech- Shape und
gleichzeitiges Extrahieren der relevanten Informationen
aus der DBF (Shape, Link-ID und und Dir -Travel).
Die Anfangs- und Endkoordinaten des NavTechSegmentes werden automatisch in vier Variablen
temporär abgespeichert.
Schreiben aller Variablen (DB-ID, Link-ID, Koordinaten
Anfangs- und Endpunkt, Infotext und Richtungsinformation) in eine externe Textdatei.
Abbildung 3: Ablaufschema der Arbeit in ArcView
41
Dokumentation
3.5.4.
Microsoft Access
Was ist MS 8 Access?
3.5.4.1.
Microsoft Access (MS Access) ist ein Datenbankprogramm. Mit ihm können
Daten
erstellt,
bearbeitet,
analysiert
und
berechnet,
jedoch
auch
Datenbankanwendungen erstellt werden. Es bildet zusammen mit Microsoft
Word und Microsoft Excel einen Teil des „Microsoft Office“-Paketes.
„MS Access speichert die Daten in ein so genanntes mdb-Dateiformat ab,
wobei sowohl Elemente der Oberfläche als auch die Datenbanktabellen in
einer monolithischen Datei landen. Es ist allerdings möglich, die
Tabellendefinitionen und den Datenbestand sowie die Oberfläche in zwei
verschiedenen Dateien zu halten. Diese geschieht durch eine Funktion, die
Tabellen
verknüpft.
Datenbanksystemen
Im
Gegensatz
unterstützt
zu
MS
früheren
Access
PC-basierenden
das
Relationale
Datenbankmodell. Um extern auf Access-Datenbanken zuzugreifen, eignet
sich
am
besten
die
ebenfalls
von
Microsoft
entwickelte
ODBC-
Anwendungsprogrammierschnittstelle.“9
Wie ArcView, kann auch Access mit eigenen Skripten modifiziert werden,
beziehungsweise mit Skripten auf Datenbanken zugreifen und
automatisiert
ausführen
lassen.
Dies
geschieht
Befehle
mit
der
Programmiersprache Visual Basic for Applications.
3.5.4.2.
Was sind Abfragen
Datenbankabfragen in MS Access sind SQL10-Queries, mit welchen Daten
aufbereitet, aktualisiert, gefiltert oder gelöscht werden können.
Der
Aufbau einer Abfrage ähnelt dem eines einfachen SQL-Queries.
Durch Abfragen aus Access werden die Tabellen der Datensätze des
Projektes bei der Aktualisierung bearbeitet.
42
Dokumentation
3.5.4.3.
Was sind Module
Access Module sind Skripte, mit denen Daten manipuliert werden können.
Sie werden mit Hilfe der Programmiersprache Visual Basic for Applications
(VBA) erstellt.
„VBA (Visual Basic for Application) ist eine eigenständige, objektorientierte
Programmiersprache für die MS Office-Anwendungen. Sie dient der
Erweiterung des Funktionsumfangs der MS-Office-Produkte und ist in diese
integriert.“11
Zu Beginn ihrer Entwicklung gab es für die einzelnen Office-Anwendungen
eigene und unterschiedliche „Makro-Sprachen“. Für eine einfachere
Programmierung und Handhabung in Office wurde eine gemeinsame
Programmiersprache gesucht und entwickelt – es entstand Visual Basic for
Applications.
Mit Hilfe dieser Module werden die Datensätze des Projektes anschließend
in Access importiert.
3.5.4.4.
Konzept
Die Werte, die in ArcView in die externe Textdatei geschrieben wurden,
müssen nun an Access übergeben und jeder Wert für sich in eine
bestimmte Spalten eingelesen werden. Dies geschieht in Acces mit Hilfe
eines Visual Basic Skriptes, das die Textdatei Zeile für Zeile einliest und
anschließend die wichtigen Informationen herausfiltert.
3.5.4.5.
Umsetzung
Mit der Unterstützung von Herrn Markus Schorb wurde ein VBA -Skript
erstellt. Der grobe Ablauf wird hier mit Hilfe von Skriptauszügen
dokumentiert. Das gesamte Skript ist ebenfalls im Anhang einsehbar.
8
Microsoft
http://www.net-lexikon.de/Microsoft-Access.html
10
Structured Query Language
11
http://www.rrzn.uni-hannover.de/Dokumentation/Handbuecher/VBA.html
9
43
Dokumentation
Zuerst muss die Textdatei Zeile für Zeile in Access eingelesen werden.
' Ab diesem Punkt wird das Einlesen der Datei festgelegt.
zaehler = 0
'Bis zum Dateiende soll zeilenweise eingelesen werden.
Do While Not EOF(1)
ReDim Preserve alleZeilen(zaehler)
Line Input #1, eineZeile
alleZeilen(zaehler) = eineZeile
zaehler = zaehler + 1
Loop
Anschließend müssen die Werte jeder Zeile voneinander getrennt werden,
da diese direkt aneinander hängen und nur durch Semikola getrennt sind.
Zuerst werden die IDs, sowie Anfangs- und Endpunkte aus der Zeile
gezogen. Dies ist einfach, da die ersten Sechs Einträge der Textdatei
immer die gleichen sind.
'Aufsplittung des String-Arrays
For i = 0 To DSMax
eineZeile = alleZeilen(i)
'Zerlegen der Zeile an den Semikola
Set eineZeileAlsCollection = tokenize(eineZeile, ";")
'Die abgetrennten Daten werden in die Tabelle importiert
With rsTabelle
.AddNew
!RasconID = eineZeileAlsCollection.Item(1)
!NetzID = eineZeileAlsCollection.Item(2)
!StartpunktLamda = Val(eineZeileAlsCollection.Item(3))
!StartpunktPhi = Val(eineZeileAlsCollection.Item(4))
44
Dokumentation
!EndpunktLamda = Val(eineZeileAlsCollection.Item(5))
!EndpunktPhi = Val(eineZeileAlsCollection.Item(6))
Der nächste Abschnitt ist aufwändiger. Dort werden die Informationen zu
Einschränkungen aus dem Eintrag ermittelt, müssen jedoch je nach Wert
in eine eigene Spalte geschrieben werden.
Hierfür werden zuerst alle Einträge mit nur einem Buchstaben überprüft.
Wurde ein Eintrag gefunden, wird der Wert einer Spalte zugewiesen,
hineingeschrieben und das Skript springt zum nächsten Eintrag in der
Textzeile. Wurde jedoch kein Eintrag gefunden, so werden die Einträge mit
zwei Buchstaben überprüft. Wurde ein passender Wert festgestellt, so wird
wie bei einem Buchstaben verfahren. Ansonsten springt das Skript auf die
Überprüfung der Einträge mit drei Buchstaben. Dieser Ablauf wiederholt
sich bis zu Einträgen mit vier Buchstaben bzw. vier Werten.
Skriptauszug:
' Hier beginnt die Überprüfung der Zeile nach Inhalten mit nur
' einem Zeichen.
For j = 5 To eineZeileAlsCollection.Count
einEintrag = trim(eineZeileAlsCollection(j))
attributKennung = Left(einEintrag, 1)
Select Case attributKennung
Case "s"
!Schneekette = True
GoTo Skip
Case "r"
If Len(einEintrag) = 1 Then
!Raststaette = True
GoTo Skip
End If
End Select
' Hier beginnt die Überprüfung der Zeile nach Inhalten mit zwei
' Zeichen.
45
Dokumentation
attributKennung = Left(einEintrag, 2)
Select Case attributKennung
Case "bt"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 2))
!BrueckeTrag = Val(attributInhalt)
GoTo Skip
Case "bs"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 2))
!BrueckeSchrammbord = Val(attributInhalt)
GoTo Skip
End Select
46
Dokumentation
3.5.5.
Attributierung in Rascon, Verknüpfung in ArcView - Zeitaspekt
Das Attributieren der Objekte in Rascon sowie die Verknüpfung der Objekte mit den
Segmenten in Arcview wurde zu Beginn prototypisch für die Seiten 168 und 169 des
TruckerAtlasses von Falk durchgeführt.
Hier eine kurze Auswertung der bearbeiteten Objekte.
Insgesamt
528 Rascon-Objekte
1991 NavTech-Segmente
ø 3,7 NavTech-Segmente/Rascon-Objekt
Themen:
Gewichtsbeschränkung Brücken
24 Rascon-Objekte
25 NavTech-Segmente
ø 1,04 NavTech-Segmente/Rascon-Objekt
Durchfahrtshöhenbeschränkung Brücken
202 Rascon-Objekte
246 NavTech-Segmente
ø 1,2 NavTech-Segmente/Rascon-Objekt
Gefällestrecken (rot+grün)
234 Rascon-Objekte
(219 grün, 15 rot)
986 NavTech-Segmente
ø 4,2 NavTech-Segmente/Rascon-Objekt
47
Dokumentation
kennzeichnungspflichtige Güter
25 Rascon-Objekte
379 NavTech-Segmente
ø 15,2 NavTech-Segmente/Rascon-Objekt
wassergefährdende Güter
13 Rascon-Objekte
136 NavTech-Segmente
ø 10,5 NavTech-Segmente/Rascon-Objekt
gesperrt für KFZ aller Art
0 Rascon-Objekte
0 NavTech-Segmente
ø 0 NavTech-Segmente/Rascon-Objekt
gesperrt für KFZ mehrsprurig
0 Rascon-Objekte
0 NavTech-Segmente
ø 0 NavTech-Segmente/Rascon-Objekt
gesperrt für KFZ > 3,5t
20 Rascon-Objekte
319 NavTech-Segmente
ø 16 NavTech-Segmente/Rascon-Objekt
gesperrt für KFZ über tatsächlich angegebenem Gewicht
48
Dokumentation
4 Rascon-Objekte
94 NavTech-Segmente
ø 23,5 NavTech-Segmente/Rascon-Objekt
gesperrt für KFZ über tatsächlich angegebener Achslast
0 Rascon-Objekte
0 NavTech-Segmente
ø 0 NavTech-Segmente/Rascon-Objekt
Anhand dieser Auswertung kann man erkennen, dass im Schnitt ein Rascon-Objekt
mit ca. 3,7 NavTech-Segmenten verknüpft wird. Die Verknüpfung von Objekten, die
die Sperrung „gesperrt für KFZ über tatsächlich angegebenem Gewicht“ innehaben,
mit den Segmenten ist besonders aufwändig, da pro Objekt ca. 23,5 NavTechSegmente zu verknüpfen sind.
Um den Zeitfaktor der gesamten Verknüpfung in etwa schätzen zu können, muss
man grundsätzlich folgendes beachten:
Während den Verknüpfungen müssen des Öfteren Pausen zur Orientierung in der
Karte eingelegt werden. Vor allem in Ballungsgebieten ist es sehr schwer, sich nur
anhand von NavTech-Linien zu orientieren.
Bei längeren, linienhaften Objekten muss man vor der Verknüpfung zusätzlich den
Verlauf
der
Objekte
auf
den
NavTech-Daten
verfolgen
um
eventuelle
Verwechslungen der Straßen zu vermeiden.
Punktsymbole (Brücken, Unterführungen, punkthafte Gefällestrecken)
-
2 Minuten pro Objekt
Linienhafte Symbole (Gefällestrecken, Sperrstrecken)
-
einfache linienhafte Symbole mit ca. 6 Segmenten
?
ca. 2min 30sek
49
Dokumentation
-
einfache linienhafte Symbole mit ca. 13 Segmenten
?
-
ca. 4 Minuten
zweispurige linienhafte Symbole
?
je nach Länge mindestens die doppelte Zeit der einfachen Symbolen,
also für lange Symbole ca. 8 Minuten
Nach der Bearbeitung der prototypischen Daten musste das gesamte Gebiet der
Bundesrepublik Deutschland verknüpft werden. Das ergab im Endergebnis über
40.000 Datensätze bei geschätzten 16.000 Rascon-Objekten. Wird diese enorme
Anzahl an Objekten mit knappen drei Minuten pro Objekt berechnet, ergibt sich
somit eine reine Bearbeitungszeit von 800 Stunden oder 20 Arbeitswochen á 40
Stunden.
Tatsächlich wurde die Verknüpfung innerhalb von fünf Wochen von zwei Personen
durchgeführt. Diese schnelle Bearbeitung der Daten kann darauf zurückgeführt
werden, dass sich die Orientierung im digitalen Straßennetz mit der Zeit verbesserte
und in den Arbeitsablauf mehr Routine einkehrte.
50
Konzept zur Datenaktualisierung
4.
Konzept zur Datenaktualisierung
4.1.
Allgemeines
Alle Rascon- Daten werden immer in Oracle gespeichert.
Eine eindeutige Objekt- Id ist vorhanden. Die DBF- Dateien der Rascon- Daten
enthalten stets die Geokoordinaten der Objekte. Die aus den Rascon-Daten
erzeugten Shapes sind in Einzel-Shapes für Linien, Punkte, Flächen und Texte
gesplittet.
Eine Aktualisierung der Daten erfolgt je nach Bedarf, jedoch frühestens nach 12
Monaten.
Die NavTech- Daten hingegen werden quartalsweise in Form von Shapes aktualisiert
geliefert. Auch hier ist pro Segment je eine eindeutige ID vorhanden, jedoch sind die
Vergabekriterien nicht bekannt. Eventuell muss bei der Aktualisierung auf die in der
„IdData“- Datenbank vorhandenen Anfangs- und Endkoordinaten der Segmente
zurückgegriffen werden.
4.2.
Benötigte Daten zur Aktualisierung
A ) Rascon-Thema komplett als Shape- Datei bzw. DBF
B) Rascon-Thema nur veränderte bzw. neue Objekte als Shape-Datei bzw.
DBF
C) NavTech-Daten als Shape-Datei bzw. DBF, d.h. streets.shp und streets.dbf
D) Vorjahres Datenbank in Access, d.h. die importierte IdData.txt
E) Vorjahres- NavTech-Daten, d.h. streets.shp
51
Konzept zur Datenaktualisierung
4.3.
Aktualisierung der Rascon- Daten
Bei der Aktualisierung der Rascondaten gibt es drei unterschiedliche Korrekturfälle,
auf welche näher eingegangen werden muss:
(1)
ein Objekt wurde gelöscht
(2)
ein Objekt wurde hinzugefügt
(3)
ein Objekt wurde verändert
Der Lösungsweg für die Aktualisierung der Rascondaten ist aufwändig. Bei jeder
Attributänderung eines Objektes in Rascon muss neben der grafischen Korrektur in
den Rascon-Daten die Information zusätzlich im Textfeld des Rascon-Objekts (zum
Beispiel
einer
Brücke)
Brückensignatur
in
eingetragen
Rascon
werden
erhält
die
(Beispiel:
textliche
Das
Textfeld
Information
über
einer
die
Gewichtsbeschränkung). Diese manuelle Änderung ist als Erweiterung des PrintEndprodukts unumgänglich.
Allgemeingültiger erster Aktualisierungsschritt:
Die in Rascon aktualisierten Objekte können anhand des MapServer-Zeitstempels aus
dem Gesamtdatenbestand extrahiert werden.
Nach dem Extrahieren müssen diese Datensätze in Access importiert werden, um mit
der bereits vorhandenen IdData- Datenbank (D) verglichen zu werden. Hierbei
werden
die
in
beiden
Tabellen
vorhandenen
eindeutigen
IDs
einander
gegenübergestellt.
Zusätzlich zum Import in Access müssen diese neuen Objekte als Shape exportiert
und in ArcView geladen werden.
4.3.1.
Ein Objekt wurde gelöscht
Es existieren Daten in der IdData- Tabelle, die nicht mehr in der Rascon- Tabelle
vorhanden sind. Diese sollen aus der IdData gelöscht werden.
52
Konzept zur Datenaktualisierung
Lösungsansatz per SQL in Access:
1.Abfrage:
SELECT *
FROM alteIdData
WHERE (((alteIdData.RasconID) Not In (Select RasconID from
neueRascon)));
Mit der ersten Abfrage werden alle Spalten aus der alten IdData- Tabelle ausgewählt,
deren RasconIDs nicht in der neuen Tabelle vorhanden sind. Der Name der Abfrage
lautet „Rascon_1“.
2.Abfrage:
DELETE
Rascon_1.*
FROM Rascon_1;
In der zweiten Abfrage werden die Ergebnisse der ersten Abfrage unwiderruflich in
der alten IdData gelöscht.
4.3.2.
Ein Objekt wurde hinzugefügt
4.3.2.1.
Lösungsmöglichkeit 1
Wird festgestellt, dass Daten in der Rascon- Tabelle, jedoch noch nicht in
der IdData (D) vorhanden sind, so werden diese Datensätze entweder in
einer neuen Tabelle gespeichert oder nur markiert.
Lösungsansatz per SQL in Access:
1.Abfrage:
SELECT *
FROM neueRascon
WHERE (((neueRascon.RasconID) Not In
(Select RasconID from alteIdData)));
53
Konzept zur Datenaktualisierung
Mit dieser Abfrage werden, genau umgekehrt wie in 4.3.1, alle Spalten aus
der Rascon-Tabelle ausgewählt, deren RasconIDs nicht in der alten Tabelle
vorhanden sind, und somit neu dazugekommen sein müssen.
Die markierten Datensätze bzw. die Datensätze in der Abfragetabelle
werden per ODBC– Verbindung in ArcView importiert und mit der
Rasconobjekte– Shape (A) verbunden. Die übereinstimmenden Datensätze
werden markiert und zu einem neuen Shape umgewandelt. Nun kann man
alle Rasconobjekte, die ganz neu dazugekommen sind, graphisch
differenziert darstellen und sie dadurch schneller erkennen.
ArcView
Herstellen einer SQL-Verbindung zu
Access
und
Übertragung
der
Abfragetabelle mit den ganz neuen
NavTech-Elementen.
Exportieren und speichern
der neuen Tabelle in AV.
Verbinden der neuen Tabelle
mit der Attributtabelle der
kompletten Rascondaten (A)
Auswahl der hinzugefügten
Daten und Erstellung eines
Shapes mit dieser Auswahl.
Abbildung 4: Ablaufschema für die Aktualisierung mit ganz neuen NavTech- Elementen
Diese Objekte müssen nun von Hand mit NavTech-Segmenten verknüpft
werden.
54
Konzept zur Datenaktualisierung
Die Ergebnisse werden als neue IdData.txt erfasst und in die Vorjahres-AccessDatenbank eingelesen.
Es folgt eine Anleitung zur Verknüpfung in ArcView.
Anleitung zur Verknüpfung in ArcView
Grundsätzliches:
Die obersten Themen im View müssen immer Symbole.shp, Linien.shp und
Streets.shp sein. Symbole.shp und Linien.shp bleiben auch beim Wechsel
in ein anderes NaVTech-Netz im View, lediglich die Themen Streets.shp
(Arbeitsshape!), Majhwys.shp, Sechwys.shp und Railrds.shp werden je
nach Notwendigkeit ausgetauscht. Dringend zu beachten ist hierbei, dass
die Verknüpfung der Rascon- mit den NavTech-Daten immer mit den
Straßendaten aus der Streets.shp durchgeführt wird.
Die Textdatei, in der sämtliche Informationen gespeichert werden, wird
stets unter C:/IdData.txt gesichert.
1. Bei jedem neuen öffnen des Projektes, muss zuerst der Name des Bearbeiters
eingegeben werden. Um den Namen eingeben zu können, benutzt man
entweder die Tastenkombination strg+n oder diesen Button:
2. Sowohl
das
Werkzeug „Objekt auswählen“ aus der Werkzeugleiste als auch das RasconThema, mit welchem man beginnen möchte, müssen aktiviert sein.
3. Jetzt kann das zu verknüpfende Objekt aus entweder Symbole.shp oder
Linien.shp markiert werden. Tastenkombination strg+a oder diesen Button:
4. Daraufhin erscheint eine Liste, aus der man das richtige Thema, passend zum
aktivierten Objekt, auswählen muss. Hat man Schritt 3 korrekt ausgeführt,
markiert man jetzt im NavTech- Thema (hier: immer streets.shp!), das bereits
55
Konzept zur Datenaktualisierung
automatisch aktiviert wurde, das zum Rascon- Objekt
passende NavTech-
Segment und benutzt anschließend den Shortcut strg+a
oder klickt auf:
Auch hier erscheint eine Liste, aus der man jedoch immer
streets.shp auswählen muss.
5. Nun müssen die Informationen im Normalfall nur noch in die Textdatei
geschrieben werden. Dies geschieht mit dem Shortcut strg+w oder diesem
Button:
56
Konzept zur Datenaktualisierung
ArcView
Bei jedem Projektstart:
strg+n oder
Das „Auswahl“- Werkzeug und
das
gewünschte
RasconThema müssen aktiviert sein.
Markierung des Rasconobjektes.
Anschließend strg+a oder
Bei linienhaften Objekten
Wiederholung des Vorgangs.
Thema des markierten Objektes
aus der Liste auswählen.
Markierung
des
passenden
Segmentes in der streets.shp.
Anschließend strg+a oder
Auswahl von streets.shp
aus der Liste.
Schreiben der Informationen
in eine Textdatei mit strg+w
oder
Abbildung 5: Anleitung zur Verknüpfung in ArcView
57
Konzept zur Datenaktualisierung
4.3.2.2.
Lösungsmöglichkeit 2
Um sich den Umweg über Access zu ersparen, gibt es noch eine weitere
Lösungsmöglichkeit. Alle veränderten Rasconobjekte, das heißt alle
Objekte mit geänderten Attributen oder neue Objekte, werden aus dem
Gesamtdatensatz der aktualisierten Trucker-Daten extrahiert und als
separate Shape-Datei abgespeichert. Danach erfolgt in ArcView die
Verknüpfung wie bei der Ersterfassung.
4.3.3.
Ein Objekt wurde verändert
Wurden für die
aktualisiert
Rasconobjekte neue Attribute vergeben, muss die alte IdData
werden.
Hierbei
wird
nicht
der
allgemeingültige
erste
Aktualisierungsschritt genutzt, die neuen Daten werden mit Hilfe eines Visual BasicSkriptes in A ccess bearbeitet.
Das Skript importiert die neue Datei und überprüft, ob es RasconIDs in der IdData
gibt, die auch in der neuen Datei vorhanden sind. Existieren solche doppelten
Einträge, so werden die in der IdData gelöscht. Die restlichen Daten werden an die
Tabelle angehängt.
4.4.
Aktualisierung der NavTech- Daten
Die NavTech- Daten werden quartalsweise im Shape- Format geliefert. Auch hier ist
pro Segment je eine eindeutige ID vorhanden, jedoch sind die Vergabekriterien nicht
bekannt. Eventuell muss bei der Aktualisierung auf die in der „IdData“- Datenbank
vorhandenen Anfangs- und Endkoordinaten der Segmente zurückgegriffen werden.
4.4.1.
Allgemeines
Alte NavTech- Daten zu aktualisieren beziehungsweise neue NavTech- Daten zu
überprüfen verlangt viel Konzentration. Bei den NavTech- Segmenten gibt es in dem
Sinne keine Aktualisierung, sondern vielmehr eine Überprüfung, ob alte NavTechElemente noch vorhanden sind oder ob neue Elemente dazugekommen sind.
58
Konzept zur Datenaktualisierung
Genau wie bei den Rascon- Objekten gibt es auch bei der Aktualisierung der
NavTech- Segmente Fälle, die berücksichtigt werden müssen. Diese sind:
o Ein Objekt in NavTech wurde gelöscht.
o Ein Objekt wurde in NavTech hinzugefügt.
Allgemeingültiger erster Aktualisierungsschritt:
Die Attributtabellen der sowohl neuen (C) als auch alten (E) streets.shp müssen aus
ArcView als Textdatei exportiert werden, um danach in Access bearbeitet werden zu
können. Aufgrund der großen Datenmenge ist es empfehlenswert die für maximal ein
Bundesland bzw. ein Gebiet vorhandenen Straßen zu exportieren. Vorstellbar wäre
auch, die Streets- Daten gestückelt zu exportieren. Für das gebietsweise Exportieren
der Streets spricht außerdem, dass die neuen Daten ebenfalls nur gebietsweise zur
Verfügung stehen.
Nun können beide Textdateien in Access importiert werden, wobei vorher die
Komma-Trennzeichen durch Semikolon ersetzt werden müssen.
ArcView
NavTech-Streets alt
NavTech-Streets neu
Export als Textdatei,
ersetzen der TrennKommata
durch
Semikolons
Access
Import in Access
Abbildung 6: Kurzes Schema zum Import in Access
Nachdem beide Dateien in Access vorhanden sind, müssen diese (per Skript, also
automatisiert) miteinander verglichen werden.
4.4.2.
Ein Objekt in NavTech wurde gelöscht
Wurde im neuen NavTech- Datensatz (C) ein Segment gelöscht, so muss diese
Tabelle mit der Tabelle der bereits verknüpften Segmente (D) verglichen werden.
Alle Einträge, die in der Tabelle der IdData vorkommen, jedoch nicht mehr in der
neuen NavTech- Datei, müssen extra ausgegeben werden und von Hand in ArcView
überprüft werden, da die Objekte entweder nicht mehr vorhanden sind oder sich das
Segment geändert hat bzw. ersetzt wurde.
59
Konzept zur Datenaktualisierung
Diese Überprüfung könnte auch automatisiert ablaufen. Man müsste dafür die
Koordinaten aller Datensätze der neuen NavTech- Datei in ArcView erzeugen und an
die Tabelle anhängen. Wenn man diese Tabelle nun in Access importiert, könnte man
die Koordinaten der neuen Datei mit den Koordinaten der verknüpften Segmente
vergleichen, sofern die ID des Segmentes in der neuen Datei nicht mehr vorhanden
ist. Stellt man dann fest, dass ein Segment wirklich umbenannt wurde, die
Koordinaten jedoch weiterhin übereinstimmen, muss die ID in der alten Datei mit der
ID aus der ganz neuen Datei ersetzt werden.
Da in der IDData- Tabelle nur die NetzID, Richtungsangaben und Koordinaten aus
der NavTech- Datei übernommen wurden, reicht es völlig aus, diese Spalten
miteinander zu vergleichen.
Lösungsansatz per SQL in Access:
NetzID aus NavTech noch vorhanden in IdData
Delete in IdData where NetzID NOT IN NavTech
4.4.3.
Ein Objekt wurde in NavTech hinzugefügt
Wurde zu den NavTech- Segmenten ein neues hinzugefügt, müssen auch hier die
alte und die neue Shape miteinander verglichen werden. Dabei werden die alten
Daten von den neuen Daten „abgezogen“. Übrig bleiben dann noch die Daten, die
ganz neu sind, das bedeutet, dass diese Daten von Hand in ArcView überprüft und
mit den dazugehörigen Rascon- Objekten verknüpft werden müssen. In folgendem
Flussdiagramm wird beschrieben, wie das Ergebnis des Tabellenvergleichs nach
ArcView gelangt.
60
Konzept zur Datenaktualisierung
ArcView
Herstellen einer SQL-Verbindung zu
Access
und
Übertragung
der
Abfragetabelle mit den ganz neuen
NavTech-Elementen.
Exportieren und speichern
der neuen Tabelle in AV.
Verbinden der neuen Tabelle
mit der Attributtabelle der
aktuellen Daten.
Auswahl der hinzugefügten
Daten und Erstellung eines
Shapes mit dieser Auswahl.
Abbildung 7: Anleitung zum korrekten Import der NavTech- Elemente in ArcView
Nachdem mit den ganz neuen Datensätzen ein Shape erstellt wurde, können diese
differenziert dargestellt werden. Es wird davon ausgegangen, dass es keine großen
Veränderungen in den neuen Versionen der NavTech- Daten gibt, so dass bei den
ganz neu dazugekommenen Segmenten von Hand überprüft werden kann, ob sie
gegebenenfalls mit einem Rascon- Element verknüpft werden müssen.
Die Systematik der Verknüpfung ist identisch mit der Anleitung unter 4.3.2.
61
Konzept zur Datenaktualisierung
4.5.
Graphische Darstellung der bereits verknüpften NavTech-
Elemente
Die bereits verknüpften bzw. neuen NavTech- Datensätze sollen in ArcView
besonders hervorgehoben werden, um die manuelle Bearbeitung der neu
dazugekommenen Datensätze zu vereinfachen.
Im ersten Schritt sollten Access und die benötigte Tabelle mit den Daten der
verknüpften Elemente geöffnet sein.
Access
Datenfeldänderung:
Felddatentyp von Text auf Zahl im Feld
NetzID
ArcView
Herstellen einer SQL- Verbindung. Auswählen der
Felder „NetzID“ und „Zeitstempel“ aus der davor
modifizierten Datenbank.
Export der durch die SQL- Abfrage entstandenen
Tabelle.
Import der zuvor exportierten Tabelle.
Verknüpfung der importierten Tabelle, welche die
Id’s der bereits verknüpften NavTech- Elemente
enthält, mit der Attributtabelle des streets- Shapes.
Abfrage in der verknüpften Tabelle: es werden alle
Einträge markiert, die bereits verknüpft worden
sind.
([Zeitstempel] <> „“)
Alle markierten Einträge werden zu einer neuen
Shapefile gewandelt.
Abbildung 8: Schema zur graphischen Darstellung in ArcView
62
Konzept zur Datenaktualisierung
Abbildung 9: Screenshot aus ArcView. Gesonderte Darstellung der neuen Segmente
(türkis)
Die bereits verknüpften digitalen Straßensegmente können zusätzlich noch viel
deutlicher dargestellt werden, indem jedes Segment mit dem dazugehörigen RasconObjekt über eine Linie verbunden wird.
Grundvoraussetzung ist auch hier das Vorhandensein der IDData – Datenbank mit
den Verknüpfungsinformationen, sowie eine ODBC- Verbindung zu eben dieser
Datenbank. Sie wird im Verlauf in ArcView benötigt.
Im ersten Schritt werden über eine ODBC- Verbindung in ArcView die hierfür
benötigten Informationen – die NetzID sowie die RasconID – per SQL- Abfrage in
eine Tabelle in ArcView importiert. Somit hat man jetzt die Informationen darüber,
welche Segmente mit welchen Objekten verknüpft worden sind.
Um herauszufinden, welche Straßensegmente mit Objekten verknüpft wurden, wird
eine neu importierte IdData-Tabelle (Abfrage aus Vorjahres-Access-DB) mit der
Streets- Attributtabelle (C) über die Spalte LinkID (streets.shp) bzw. NetzID
63
Konzept zur Datenaktualisierung
(iddata.dbf) verbunden. Es müssen alle Datensätze, die sowohl eine LinkID als auch
eine RasconID beinhalten, also verknüpft sind, markiert und als Shape exportiert
werden.
In der Attributtabelle dieses neuen Shapes (hier: streets_rascon_bw.shp) werden
danach mit Hilfe des Skriptes „Mittelpunkt_Koord“ die Mittelpunktkoordinaten eines
jeden Segmentes berechnet. Die X- und Y- Werte werden dabei auch in zwei extra
Spalten mit den Namen „Mittelpunkt_X“ und „Mittelpunkt_Y“ an die Tabelle
angehängt. Diese Mittelpunktkoordinaten werden als Startpunkte die späteren Linien
verbinden.
Für jedes Rascon-Shape – also Symbole.shp, Linien.shp sowie Symbole.shp (alles
gesperrt)
und
Linien.shp
(alles
gesperrt)
–
müssen
anschließend
in
den
Attributtabellen mit Hilfe der Skripte „Mittelpunkt_Koord_Rascon“ für Linienobjekte
und „Mittelpunkt_Koord_Rascon_Point“ für die Rascon- Symbolobjekte ebenfalls die
Koordinaten des Mittelpunkts berechnet und in die Tabelle geschrieben werden.
Diese Koordinaten stellen den Endpunkt der Verbindungslinie dar.
Möchte man nun zum Beispiel die Linien zwischen den Straßensegmenten und den
Linienobjekten graphisch darstellen, müssen zuerst die beiden Attributtabellen der
Shapes miteinander verbunden werden. Hierfür klickt man erst auf die Spalte „DB_id“
(Rascon-ID) der Linienobjekt- Tabelle, dann auf die Spalte „RasconID“ der
Streets_Rascon- Tabelle und verbindet die beiden Tabellen anschließend. Jetzt
müssen in dieser erweiterten Streets_Rascon- Tabelle nur noch die Einträge markiert
und als Shape exportiert werden, welche in allen Spalten Eintragungen beinhalten,
das heißt in NetzID, Mittelpunkt_X, Mittelpunkt_Y, RasconID, Rasc_Mittelpunkt_X
und Rasc_Mittelpunkt_Y.
Nachdem die markierten Datensätze als Shape exportiert und im View wieder
geöffnet wurden, muss jetzt nur noch das Skript „LinienZeichnen“ ausgeführt
werden. In diesem Skript wird aus dem jeweils aktiven Thema die Attributtabelle
geöffnet
(hier:
streets_linien_bw),
dort
die
Koordinaten
sowohl
für
den
Anfangspunkt, also die Koordinaten des Mittelpunktes des NavTech- Segmentes, als
64
Konzept zur Datenaktualisierung
auch für den Endpunkt der Linie, die Koordinaten des Mittelpunktes des RasconObjektes, herausgesucht und mit Hilfe dieser Koordinaten dann die Linie gezeichnet.
Alle Linien werden als Grafiken dem View hinzugefügt, sind daher immer sichtbar
und können, wenn sie markiert worden sind, durch einfaches Drücken der EntfernenTaste gelöscht werden.
65
Konzept zur Datenaktualisierung
ArcView
Erstellen einer ODBC- Verbindung zu Access.
Abfrage der benötigten Daten aus Access per
SQL- Abfrage. Speichern dieser Daten in
einer neuen Tabelle.
Exportieren der neuen Tabelle (IdData) bei
geöffneter SQL- Verbindung. Sofortiges
Importieren dieser Tabelle in das Projekt.
Verbinden der Tabellen IdData und
Streets über das gemeinsame Feld
NetzID bzw. LinkID. Shape- Export der
übereinstimmenden
Felder.
Wichtig:
Streets- Tabelle ist Zieltabelle!
In neuer Streets_rascon – Tabelle mit Hilfe
von
Skript
„Mittelpunkt_Koord“
die
Mittelpunktskoordinaten berechnen.
In jeder Rascon – Attributtabelle, die
verbunden werden soll, mit Hilfe der Skripte
„Mittelpunkt_Koord_Rascon“
und
„Mittelpunkt_Koord_Rascon_Point“
Mittelpunktskoordinaten berechnen.
Verbinden der Streets_rascon – Tabelle mit der
gewünschten Rascon – Tabelle über das Feld
DbID bzw. RasconID. Zieltabelle ist hierbei immer
die Streets_rascon – Tabelle.
Die übereinstimmenden Datensätze werden
markiert und als Shape exportiert.
Anwenden des Skriptes „LinienZeichnen“ auf das
neu erzeugte Shape.
Abbildung 10: Anleitung zur graphischen Verbindung von Objekten mit den NavTechSegmenten
66
Konzept zur Datenaktualisierung
4.5.1.
Skripte zur Datenaktualisierung
Skript „Mittelpunkt_Koord“
'-------------------- Mittelpunkt_Koord --------------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 20.11.2003
'
-
'
Die Mittelpunktkoordinaten werden berechnet und
in die Tabelle geschrieben.
'----- Interaktion mit folgenden Skripten:
'------------------------------------------------------------------------
theView = av.FindDoc("View1")
'-----------------------------------------------------------------------' Das erste in der Liste stehende aktive Thema wird "geholt", dessen FTab
' geöffnet und nach dem Feld "Shape" gesucht. Außerdem wird die FTab
' editierbar gesetzt.
'------------------------------------------------------------------------
theTheme = theView.GetActiveThemes.Get(0)
theFTab = theTheme.GetFTab
theShapeField = theFTab.FindField("Shape")
theFTab.SetEditable(true)
'-----------------------------------------------------------------------' Es wird überprüft, ob die Spalten "Mittelpunkt_X" und "Mittelpunkt_Y"
' bereits existieren. Existieren sie bereits, so wird gefragt, ob die
' Spalten überschrieben werden sollen.
'------------------------------------------------------------------------
MittelpunktX_exists = (theFTab.FindField("Mittelpunkt_X") = NIL).Not
MittelpunktY_exists = (theFTab.FindField("Mittelpunkt_Y") = NIL).Not
if (MittelpunktX_exists or MittelpunktY_exists) then
if (MsgBox.YesNo("Feld überschreiben?","Das Feld Mittelpunkt existiert
bereits!", false)) then
if (MittelpunktX_exists) then
theFTab.RemoveFields({theFTab.FindField("Mittelpunkt_X")})
67
Konzept zur Datenaktualisierung
end
if (MittelpunktY_exists) then
theFTab.RemoveFields({theFTab.FindField("Mittelpunkt_Y")})
end
else
exit
end
end
'---------------------------------------------------------------------' Existieren die Spalten noch nicht, so werden sie erzeugt.
' Außerdem wird für jeden Eintrag in der Spalte theShapeField der X und Y' Wert an der Stelle 50%, also im Mittelpunkt des Objektes, berechnet und
' in die neuen Spalten hineingeschrieben.
'-----------------------------------------------------------------------
mpunktX = Field.Make("Mittelpunkt_X", #FIELD_DECIMAL, 25,5)
mpunktY = Field.Make("Mittelpunkt_Y",#FIELD_DECIMAL, 25,5)
theFTab.AddFields({mpunktX,mpunktY})
for each rec in theFTab
mpkt = theFTab.ReturnValue(theShapeField, rec)
mipkt = mpkt.Along(50)
mipktX = mipkt.GetX
mipktY = mipkt.GetY
theFTab.SetValue(mpunktX, rec, mipktX)
theFTab.SetValue(mpunktY, rec, mipktY)
end
Skript „Mittelpunkt_Koord_Rascon“
'-------------------- Mittelpunkt_Koord_Rascon -------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 20.11.2003
'
'
-
Die Mittelpunktkoordinaten werden berechnet und
in die Tabelle geschrieben.
'----- Interaktion mit folgenden Skripten:
'------------------------------------------------------------------------
68
Konzept zur Datenaktualisierung
theView = av.FindDoc("View1")
'-----------------------------------------------------------------------' Das erste in der Liste stehende aktive Thema wird "geholt", dessen FTab
' geöffnet und nach dem Feld "Shape" gesucht. Außerdem wird die FTab
' editierbar gesetzt.
'------------------------------------------------------------------------
theTheme = theView.GetActiveThemes.Get(0)
theFTab = theTheme.GetFTab
theShapeField = theFTab.FindField("Shape")
theFTab.SetEditable(true)
'-----------------------------------------------------------------------' Es wird überprüft, ob die Spalten "Rasc_Mittelpunkt_X" und
"Rasc_Mittelpunkt_Y" bereits
' existieren. Existieren sie bereits, so wird gefragt, ob die Spalten
überschrieben
' werden sollen.
'------------------------------------------------------------------------
MittelpunktX_exists = (theFTab.FindField("Rasc_Mittelpunkt_X") = NIL).Not
MittelpunktY_exists = (theFTab.FindField("Rasc_Mittelpunkt_Y") = NIL).Not
if (MittelpunktX_exists or MittelpunktY_exists) then
if (MsgBox.YesNo("Feld überschreiben?","Das Feld Mittelpunkt existiert
bereits!", false)) then
if (MittelpunktX_exists) then
theFTab.RemoveFields({theFTab.FindField("Rasc_Mittelpunkt_X")})
end
if (MittelpunktY_exists) then
theFTab.RemoveFields({theFTab.FindField("Rasc_Mittelpunkt_Y")})
end
else
exit
end
end
'------------------------------------------------------------------------' Existieren die Spalten noch nicht, so werden sie erzeugt.
69
Konzept zur Datenaktualisierung
' Außerdem wird für jeden Eintrag in der Spalte theShapeField der X und Y' Wert an der Stelle 50%, also im Mittelpunkt des Objektes, berechnet und
' in die neuen Spalten hineingeschrieben.
'------------------------------------------------------------------------
mpunktX = Field.Make("Rasc_Mittelpunkt_X", #FIELD_DECIMAL, 25,5)
mpunktY = Field.Make("Rasc_Mittelpunkt_Y",#FIELD_DECIMAL, 25,5)
theFTab.AddFields({mpunktX,mpunktY})
for each rec in theFTab
mpkt = theFTab.ReturnValue(theShapeField, rec)
mipkt = mpkt.Along(50)
mipktX = mipkt.GetX
mipktY = mipkt.GetY
theFTab.SetValue(mpunktX, rec, mipktX)
theFTab.SetValue(mpunktY, rec, mipktY)
end
Das Skript „Mittelpunkt_Koord_Rascon_Point“ unterscheidet sich von dem
Skript „Mittelpunkt_Koord_Rascon“ nur in den letzten sechs Zeilen. In diesem Skript
soll der Mittelpunkt eines Symbols berechnet werden. Da die Symbole jedoch keine
Länge haben, sondern nur punkthaft dargestellt werden, müssen die Koordinaten des
Punktes berechnet werden und nicht die Koordinaten der Strecke an der Stelle 50%.
Dieses Skript ist vollständig im Anhang zu finden.
for each rec in theFTab
mpkt = theFTab.ReturnValue(theShapeField, rec)
mipktX = mpkt.GetX
mipktY = mpkt.GetY
theFTab.SetValue(mpunktX, rec, mipktX)
theFTab.SetValue(mpunktY, rec, mipktY)
end
Skript „LinienZeichnen“
'-------------------- LinienZeichnen ------------------------------------'------------------------------------------------------------------------'----- Autor: Daniela Vekonj
70
Konzept zur Datenaktualisierung
'----- letzte Änderung: 20.11.2003
'
-
Es werden Linienobjekte erzeugt, die ihren Anfangs-
'
punkt im Mittelpunkt des NavTech- Segmentes und
'
den Endpunkt im Mittelpunkt des Rascon- Objektes haben.
'
Die Geometrien werden als Graphiken dem View hinzugefügt.
'----- Interaktion mit folgenden Skripten:
'------------------------------------------------------------------------
SymbolFenster = av.GetSymbolWin
SymbolFenster.Open
theView = av.FindDoc("View1")
theTheme = theView.GetActiveThemes.Get(0)
theFTab = theTheme.GetFTab
'-----------------------------------------------------------------------' Die Koordinatenfelder werden gesucht und deren Werte in Variablen
' gespeichert. Anschließend werden die Grafiklinien mit dem angegebenen
' Anfangs- und Endpunkt gezeichnet.
'------------------------------------------------------------------------
for each rec in theFTab
StreetX = theFTab.FindField("Mittelpunkt_X")
valStreetX = theFTab.ReturnValue(StreetX, rec)
StreetY = theFTab.FindField("Mittelpunkt_Y")
valStreetY = theFtab.ReturnValue(StreetY, rec)
RascX = theFTab.FindField("Rasc_Mittelpunkt_X")
valRascX = theFTab.ReturnValue(RascX, rec)
RascY = theFTab.FindField("Rasc_Mittelpunkt_Y")
valRascY = theFTab.ReturnValue(RascY, rec)
theView = av.FindDoc("View1")
l = Line.Make(valStreetX@valStreetY, valRascX@valRascY)
ls = graphicShape.make(l)
theView.getgraphics.add(ls)
End
MsgBox.Info("Fertig!","Ende")
71
Konzept zur Datenaktualisierung
Abbildung 11: Screenshot aus ArcView. Die Verbindungen zwischen Objekt und Segment
sind rot dargestellt.
72
Konzept zur Datenaktualisierung
Abbildung 12: Screenshot aus ArcView. Die Verbindungen zwischen Objekt und Segment
sind rot dargestellt.
73
Bewertung und Ausblick
5.
Bewertung und Ausblick
5.1
Bewertung
Um eine automatisierte Geocodierung zur Aktualisierung der Daten hinsichtlich der
Wirtschaftlichkeit des Umsetzungsverfahrens zu bewerten, müssen viele Faktoren in
Betracht gezogen werden.
Eine automatisierte Geocodierung kann grundsätzlich nur dann vorgenommen
werden, wenn die Daten, die auf ein Straßennetz übertragen werden sollen,
zusätzliche Straßeninformationen, wie Straßennamen oder Straßenbezeichnungen,
besitzen. Sind diese Zusatzinformationen vorhanden, so ist eine automatisierte
Geocodierung sowohl für die Erstbearbeitung als auch für die Aktualisierung von
Daten gegenüber der manuellen Bearbeitung auf Grund ihrer Wirtschaftlichkeit sehr
empfehlenswert. So kann innerhalb kürzester Zeit eine große Anzahl von Objekten
geocodiert werden, was bei manueller „geocodierung“ in derselben Zeit nicht
machbar ist.
Andererseits ist zu bedenken, dass eine automatisierte Geocodierung nicht immer
angewandt werden kann, da oft die wichtigen Zusatzinformationen fehlen – wie in
diesem Projekt. Hierfür muss eine andere Möglichkeit der Zuordnung vorhanden sein.
Ferner ist eine automatisierte Ausführung nicht immer der manuellen Verknüpfung
vorzuziehen, da sie unter anderem große Fehlerquellen aufweisen kann, wenn die
Automatisierung zum Beispiel Besonderheiten von Objekten nicht berücksichtigt und
nach der Geocodierung dann zusätzlich tausende von Objekten von Hand überprüft
werden müssen. Dieses „Nachbearbeiten“ macht die automatisierte Geocodierung
nicht wirtschaftlicher als die manuelle Verknüpfung
Aufgrund dieser Tatsachen ist das automatisierte Verfahren im aktuellen Zustand
meiner Meinung nach weder wirtschaftlicher noch herausragender als die manuelle
Bearbeitung. Da den Datensätzen der Rascon-Objekte im Moment wichtige
Informationen
zur
korrekten
Ausführung
einer
Geocodierung
fehlen,
wird
angezweifelt, dass hier eine automatisierte Geocodierung grundsätzlich durchgeführt
werden könnte. Bei einer manuellen Bearbeitung wären diese Informationen nicht
notwendig für die korrekte Durchführung. Ferner wäre die Möglichkeit einer großen
74
Bewertung und Ausblick
Fehlerquelle durch das manuelle „Anfassen“ eines jeden Objektes im Vergleich zur
automatisierten Ausführung gebannt.
Stellt man also die automatisierte Geocodierung der manuellen Bearbeitung im
Hinblick auf die Wirtschaftlichkeit der Umsetzung gegenüber, so ist erkennbar, dass
die automatisierte Umsetzung zwar schneller durchgeführt werden kann, auftretende
Fehler jedoch ebenfalls von Hand überprüft werden müssen. Im Vergleich dazu
nimmt die manuelle Umsetzung mehr Zeit in Anspruch, allerdings ist das Auftreten
von Fehlerquellen hier reduzierter.
5.2
Ausblick
In der vorliegenden Arbeit wurden Daten, die bisher nur in einem Printprodukt zur
Verfügung standen, attributiert, mit einem digitalen, routingfähigen Straßennetz
verknüpft und anschließend in Access importiert.
Es wäre denkbar, diese hier angewandte manuelle Lösung der Verknüpfung
automatisiert ablaufen zu lassen, sofern die Objekte noch mehr Informationen
beinhalten, welche die Durchführung erst ermöglichen.
Der vollständige Datensatz in Access kann für Routinganwendungen genutzt werden,
die speziell für Fernfahrer interessant sein könnten. Aufbauend auf diesen
Anwendungen
können
zukünftig
noch
mehr
Daten
wie
Grenzstellen
oder
Gefällestrecken aus dem Printprodukt in das Routing übernommen werden und
dadurch dem Nutzer den größtmöglichen Informationsumfang über die gewünschte
Route gewährleisten.
75
Quellennachweis
6.
Quellennachweis
6.1
Printmedien
BILL, Ralf (1999): Grundlagen der Geoinformationssysteme. Band 2: Analysen,
Anwendungen und neue Entwicklungen. 2. völlig neubearbeitete und erweiterte
Auflage. Wichmann, Heidelberg.
BUKOVAC, Robert (2001): Entwicklung, Implementierung und Test von Verfahren zur
automatischen
Georeferenzierung
von
linienhaften
Objekten
in
digitalen
Straßenkarten. Diplomarbeit.
CS
COMPUTER
DOBERENZ ,
(1999): Rascon für Windows – Version 3.56 – Handbuch.
Walter
u.
Thomas
KOWALSKI (2000):
Microsoft?
Access
97
–
Programmierung. Überblick, Rezepte und Lösungen für den professionellen AccessProgrammierer
unter
Windows
95
und
Windows
NT.
Microsoft
Press,
Unterschleißheim.
ESRI (1996): AvenueTM – Customization and Application Development for ArcView?
GIS. ESRI, Redlands, USA.
ESRI (1998): ESRI Shapefile Technical Description. An ESRI White Paper.
GÖPFERT, Wolfgang (1991): Raumbezogene Informationssysteme; Grundlagen der
integrierten Verarbeitung von Punkt-, Vektor- und Rasterdaten, Anwendungen in
Kartographie, Fernerkundung und Umweltplanung. 2. Auflage. Wichmann, Karlsruhe.
GRÖGER, Gerhard (2000): Modellierung raumbezogener Objekte und Datenintegrität
in GIS. Wichmann, Heidelberg.
76
Quellennachweis
HAKE, Günter, GRÜNREICH, Dietmar (1994): Kartographie. 7., völlig neu bearbeitete
und erweiterte Auflage. de Gruyter, Berlin, New York.
HERTER,
Michael,
HÖCK,
Michael
u.
Michael
JACOBI
(1999):
AvenueTM
–
Programmierung in ArcView? GIS. Herter, Höck, Jacobi, Freising.
LIEBIG, Wolfgang (2001): Desktop-GIS mit ArcView GIS: Leitfaden für Anwender. 3.,
überarbeitete Auflage. Wichmann, Heidelberg.
LONGLEY, Paul, GOODCHILD, Michael, MAGUIRE, David, RHIND, David (2001):
Geographic Information Systems and Science. John Wiley & Sons, LTD. Chichester.
MISGELD, Wolfgang D. (1991): ORACLE für Profis. Hanser, München, Wien.
MUNZ (2003): Dokumentation zur Geocodierung und Qualität der Geokoordinaten.
Falk Marcopolo Interactive, Kemnat.
SAURER, Helmut, BEHR, Franz-Josef (1997): Geographische Informationssysteme:
eine Einführung; mit 31 Tabellen im Text. Wissenschaftliche Buchgesellschaft,
Darmstadt.
SCHREIER , Gunter (1993): SAR geocoding: data and systems. Wichmann, Karlsruhe.
WILLIAMS, Jonathan: GIS processing of geocoded satellite data. Springer-Verlag
Berlin, Heidelberg, New York.-
77
Quellennachweis
6.2
Online-Medien
Die letzte Überprüfung aller im Folgenden aufgeführter URLs auf Funktionalität
erfolgte im Januar 2004.
A NUVA : ArcView-Forum. www.anuva.de
DEUTSCHE GVZ-G ESELLSCHAFT : Vorteile von GVZ. www.gvz-org.de/vorteile.htm
ESRI SUPPORT CENTER : ArcView Forum. forums.esri.com
GOODWIN, Cecil, GORDON, Stephen, SIEGEL, David: Reinterpreting the location
referencing problem: a protocol approach.
//itsdeployment.ed.ornl.gov/spatial/document/html/gis_tcg.html .14.11.2003, 14Uhr.
LEXIKON: http://www.net-lexikon.de/Microsoft-Access.html
MEIER , Robert: ArcView and SQL Connections. www.mygis.com/AVOracle.htm
RASCON: Digitale Kartographie, Internet-Info-Systeme für Landkarten im Internet.
http://www.rascon.de
STAATLICHES A MT FÜR UMWELT U ND NATUR LÜBZ :
?
Verbindung ArcView – Access 2000. www.staun-luebz.mvnet.de
?
Verbindung MS Access – ArcView.
www.staun-luebz.mvnet.de/pages/AVTipps/access.htm
?
Verwendung einer zentralen ODBC-Datenbank.
www.staun-luebz.mvnet.de/pages/AVTipps/odbc.htm
VBA: http://www.rrzn.uni-hannover.de/Dokumentation/Handbuecher/VBA.html
78
Anhang
Anhang
I. Skripte
ChangeKoord
'-------------------- ChangeKoord ---------------------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 30.09.2003
'
- Die Anfangs- und Endkoordinaten des Segmentes werden
'
angezeigt. Man kann danach wählen, ob man die Reihenfolge
'
so belassen will oder ob man sie
umkehren möchte.
'----- Interaktion mit folgenden Skripten:
'------------------------------------------------------------------------'----------------------------------------------------------------' Die Infobox mit den Koordinaten wird erzeugt. Hierfür müssen die
' Koordinaten in einer Liste gespeichert werden, damit sie unter' einander angezeigt werden könne.
'----------------------------------------------------------------Anfangskoord = _startx.AsString ++ _starty.AsString
Endkoord = _endx.AsString ++ _endy.AsString
aeList = {Anfangskoord,Endkoord}
myString = ""
For each i in aeList
myString = myString + NL + i.AsString
myString.BasicTrim(NL,"")
End
MsgBox.Info(mystring,"Koordinaten")
'----------------------------------------------------------------' Es wird eine Auswahlliste erstellt. Man kann auswählen, ob man
' die Richtung beibehalten oder umkehren möchte. In beiden Fällen
' wird der Variablen _Richtung ein Wert zugewiesen. Möchte man der
' Variablen jedoch keinen Wert zuweisen und einfach abbrechen, so
' klickt man einfach auf „abbrechen“.
'----------------------------------------------------------------AuswahlListe = {"Richtung beibehalten","Richtung umkehren"}
Auswahl = MsgBox.ListasString(AuswahlListe,"Bitte auswählen","Auswahl")
if (Auswahl = NIL) then
Msgbox.info("Der Vorgang wurde abgebrochen","Abbruch")
elseif (Auswahl = "Richtung beibehalten") then
_Richtung = (";dir1")
elseif (Auswahl = "Richtung umkehren") then
_Richtung = (";dir1")
startx = _startx
starty = _starty
endx = _endx
endy = _endy
'---------------------------------------------------------------' Hier werden die Koordinaten umgekehrt. _startx wird zu endx und
' _endx zu startx. Schließlich wird wieder eine Liste generiert,
79
Anhang
' die anschließend in einer Infobox zur Überprüfung ausgegeben
' wird.
'---------------------------------------------------------------_startx
_starty
_endx =
_endy =
= endx
= endy
startx
starty
Anfangskoord = _startx.AsString ++ _starty.AsString
Endkoord = _endx.AsString ++ _endy.AsString
aeList = {Anfangskoord,Endkoord}
myString = ""
For each i in aeList
myString = myString + NL + i.AsString
myString.BasicTrim(NL,"")
End
MsgBox.Info(mystring,"Koordinaten")
end
id_uebergabe
'-------------------- id_uebergabe --------------------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 02.10.2003
'----- Interaktion mit folgenden Skripten: tableclose, KoordinatenT, '
KoordinatenFB
'
- Aufuf durch STRG+a
'-------------------------------------------------------------------------
'---------------------------------------------------------------' Es wird überprüft, ob die Variable „_Name“ bereits ein Wert
' zugewiesen wurde. Wenn nicht, wird das Skript „Username“ erneut
' aufgerufen und ausgeführt.
'---------------------------------------------------------------if (_name = NIL) then
MsgBox.Info("Bitte geben Sie zuerst Ihren Benutzernamen ein!",
"Eingabe erwünscht")
av.Run("Username",NIL)
end
Themenliste = {"Symbole.shp","Linien.shp","streets.shp"}
Thema = msgbox.listAsString(Themenliste,"Bitte wählen Sie das gewünschte
Thema aus: ","Themen")
theView = av.GetactiveDoc
for each t in theView.getthemes
t.setactive(FALSE)
end
if (Thema = "Symbole.shp") then
ThemaSymbol = theView.FindTheme("Symbole.shp")
Themasymbol.setactive(TRUE)
elseif (Thema = "Linien.shp") then
ThemaLinien = theView.FindTheme("Linien.shp")
80
Anhang
ThemaLinien.setactive(TRUE)
elseif (Thema = "streets.shp") then
ThemaStreets = theView.FindTheme("streets.shp")
ThemaStreets.setactive(TRUE)
elseif (Thema = NIL) then
MsgBox.Info("Sie müssen erst ein Thema auswählen!",
"Thema wählen")
exit
end
'------------------------------------------------------------------------' Die Tabelle des aktiven Themas wird aufgerufen. Ist sie nicht schon
' aktiv, so wird sie erst noch aktiv gesetzt
'------------------------------------------------------------------------theView = av.GetActiveDoc
myVView = theView.GetActiveThemes
for each t in myVView
if (t.HasTable) then
t.EditTable
end
end
'---------------------------------------------------------------' Es wird die Virtuelle Tabelle (VTab) des aktiven Dokumentes
' aufgerufen, also die VTab der Attributtabelle. Felder
' werden gesucht. Die Werte, die in den Feldern stehen,
' werden in globalen Variablen gespeichert.
'---------------------------------------------------------------myVTab = av.GetActiveDoc.GetVTab
Feld1 = myVTab.FindField("DB_id")
Feld2 = myVTab.FindField("Link_id")
Feld3 = myVTab.FindField("dir_travel")
Feld4 = myVTab.FindField("Infotext")
if (Feld1 = NIL) then
'MsgBox.Info("keine DB-ID","DB-ID")
else
_DBID = myVTab.ReturnValueString(Feld1,
myVTab.GetSelection.GetNextSet(-1))
'MsgBox.Info(_DBID,"DB_id")
if (Feld4 = NIL) then
MsgBox.Info("Das Feld ist leer!","Leer")
else
_Infotext = myVTab.ReturnValueString
(Feld4,myVTab.GetSelection.GetNextSet(-1))
'msgbox.info(_Infotext,"Infotext")
end
for each t in myVView
t.ClearSelection
end
end
theView = av.GetProject.FindDoc("View1")
theView.getwin.activate
Themenliste = av.GetActiveDoc
81
Anhang
for each t in Themenliste.getthemes
t.setactive(FALSE)
end
Streetsthema = Themenliste.FindTheme("streets.shp")
Streetsthema.setactive(TRUE)
if (Feld2 = NIL) then
'MsgBox.Info("keine Link-ID","Link-ID")
else
_LinkID = myVTab.ReturnValueString(Feld2,
myVTab.GetSelection.GetNextSet(-1))
'MsgBox.Info(_LinkID,"LINK_ID")
end
if (Feld3 = NIL) then
'MsgBox.Info("Das Richtungsfeld ist leer!","Leer")
else
Richtung = myVTab.ReturnValueString(Feld3,
myVTab.GetSelection.GetNextSet(-1))
if (Richtung = "T") then
av.run("KoordinatenT",NIL)
_Richtung = (";dir1")
elseif (Richtung = "B") then
av.run("KoordinatenFB",NIL)
_Richtung =("")
elseif (Richtung = "F") then
av.run("KoordinatenFB",NIL)
_Richtung = (";dir1")
elseif (Richtung = NIL) then
MsgBox.Info(Richtung,"Richtung")
end
end
'------------------------------------------------------------------------' Das Skript "tableclose" wird aufgerufen.
'------------------------------------------------------------------------av.run("tableclose", NIL)
koordinatenfb
'-------------------- KoordinatenFB -------------------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 29.09.2003
'
- die Koordinaten für die ausgewählte Polylinie
'
werden aufgenommen und in globalen Variablen "gemerkt".
'----- Interaktion mit folgenden Skripten: id_uebergabe
'------------------------------------------------------------------------theView = av.FindDoc("View1")
theTheme = theView.GetActiveThemes.Get(0)
theFTab = theTheme.GetFTab
theShapeField = theFTab.FindField("Shape")
'------------------------------------------------------------------------' Der Wert, der im Feld "Shape" steht, wird zurückgegeben.
'-------------------------------------------------------------------------
82
Anhang
val = theFTab.ReturnValue(theShapeField, theFTab.GetSelection.GetNextSet(1))
'---------------------------------------------------------------' Gibt einen Punkt zurück, der bei den angegebenen Prozent auf der
' Polylinie liegt. Der Anfangspunkt liegt also bei Null Prozent,
' der Endpunkt bei 100 Prozent.
'---------------------------------------------------------------startp = val.Along(0)
endp = val.Along(100)
'------------------------------------------------------------------------' Jetzt müssen die globalen Variablen definiert werden, die im
' Skript "writetxt" wieder gebraucht werden.
'------------------------------------------------------------------------_startx
_starty
_endx =
_endy =
= startp.GetX
= startp.GetY
endp.GetX
endp.GetY
'------------------------------------------------------------------------' Kurzer Check, ob auch wirklich die richtigen Koordinaten aufgenommen
' wurden <optional>.
'------------------------------------------------------------------------Liste = {_startx,_starty,_endx,_endy}
MsgBox.ListAsString(Liste,"das sind die Koordinaten","KoordinatenFB")
koordinatent
'-------------------- koordinatenT ---------------------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 29.09.2003
'
- die Koordinaten für die ausgewählte Polylinie
'
werden aufgenommen und in globalen Variablen "gemerkt".
'
- Besonderheit hierbei: die Anfangs- und Endkoordinaten werden
'
miteinander "vertauscht", da in der dir_travel "T" vermerkt war.
'----- Interaktion mit folgenden Skripten: id_uebergabe
'-------------------------------------------------------------------------theView = av.FindDoc("View1")
theTheme = theView.GetActiveThemes.Get(0)
theFTab = theTheme.GetFTab
theShapeField = theFTab.FindField("Shape")
'------------------------------------------------------------------------' Der Wert, der im Feld "Shape" steht, wird zurückgegeben.
'------------------------------------------------------------------------val = theFTab.ReturnValue(theShapeField, theFTab.GetSelection.GetNextSet(1))
'---------------------------------------------------------------' Gibt einen Punkt zurück, der bei den angegebenen Prozent auf der
' Polylinie liegt. Der Anfangspunkt liegt also bei 100 Prozent,
' der Endpunkt bei Null Prozent. Dies wurde vertauscht, da die
' Information zur Richtung „Entgegen der Fahrtrichtung“ lautet.
'----------------------------------------------------------------
83
Anhang
startp = val.Along(100)
endp = val.Along(0)
'------------------------------------------------------------------------' Jetzt müssen die globalen Variablen definiert werden, die im
' Skript "writetxt" wieder gebraucht werden.
'------------------------------------------------------------------------_startx
_starty
_endx =
_endy =
= startp.GetX
= startp.GetY
endp.GetX
endp.GetY
'---------------------------------------------------------------' Kurzer Check, ob auch wirklich die richtigen Koordinaten
' aufgenommen wurden. Hierfür werden die soeben erzeugten
' Koordinaten in einer Messagebox ausgegeben.
'---------------------------------------------------------------Liste = {_startx,_starty,_endx,_endy}
MsgBox.ListAsString(Liste,"das sind die Koordinaten","Koordinaten")
tableclose
'-------------------- tableclose ----------------------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 04.09.2003
'
- die beiden Attributtabellen der Themen werden geschlossen
'
- Vorsicht: Namen sind an die Tabellen angepasst
'----- Interaktion mit folgenden Skripten: - Aufruf durch id_uebergabe
'------------------------------------------------------------------------'--------------------------------------------------------------' Jede mögliche offene Tabelle wird namentlich im Projekt gesucht
' und anschließend geschlossen.
'--------------------------------------------------------------Tabelle = av.GetProject
Tabellen = Tabelle.finddoc("Attribute von Linien.shp")
Tabellen2 = Tabelle.finddoc("Attribute von Majhwys.shp")
Tabellen3 = Tabelle.finddoc("Attribute von Sechwys.shp")
Tabellen4 = Tabelle.finddoc("Attribute von Symbole.shp")
Tabellen5 = Tabelle.finddoc("Attribute von Streets.shp")
if (Tabellen = NIL) then
else
Tabellen.getwin.close
end
if (Tabellen2 = NIL) then
else
Tabellen2.getwin.close
end
if (Tabellen3 = NIL) then
else
Tabellen3.getwin.close
end
84
Anhang
if (Tabellen4 = NIL) then
else
Tabellen4.getwin.close
end
if (Tabellen5 = NIL) then
else
Tabellen5.getwin.close
end
username
'-------------------- username ------------------------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 01.10.2003
'
- der Name des Bearbeiters wird in einer globalen Variablen
'
gespeichert
'----- Interaktion mit folgenden Skripten:
- Aufruf durch
'------------------------------------------------------------------------' Öffnen eines Eingabefensters
_Name = MsgBox.Input("Bitte geben Sie Ihren Benutzernamen hier ein.",
"Eingabe","")
'------------------------------------------------------------------------' so lange in das Textfeld des Eingabefensters nichts eingegeben
' wird, erscheint das Errorfenster
'------------------------------------------------------------------------while (_Name = NIL)
MsgBox.Error("Bitte geben Sie Ihren Namen ein!","Eingabe")
_Name = MsgBox.Input("Bitte geben Sie Ihren Benutzernamen hier
ein.","Eingabe","Ihr Name")
end
writetxt
'-------------------- Writetxt ------------------------------------------'----- Autor: Daniela Vekonj
'----- letzte Änderung: 23.09.2003
'
- es wird überprüft, ob die Datei bereits vorhanden ist.
'
- Die Richtung wird abgefragt und in den Daten-String eingefügt
'----- Interaktion mit folgenden Skripten:
- Aufruf durch STRG+w
'------------------------------------------------------------------------'------------------------------------------------------------------------' Die globalen Variablen werden Variablen zugewiesen.
'------------------------------------------------------------------------DBID = _DBID
LinkID = _LinkID
startx = _startx.asString
starty = _starty.asString
endx = _endx.asString
endy = _endy.asString
Infotxt = _Infotext
Richtung = _Richtung
name = ("n"+_Name)
85
Anhang
newfile=Filename.Make("C:\IDdata.txt")
newfileexists=File.Exists(newfile)
'MsgBox.info(newfileexists.asString,"test")
'----------------------------------------------------------------' Existiert die Datei noch nicht, so wird sie neu angelegt und
' virtuell geöffnet. Existiert sie bereits, wird der Cursor an
' das Ende der Datei gestellt und alles, das hineingeschrieben
' werden soll, wird hinten angefügt.
'----------------------------------------------------------------if (newfileexists = false) then
lf = LineFile.Make(newfile, #FILE_PERM_WRITE )
lf.WriteElt(DBID+";"+LinkID+";"+startx+";"+starty+";
"+endx+";"+endy+";"+Infotxt+Richtung+";"+name)
lf.Close
else
lf = LineFile.Make(newfile,#FILE_PERM_MODIFY)
lf.gotoend
lf.WriteElt(DBID+";"+LinkID+";"+startx+";"+starty+";
"+endx+";"+endy+";"+Infotxt+Richtung+";"+name)
lf.close
end
theView = av.GetProject.FindDoc("View1")
for each t in theView.GetThemes
.ClearSelection
end
86
Anhang
II. VBA-Skripte aus Access
TXTImport
Public Sub TXTImport()
'Import der TextDatei
Dim TXTDatei As String 'eine Textdatei die eingelesen werden soll
Dim alleZeilen(), Tabelle, SQLValue, eineZeile As String
Dim zaehler, DSMax, i, j As Long
'alles Zählervariablen
Dim db As Database
Dim rsTabelle As Recordset
Dim eineZeileAlsCollection As New Collection
Dim einEintrag As String
Dim einPunkt As String 'wird die Textdarstellung eines Punktes aus ArcView
beeinhalten ( Point: 7.143 51.4271 )
Dim xWert, yWert As String
Dim punktColl As New Collection
Dim attributKennung As String
Dim attributInhalt As Variant
On Error GoTo Fehler
TXTDatei = "C:\IDData.txt"
Tabelle = "Trucker2NavTech"
Set db = CurrentDb
SQLValue = "SELECT * FROM " & Tabelle & " ;"
Set rsTabelle = db.OpenRecordset(SQLValue)
'------------------------------------------------------------------------'TXT-Datei öffnen, Zeilen werden in ein String-Array gelesen
'und anschliessend gesplittet
'------------------------------------------------------------------------Open TXTDatei For Input As 1
zaehler = 0
'------------------------------------------------------------------------'Bis zum Dateiende zeilenweise einlesen
'------------------------------------------------------------------------Do While Not EOF(1)
ReDim Preserve alleZeilen(zaehler)
Line Input #1, eineZeile
alleZeilen(zaehler) = eineZeile
zaehler = zaehler + 1
Loop
Close 1
'------------------------------------------------------------------------'Zeilenanzahl der EingabeDatei
'------------------------------------------------------------------------DSMax = UBound(alleZeilen)
'------------------------------------------------------------------------'Aufsplittung des String-Arrays
'-------------------------------------------------------------------------
87
Anhang
For i = 0 To DSMax
eineZeile = alleZeilen(i)
'------------------------------------------------------------'Zerlegen der Zeile an den Semikolons
'------------------------------------------------------------Set eineZeileAlsCollection = tokenize(eineZeile, ";")
'------------------------------------------------------------'Daten in Tabelle importieren
'------------------------------------------------------------With rsTabelle
.AddNew
!RasconID = eineZeileAlsCollection.Item(1)
!NetzID = eineZeileAlsCollection.Item(2)
!StartpunktLamda = Val(eineZeileAlsCollection.Item(3))
!StartpunktPhi = Val(eineZeileAlsCollection.Item(4))
!EndpunktLamda = Val(eineZeileAlsCollection.Item(5))
!EndpunktPhi = Val(eineZeileAlsCollection.Item(6))
'------------------------------------------------------------'Jetzt müssen noch die Attribute des TruckerThemas erkannt
'werden und in die richtigen Tabellenspalten gelegt werden
'------------------------------------------------------------For j = 5 To eineZeileAlsCollection.Count
einEintrag = trim(eineZeileAlsCollection(j))
attributKennung = Left(einEintrag, 1)
Select Case attributKennung
Case "s"
!Schneekette = True
GoTo Skip
Case "r"
If Len(einEintrag) = 1 Then
!Raststaette = True
GoTo Skip
End If
Case "t"
If Len(einEintrag) = 1 Then
!Tank = True
GoTo Skip
End If
Case "a"
!Autohof = True
GoTo Skip
Case "n"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 1))
!Bearbeiter = attributInhalt
GoTo Skip
End Select
attributKennung = Left(einEintrag, 2)
Select Case attributKennung
Case "bt"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 2))
!BrueckeTrag = Val(attributInhalt)
88
Anhang
GoTo Skip
Case "bs"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 2))
!BrueckeSchrammbord = Val(attributInhalt)
GoTo Skip
Case "be"
!BrueckeEinschr = True
GoTo Skip
Case "uh"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 2))
!UnterfuehrungHoehe = Val(attributInhalt)
GoTo Skip
Case "us"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 2))
!UnterfuehrungSchrammbord = Val(attributInhalt)
GoTo Skip
Case "ue"
!UnterfuehrungEinschr = True
GoTo Skip
Case "gg"
!GesperrtGefahrgut = True
GoTo Skip
Case "gw"
!GesperrtWasser = True
GoTo Skip
Case "ga"
!GesperrtAlles = True
GoTo Skip
Case "gk"
If Len(einEintrag) = 2 Then
!GesperrtKfz = True
GoTo Skip
End If
Case "bi"
If Len(einEintrag) = 2 Then
!Binnenzollamt = True
GoTo Skip
End If
Case "rk"
!RaststaetteK = True
GoTo Skip
End Select
attributKennung = Left(einEintrag, 3)
Select Case attributKennung
Case "dir"
!Richtung = True
GoTo Skip
Case "gtg"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 3))
!GesperrtTatGewicht = Val(attributInhalt)
GoTo Skip
Case "gta"
attributInhalt = Right(einEintrag,
(Len(einEintrag) - 3))
89
Anhang
Case
Case
Case
Case
!GesperrtTatAchslast = Val(attributInhalt)
GoTo Skip
"ge6"
!Gefaelle6 = True
GoTo Skip
"biv"
!BinnenzollamtV = True
GoTo Skip
"tir"
!GrenzTIR = True
GoTo Skip
"gvz"
!GVZ = True
GoTo Skip
End Select
attributKennung = Left(einEintrag, 4)
Select Case attributKennung
Case "gk35"
!GesperrtKfz3t5 = True
GoTo Skip
Case "ge10"
!Gefaelle10 = True
GoTo Skip
End Select
Skip:
Next j
'Zeitstempel eintragen
!Zeitstempel = Date + Time
.Update
End With
Next i
GoTo fertig:
Fehler:
MsgBox Err.Description
fertig:
rsTabelle.Close
MsgBox "fertig"
End Sub
90
Anhang
Funktion “tokenize”
Function tokenize(ByVal strInput As String, ByVal suchzeichen As String) As
Collection
Dim i As Integer
Dim pos, laenge As Long
Dim eineListe As New Collection
strInput = trim(strInput)
laenge = Len(strInput)
i = 0
pos = 0
'-----------------------------------------------------------------------'Gibt das erste Auftreten des Suchzeichens im String an.
' O als Rückgabe wenn der Suchtext nicht auftritt
'-----------------------------------------------------------------------pos = InStr(strInput, suchzeichen)
While pos > 0
eineListe.Add (trim(Mid(strInput, 1, pos - 1)))
strInput = (Mid(strInput, pos + 1))
'-----------------------------------------------------------------------'Gibt das nächste Auftreten des Suchzeichens im String an.
'O als Rückgabe wenn der Suchtext nicht auftritt.
'-----------------------------------------------------------------------pos = InStr(strInput, suchzeichen)
i = i + 1
Wend
'-----------------------------------------------------------------------'der Rest des Eingabestrings (sofern einer vorhanden) soll natürlich auch
'noch übergeben werden
'-----------------------------------------------------------------------If Len(strInput) > 0 Then
eineListe.Add (strInput)
End If
Set tokenize = eineListe
End Function
91
Anhang
III. Anleitung zur Verknüpfung in ArcView
Grundsätzliches:
Die ersten drei Themen im View sind zwingend Symbole.shp, Linien.shp und
Streets.sh. Symbole.shp und Linien.shp bleiben auch beim Wechsel in ein anderes
NaVTech-Netz
im
View,
majhwys.shp,
sechwys.shp
lediglich
und
die
Themen
railrds.shp
streets.shp
werden
je
(Arbeitsshape!),
nach
Notwendigkeit
ausgetauscht. Dringend zu beachten ist hierbei, dass die Verknüpfung der Rasconmit den NavTech- Daten jedes Mal mit den Straßendaten aus streets.shp
durchgeführt wird.
Die Textdatei, in der sämtliche Informationen gespeichert werden, wird stets unter
C:/Iddata.txt gesichert.
Die NavTech-Substanz muss immer auf dem Rechner installiert sein. Informationen
zu den Daten und den Datenträgern gibt es auf der Installations-CD.
1. Jedes Mal wenn das Projekt neu geöffnet wird, muss zuerst der Name des
Bearbeiters eingegeben werden. Um den Namen eingeben zu können, benutzt man
entweder die Tastenkombination strg+n oder diesen Button:
2. Sowohl das Werkzeug „Objekt auswählen“ aus der Werkzeugleiste als auch das
Rascon-Thema, mit dem man beginnen möchte, müssen aktiviert sein.
3. Jetzt kann das zu verknüpfende Objekt aus entweder Symbole.shp oder Linien.shp
markiert werden. Um an die bezeichnende ID zu
kommen benutzt man die
Tastenkombination strg+a oder diesen Button:
Daraufhin erscheint eine Liste, aus der man das zum aktivierten Objekt passende
Thema auswählen muss.
4. Hat man Schritt 3 korrekt ausgeführt, markiert man jetzt im NavTech- Thema
(hier: immer streets.shp!), das bereits automatisch aktiviert wurde, das zum Rascon-
92
Anhang
Objekt passende NavTech- Segment und benutzt anschließend den Shortcut strg+a
oder klickt auf:
Auch hier erscheint eine Liste, aus der man jedoch immer streets.shp auswählen
muss.
5. Nun müssen die Informationen im Normalfall nur noch die Textdatei geschrieben
werden. Dies geschieht mit dem Shortcut strg+w oder diesem Button:
Normalfall
Der Normalfall ist hier ein punkthaftes Objekt, das mit einem Segment aus den
NavTech- Daten verknüpft werden muss. Der oben beschriebene Ablauf kann
grundsätzlich auf alle Objekte angewendet werden,
es gibt jedoch einige
Sonderfälle.
Sonderfälle
Linienhafte Objekte sind Sonderfälle bei der Verknüpfung.
Grundsätzlich gilt für alle linienhafte Objekte, dass jedes NavTech- Segment, auf dem
die Rascon- Linie liegt bzw. verlaufen könnte, einen Eintrag in der Textdatei
bekommt. Das heißt, dass jedes Segment noch einmal einzeln aufgenommen und in
die Datei geschrieben werden muss, vorausgesetzt das Segment hat an seinem Endoder Anfangspunkt Kontakt zu kreuzenden Straßen. Wird es von keiner anderen
Straße berührt, muss es auch nicht verknüpft werden.
Der Verknüpfungsablauf ist also im ersten Durchlauf vollständig identisch. Nimmt
man jetzt jedoch weitere Segmente für die Rascon- Linie auf, so muss man die
Schritte 1-3 nicht ständig wiederholen. Die Informationen, die beim ersten mal aus
dem Rascon- Objekt herausgeholt wurden, sind nämlich in Variablen gespeichert.
Möchte man also zusätzliche Segmente verknüpfen, so genügt es völlig, pro Segment
ab Schritt 4 zu verknüpfen. Das heißt: Segment markieren, strg+a und strg+w.
Es gibt bei den linienhaften Objekten jedoch einige Fälle, die unbedingt
berücksichtigt werden müssen.
93
Anhang
?
Linienhafte Objekte beidseitig
Bei dieser am häufigsten vertretenen Art der Linien ist die Richtung der
aufgenommenen Koordinaten unwichtig. Hier kann man ohne Probleme die
Linien mit den NavTech- Segmenten verknüpfen.
?
Linienhafte Objekte beidseitig – NavTech-Segment einseitig
Gilt ein beidseitiges linienhaftes Objekt für zwei NavTech-Segmente (also
zweimal eine Richtung, kommt öfters bei großen Autobahnen vor), so
muss jede NavTech- Richtung einmal mit dem Rascon- Objekt verknüpft
werden.
?
Linienhafte Objekte einseitig – NavTech-Segment beidseitig
Liegt ein einseitiges linienhaftes Objekt auf einem beidseitigen NavTechSegment, so muss man nach der „normalen“ Verknüpfung (ohne Schritt 5,
also keine Datei schreiben!) die Richtung der Koordinaten überprüfen und
gleichzeitig eine Richtungsinformation (weil das Rascon-Objekt einseitig
ist) an eine Variable übergeben. Dies geschieht mit Hilfe des shortcuts
strg+s oder diesem Button:
Erst jetzt darf die Datei geschrieben werden.
?
Linienhafte Objekte einseitig – richtige Koordinatenreihenfolge
Überprüft man die Koordinaten und sieht, dass die Reihenfolge (also
Richtung) der Koordinaten korrekt ist, so wählt man aus der Liste
„Richtung
beibehalten“
und
klickt
auf
„OK“.
So
wird
eine
Richtungsinformation (dir1 für einseitiges Objekt) an eine Variable
übergeben. Erst jetzt darf die Datei geschrieben werden.
?
Linienhafte Objekte einseitig – falsche Koordinatenreihenfolge
Überprüft man die Koordinaten und sieht, dass die Reihenfolge (also
Richtung) der Koordinaten falsch ist, so wählt man aus der Liste „Richtung
94
Anhang
umkehren“ aus und klickt auf „OK“. So werden die Koordinaten umgekehrt
und gleichzeitig die Richtungsinformation an eine Variable übergeben. Erst
jetzt darf die Datei geschrieben werden.
95

Documentos relacionados