Diplomarbeit im PDF-Format

Transcription

Diplomarbeit im PDF-Format
diplomarbeit am ifp
Universität Stuttgart
Sandra Waller
Aufbau eines städtischen
Parkrauminformationssystems
mit Anbindung an das Internet
ifp
Betreuer: Dr.-Ing. Monika Sester
Prüfer: Prof. Dr.-Ing. habil Dieter Fritsch
Parkrauminformationssysteme
Einblick
Ziel dieser Arbeit ist es, ein Parkrauminformationssystem zu entwickeln, mit dem man
über das Internet die aktuelle Parkraumsituation in städtischen Gebieten erfragen kann.
Dabei soll basierend auf dem Geo-Informationssystem ArcView GIS ein dynamisches
Parkrauminformationssystem erstellt werden. „Dynamisch“ bedeutet hier, daß die Parkbelegungsdaten als zeitlich veränderbar angesehen und immer aktuell (im 15 Minuten
Takt) in das System eingebracht werden. Die Parkbelegungsdaten werden dazu von
dem Parkscheinautomaten an einen Rechner gesendet und dort in einer Datenbank
(z.B. MS Access) gespeichert und damit für ArcView bereitgestellt.
Prinzipiell erlaubt ArcView die Visualisierung und Analyse von Daten über das Internet.
Hierzu ist jedoch als Erweiterung der ArcView Internet Map Server erforderlich.
Eine weitere Bedingung in dieser Arbeit ist es, eine möglichst kostengünstige Alternative
zu dem ArcView Internet Map Server zu finden.
In der Arbeit werden die Begriffe rund um Geoinformationssysteme, Objektorientierte
Programmierung und Internet erklärt.
Es wurden verschiedene Lösungsansätze gefunden und die Lösungsversuche erläutert.
Es ist gelungen, eine Alternativlösung zum ArcView Internet Map Server zu entwickeln,
die auf HTML (Hypertext Markup Language) / SHTML (HTML-Datei mit Server Side Include Anweisung) und eigens entwickelten Programmskripten in der ArcViewspezifischen Programmiersprache Avenue basiert. Sie wird ausführlich erklärt und durch
Abbildungen der Nutzeroberfläche anschaulich gemacht.
Andere Lösungsansätze wurden erarbeitet und auch dokumentiert.
Zwei weitere kommerzielle Alternativen zum ArcView Internet Map Server sind aufgeführt und durch zahlreiche Abbildungen visualisiert.
Abbildung: Ergebnis einer Abfrage des Parkrauminformationssystem
1
Parkrauminformationssysteme
Inhaltsverzeichnis
Einblick........................................................................................................................... 1
Inhaltsverzeichnis........................................................................................................... 2
1. Einleitung ................................................................................................................... 4
2. Grundlagen ................................................................................................................ 6
2.1. Geo-Informationssysteme (GIS)........................................................................... 6
2.1.1 ArcView .......................................................................................................... 9
2.1.2 AVENUE ...................................................................................................... 12
2.2 Datenbanken ...................................................................................................... 14
2.2.1 Relationale Datenbanken ............................................................................. 15
2.2.2 Objektorientierte Datenbanken ..................................................................... 16
2.3 Internet, WWW, HTML, Webbrowser und Webserver ......................................... 18
2.3.1 Das Internet.................................................................................................. 18
2.3.2 WWW, HTML, Webbrowser und Webserver................................................. 20
2.4 CGI-Schnittstellen und Perl................................................................................. 24
2.4.1 CGI: Common Gateway Interface................................................................. 24
2.4.2 Allgemeines zu Perl...................................................................................... 28
2.5 Objektorientierte Programmierung in Java .......................................................... 29
2.5.1 Applets und Applikationen ............................................................................ 33
2.5.2 Grundelemente der Sprache Java ................................................................ 34
3. Mögliche Lösungen zur Verbindung von GIS und Internet ........................................ 35
3.1 ImageMapper...................................................................................................... 35
3.2 Map-TV............................................................................................................... 39
3.3 ArcView Internet Map Server (IMS)..................................................................... 41
4. Gegebene Daten ...................................................................................................... 43
4.1 Die verschiedenen Dateitypen ............................................................................ 43
4.2 Inhalt der Dateien................................................................................................ 45
5. Das Programmkonzept............................................................................................. 47
5.1. HTML / SHTML – Dateien.................................................................................. 49
5.1.1 HTML-Code.................................................................................................. 49
5.1.2 SHTML-Code ............................................................................................... 54
5.2 Avenue Skript ..................................................................................................... 58
5.3 Bedienung des Parkrauminformationssystems ................................................... 64
Abb. 5.5 Ergebnisseite einer Einzelabfrage. ................................................................. 69
6. Ergänzungen und Erweiterungen ............................................................................. 70
6.1 Lösung über Java ............................................................................................... 70
6.2 Lösung über CGI-Schnittstelle ............................................................................ 73
6.3 CGI-Schnittstelle und Perl Skript – Formularlösung ............................................ 76
6.4 Sonstige Erweiterungen ...................................................................................... 81
7. Zusammenfassung ................................................................................................... 84
7.1 Ausblick .............................................................................................................. 86
8. Literatur .................................................................................................................... 87
8.1 Links....................................................................................................................... 89
9. Anhang..................................................................................................................... 91
9.1 Avenue Skript ..................................................................................................... 91
2
Parkrauminformationssysteme
9.2 Html und SHTML ................................................................................................ 96
Startseite in HTML................................................................................................. 96
Auswahlseite ......................................................................................................... 97
SHTML-Datei ........................................................................................................ 99
9.3 HTML-Datei mit Formular.................................................................................. 101
zugehöriges Perl-Skript ....................................................................................... 103
3
Parkrauminformationssysteme
1. Einleitung
Das Internet ist zu einem sehr wichtigen Medium dieser Zeit geworden. Fast alle Menschen haben diesen Begriff schon einmal gehört, viele nutzen das Internet beruflich
oder privat, um sich dort Informationen zu den verschiedensten Dingen zu suchen.
Viele Gemeinden, unter ihnen sehr viele, die im touristisch aktiv sind, haben inzwischen
ihren eigenen Internet-Auftritt. Sie wollen Bürger und auch Besucher ihrer Gemeinde
informieren. Diese Informationen reichen von kulturellen Veranstaltungen, über Politik
bis hin zu Stadtplänen, in denen man teilweise auch nach Straßennamen suchen und
sich die Lage der Straße anzeigen lassen kann. Viele bieten zusätzlich noch Serviceleistungen wie Hotelreservierungen und Buchungen oder das Zusenden von
Informationsbroschüren zu den verschiedensten Themengebieten an.
Das Automobil ist wohl eines der weit verbreitetsten Fortbewegungsmittel geworden.
Sehr viele Menschen in Deutschland sind im Besitz eines Autos. In Ballungsräumen
kommt es deshalb häufig zu Parkplatzproblemen. Städte, die langsam gewachsen sind,
haben meist einen sehr engen Stadtkern und sind deshalb ursprünglich nicht für Autos,
und schon gar nicht für sehr viele Autofahrer konzipiert. Einkaufsmöglichkeiten, Behörden, Ämter, kulturelle Einrichtungen und vieles mehr befindet sich dagegen oft im
Stadtzentrum, so daß sich ein hohes Verkehrsaufkommen und damit auch ein hohe
Parkplatzbedarf nicht vermeiden läßt.
Viele Autofahrer sind im Verhältnis oft länger mit der Parkplatzsuche beschäftigt, als mit
der eigentlichen Fahrzeit. Parkhäuser und Parkplätze mit Parkscheinautomaten sind oft
die letzte Rettung, das Auto legal an einem Ort abstellen zu können.
Nun entsteht aber das Problem, daß ortsfremde Personen, die Lage der Parkmöglichkeiten nicht kennen, oder es aber auch Parkplätze gibt, die vielleicht häufig nicht benützt
werden, weil sie nicht bekannt sind.
In seltenen Fällen verfügen Städte über ein Parkleitsystem, das ortsfremde Autofahrer
zu einem Parkhaus führt. Dies ist dann aber meist nur im Kern des Zentrums der Fall.
Will man etwas außerhalb parken oder nur kurz etwas erledigen und deshalb auch nicht
in ein Parkhaus fahren, muß man sich meistens schon sehr genau auskennen.
Ein Nachteil der vorhandenen Parkleitsysteme besteht darin, daß meist nur auf die
Parkhäuser verwiesen wird, nicht aber auf die Parkplätze mit Parkscheinautomaten. Ein
weiteres Problem entsteht auch dadurch, daß selten die Anzahl der freien Parkplätze
angegeben wird, was dann durchaus zu langen Wartezeiten vor überfüllten Parkhäusern
führen kann.
Ein solches Problem kann man umgehen, wenn man sich vorab über die Parksituation
informieren kann. Diese Möglichkeit bietet ein Parkrauminformationssystem. Hier kann
man sich über die Lage der Parkmöglichkeiten und über die Anzahl der freien Parkplätze erkundigen und dann selbst die beste Route dorthin planen.
Diese Funktionalität ist vom heimischen PC aus abrufbar; sie kann jedoch auch von einem mobilen Endgerät (PC mit Telefonkarte) bzw. direkt von einem WAP-Handy aus
angesteuert werden.
4
Parkrauminformationssysteme
Nach dieser Einleitung folgt das Kapitel „Grundlagen“, das sich mit GeoInformationssystemen, Datenbanken, Internet, CGI-Schnittstellen und objektorientierter
Programmierung befaßt. Leser, die in diesen Bereichen ein gewisses Basiswissen besitzen, können dieses Kapitel überblättern, oder auch nur einzelne Unterkapitel lesen.
Es folgen in Kapitel 3 „Mögliche Lösungen zur Verbindung von GIS und Internet“. Bei
diesen Lösungen handelt es sich um kommerzielle Alternativen von verschiedenen Firmen zum ArcView Internet Map Server der Firma ESRI.
Im Anschluß folgt das Kapitel, das den entwickelten Lösungsweg erklärt und dokumentiert. Durch Abbildungen wird das erstellte Parkrauminformationssystem anschaulich
dargestellt und eine Benutzung dadurch vereinfacht.
In Kapitel 5 werden die gegebenen Daten aufgeführt. Es wird erklärt, um welche Datentypen es sich handelt und welche Informationen in den jeweiligen Dateien zu finden
sind.
Folgend in Kapitel 6 werden alternative Lösungsansätze erklärt und dokumentiert und
auch Vorschläge zur Erweiterung erbracht.
In der Zusammenfassung befindet sich eine Gesamtbetrachtung des entwickelten Parkrauminformationssystems. Die Alternativen werden dort auch betrachtet und erklärt, aus
welchen Gründen sie nicht zum Einsatz kommen. Ausblickend in die Zukunft werden
weitere mögliche Erweiterungen aufgezeigt.
Kapitel 8 enthält das Literaturverzeichnis, sowie eine umfangreiche Linksammlung.
Verweise im Text zu den Links stehen in geschweiften Klammern mit der entsprechenden Nummer darin.
Im letzten Kapitel, dem Anhang, sind alle benötigten Programme aufgeführt.
5
Parkrauminformationssysteme
2. Grundlagen
2.1. Geo-Informationssysteme (GIS)
Unter einem „Geographischen Informationssystem“ bzw. „Geo-Informationssystem“ versteht man ganz generell ein Informationssystem für raumbezogene Daten. Es
verarbeitet Objekte und ihre Beziehungen zu anderen Objekten der realen Welt, was
bedeutet, daß der Einsatz eines GIS nur dann sinnvoll ist, wenn raumbezogene Daten
verarbeitet werden sollen.
Bei Geo-Informationssystemen handelt es sich um computergestützte Werkzeuge und
Methoden, die in der Lage sind, raumbezogene geographische Daten zu erheben, zu
verwalten, abzuändern und auszuwerten und zu visualisieren. Solche Daten liegen in
Form räumlicher (graphischer) Daten und beschreibender Informationen vor:
• Räumliche Daten befassen sich mit der Lage, Ausprägung und den Beziehungen
von geometrischen Informationen untereinander wie z.B. Entfernungen, Nachbarschaftsbeziehungen, Flächengrößen etc.
• Die beschreibenden Daten (Merkmale oder Attribute) beziehen sich auf die näheren
Eigenschaften der geometrischen Daten.
Mit einem GIS kann daher nicht nur gezeichnet werden, zusätzlich kann die reale Welt
durch die gleichzeitige Bearbeitung von beschreibenden Daten modellhaft raumbezogen
dargestellt werden. In der Regel dienen hierzu unterschiedliche thematische Karten wie
z. B. topographische Karten, Grundwasserkarten, Bodentypen, Landnutzungstypen,
Straßen, Flüsse aber z. B. auch Verwaltungsgrenzenkarten als Grundlage.
Werden all diese raumbezogenen Daten zusammen in einem Informationssystem abgespeichert, spricht man von einem „Geo-Informationssystem“ oder „GIS“. Der Anwender
analysiert und wertet die geographische Datenbasis mit geeigneten Softwarewerkzeugen aus.
Ein GIS umfaßt neben der (Computer-)Hardware mehrere Komponenten. Erst deren
Kombination führt zu einem funktionsfähigen GIS:
• GIS-Computerprogramme mit folgenden Funktionen:
• Dateneingabe für Geometrie- und Sachdaten (Attribute)
• Datenverwaltung incl. Datenaustausch über Netzwerke
• Datenanalyse
• Kartographische, grafische und tabellarische Datenausgabe
• Multimediaausgabe
• Raumbezogene Daten in Form von Punkten, Linien, Flächen, Oberflächen, Vektoren, Rastern, Zellen, Bildpunkten (Pixel) etc.
• Fachliches Wissen über die Dateninhalte und Methoden zu deren Verarbeitung
und Auswertung
Geo-Informationssysteme dürfen nicht mit Präsentations- oder CAD (Computer-AidedDesign) –Programmen verwechselt werden. Präsentationsprogramme werten z.B. keine
Sachdaten aus. Präsentations- oder Zeichenprogramme sind wichtig für die Ausgabe
und Darstellung der raumbezogenen Daten, jedoch ist die Präsentation nur eine von
vielen Aufgaben, die ein Geo-Informationssystem erfüllen soll. Ebenso sind CADSysteme keine Geo-Informationssysteme, da die dort zu verarbeitenden Daten nicht
6
Parkrauminformationssysteme
unbedingt einen Raumbezug im oben definierten Sinne haben. Die Sachdatenverarbeitung spielt eine untergeordnete Rolle. Ein CAD dient hauptsächlich der Konstruktion
technischer Objekte (Autos, Häuser) und ist darauf speziell ausgelegt. Da ein CADSystem und ein GIS jeweils Vorteile haben, die sich gegenseitig ergänzen können, gibt
es Programme, die beide koppeln. Kombinationen von GIS und anderen Anwendungen
sind ebenfalls auf dem Markt und ergänzen Geo-Informationssysteme (z.B. Facility Management Systeme). Der Trend geht dahin, daß Geo-Informationssysteme immer
umfangreicher werden und die Hersteller bemüht sind, die wichtigsten Analyse- und
Präsentationswerkzeuge in ihren Geo-Informationssystemen zu integrieren. Auf der anderen Seite ist jedoch wegen der einfachen Handhabung und der Preise auch eine
Tendenz zu kleineren „Desktop-GIS“ zu beobachten. Diese Systeme sind sehr leicht zu
bedienen und beinhalten wichtige GIS-Funktionalitäten für die Dateneingabe, auswertung und –präsentation. Sie können je nach Bedarf durch Zusatzmodule erweitert und damit individuell auf die Bedürfnisse des Anwenders zugeschnitten werden.
Desktop-GIS-Programme finden aufgrund der oben genannten Vorteile zur Zeit starke
Verbreitung. Es soll jedoch beachtet werden, daß Desktop-GIS nicht die gesamte Funktionalität von professionellen Geo-Informationssystemen besitzen und vor allem nur
begrenzte Möglichkeiten zur Analyse von raumbezogenen Daten haben. Eine Kombination oder gleichzeitige Nutzung von GIS und Desktop-GIS scheint für größere Projekte
zur Zeit sinnvoll, wobei das GIS seine umfangreichen Analysewerkzeuge zur Verfügung
stellt und das Desktop-GIS wegen der einfachen Handhabung z.B. die Präsentationsaufgabe übernehmen kann. Eine solche Kombination kann beispielsweise mit dem GIS
„ARC/INFO“ und dem Desktop-GIS „ArcView GIS“ realisiert werden.
Die rasche Entwicklung und Verbreitung von Geo-Informationssystemen in den letzten
Jahren hängt stark mit der schnellen Entwicklung der Hardware und Rechnersoftware
(Betriebssysteme) zusammen. Geo-Informationssysteme sind äußerst komplexe Softwarepakete, die sich relativ schnell an die neuste Hard- und Softwareentwicklung
anpassen. Sie können sehr umfangreich sein und sind in diesem Fall nur mit sehr großem Zeitaufwand zu erlernen.
Daß Geo-Informationssysteme zur Zeit extreme Zuwachsraten haben, liegt sicherlich
nicht nur daran, daß es heute mehr raumbezogene Daten gibt als früher, sondern auch
daran, daß der Anwender erkannt hat, daß seine Daten einen Raumbezug haben und
ihre Auswertung mit einem GIS sehr große Vorteile für seine Arbeit mit sich bringt. Die
Vorteile ein GIS einzusetzen liegen auf der Hand:
•
•
•
Räumliche Daten werden in einer Datenbank effektiv (schneller Zugriff, Sicherheit)
vorgehalten.
Die Verfügbarkeit der Daten auf einem Rechner erlaubt eine sofortige Anwendung
der Analysewerkzeuge für umfangreiche Auswertungen.
Räumliche Daten können schnell und billiger ausgegeben werden (Erstellen von
Karten, Bildschirmausgabe).
7
Parkrauminformationssysteme
Eine Definition eines GIS ist durch seine Aufgaben (GIS-Funktionen) möglich. Die
Hauptfunktionen eines GIS sind die Dateneingabe (GPS, Digitalisierer, Scanner), die
Verwaltung der Daten (Datenbank, Filesystem), die Analyse (Datenauswertung, logische Abfragen, Verschneidungen, Interpolation, Statistiken) und die Ausgabe
(Präsentation auf Bildschirm, Drucker) von raumbezogenen Daten. Ein GIS wird daher
als ein System dieser vier Komponenten bezeichnet, wobei diese, je nach Anwendung,
unterschiedlichen Stellenwert haben können.
Eine weitere Definition ist nach den Komponenten eines Geo-Informationssystems möglich. Die Komponenten sind die Software mit der zugehörigen Hardware, die Daten, die
den größten Teil der Kosten bei der Realisierung eines GIS ausmachen können, und
der Anwender bzw. die von ihm erstellten Anwendungen.
Diese Beschreibungen und Definitionen orientieren sich an [Bill, Fritsch 1997] und [Liebig 1999] zugrunde.
8
Parkrauminformationssysteme
2.1.1 ArcView
ArcView GIS ist ein Desktop-GIS. Es ermöglicht die Organisation von raumbezogenen
Daten und die Analyse dieser Daten. Außerdem können neue Daten erfaßt oder von
bestehenden Daten als Analyseergebnis erzeugt werden. Es gibt Zusatzmodule für die
Dateneingabe, Raster- und Netzverarbeitung.
ArcView bietet Funktionen zur Datenanalyse und Visualisierung, nicht jedoch zur Datenverwaltung (im Gegensatz z.B. zu Arc/INFO). Deshalb werden außer den in ArcView
direkt eingegebenen bzw. generierten Daten keine Daten gespeichert, sondern grundsätzlich nur deren Verknüpfungen. Diese Verknüpfungen werden bei Veränderung der
Daten in der externen Ausgangstabelle automatisch aktualisiert, da ArcView die Daten
mittels der Verbindung mit jedem Neustart wieder neu einlädt. Die Daten aus externen
Tabellen können in ArcView zwar analysiert und visualisiert, jedoch nicht bearbeitet
werden!
Von ArcView GIS als einem Desktop-GIS kann man sicherlich nicht die Leistungen eines professionellen GIS (z.B. ARC/INFO) erwarten kann, jedoch in der Darstellung von
raumbezogenen Daten ist ArcView GIS den oft schwerfälligen, aber natürlich leistungsfähigeren GIS überlegen. Das trifft besonders auf die Bedienung und Handhabung des
Programms zu. ArcView GIS ist, wie jedes moderne Softwareprodukt, das unter Windows oder ähnlichen Fenster-orientierten Betriebssystemen läuft, für jeden geübten
Windows-Benutzer leicht zu bedienen. Die Schwierigkeit liegt jedoch in der Vielfalt der
möglichen Funktionen und Anwendungen.
ArcView unterstützt als wichtigstes Format das dBASE-Format (*.dbf), in dem auch Access-, FoxPro-, Oracle- oder Excel-Dateien abgelegt werden können. Desweiteren
können auch ASCII-Dateien (*.txt) und INFO-Tabellen (aus Arc/INFO) direkt aufgenommen werden.
Woher bekommt der ArcView GIS-Benutzer Daten für ArcView?
Geometriedaten werden in sog. Shape-Format gespeichert. Es existiert eine Reihe von
Konvertern, die Shape-Daten erzeugen können (z.B. EDBS-Konverter); ferner ist die
Schnittstelle definiert und es existiert eine Bibliothek mit Funktionen zum Lesen und
Schreiben von Objekten.
Eigene Daten müssen mit Hilfe geeigneter Geräte (Scanner, Digitalisierer) und Programme in ein für ArcView GIS verständliches Format gebracht werden. Coverages
Daten aus ARC/INFO lassen sich direkt mit ArcView GIS bearbeiten. Ist die Anschaffung eines GIS wie ARC/INFO nicht vorgesehen, lassen sich die Daten auch von
Firmen, die darauf spezialisiert sind, digitalisieren und in ArcView GIS-Format ausgeben
oder man kann sie auch auf dem Bildschirm digitalisieren. Rasterformate der verschiedenen Formate lassen sich mit ArcView GIS unmittelbar einlesen. Die folgende
Aufzählung zeigt Beispiele von Daten, mit denen ArcView GIS arbeiten kann
Vektordaten
• ARC/INFO-Coverages
• ArcView GIS-Shapes
• AutoCAD-Dateien (DXF)
9
Parkrauminformationssysteme
Rasterdaten
• ARC/INFO-Rasterdaten (Grids)
• TIFF-Rasterdaten
• BIL- und BIP-Rasterdaten
• ERDAS-Rasterdaten
• JPEG
Tabellendaten
• dBASE-Dateien
• Info-Dateien
• Text-Dateien
Aufbau von ArcView GIS
ArcView GIS bearbeitet raumbezogene Daten. Dazu wird ein Projekt eröffnet. Eine ArcView GIS-Sitzung bedeutet demnach nichts anderes, als ein Projekt zu bearbeiten. Was
muß ein solches Projekt leisten?
• die Geometrie (Objekte) von raumbezogenen Daten darstellen
• Tabellen (Sachdaten, Attribute) bearbeiten können
• mit Sachdaten Diagramme und Statistiken für eine übersichtliche Darstellung oder
Auswertung erstellen
• raumbezogene Daten in Layouts, z.B. als Karten, ausgeben zu können
• alle Funktionen leicht bedienbar und automatisch ausführen können.
Ein Projekt besteht aus Views, Tabellen, Diagrammen, Layouts und Skripts.
Für die Bearbeitung des ArcView GIS-Projekts gibt es das Projektfenster. Ein Projekt
arbeitet mit unterschiedlichen Dokumenten, wobei jedes mehrfach geöffnet werden
kann. Es gibt das View-Dokument, Tabellen-Dokument, Diagramm-Dokument, LayoutDokument und Skript-Dokument. Zu jedem dieser Dokumente existiert jeweils eine eigene Menüleiste, Schaltflächenleiste, Werkzeugleiste und Statusleiste.
Wird ein bestimmtes ArcView GIS-Dokument aktiviert, so erscheint automatisch die zu
diesem Dokument gehörige Menü-, Schaltflächen- sowie Werkzeugleiste.
ArcView GIS-Dokumente
Das Projektfenster organisiert alle ArcView GIS-Dokumente. Hier werden neue ArcView
GIS-Dokumente erstellt oder gelöscht. Projekte werden mit dem Projektfenster erstellt,
geladen und gespeichert. Es ermöglicht außerdem die Anpassung der ArcView GISSteuerelemente für eigene Anwendungen.
Im View-Dokument werden die raumbezogenen Daten dargestellt. Unterschiedliche
geographische Daten (Objekte) wie Flüsse, Städte, Meßstationen „Themen“ usw. werden hier eingelesen und können z.B. mit einer Legende versehen werden.
Das Tabellen-Dokument enthält die Attribute (Sachdaten) der zugehörigen Objekte eines Themas oder auch Werte aus Text- oder Datenbankdateien. Mit den
Tabelleninhalten kann gerechnet oder sie können bearbeitet werden.
10
Parkrauminformationssysteme
Mit Hilfe des Diagramm-Dokuments werden Tabellenwerte als Diagramme dargestellt,
z.B. als Linien-, Balken-, oder Tortendiagramme.
Im Layout-Dokument stellt der Anwender ArcView GIS-Dokumente (z.B. Views oder Tabellen) zu einem Layout (Karte) für die Ausgabe zusammen. Typische Kartenelemente
wie Nordpfeile, Maßstäbe, Legenden, können auch in das Layout eingefügt werden.
Im Skript-Dokument wird der Programmcode für die Programmierung mit der ArcView
GIS Programmiersprache Avenue eingegeben. Hier wird auch der Programmcode übersetzt. Für die Fehlersuche können z.B. Breakpoints gesetzt und der Inhalt von Variablen
überprüft werden.
Die Erklärungen zu ArcView GIS erfolgt nach [Liebig 1999].
11
Parkrauminformationssysteme
2.1.2 AVENUE
Avenue ist im Lieferumfang von ArcView enthalten und dient als Anpassungs- und Entwicklungsumgebung
für
den
Anwender.
Sie
ist
eine
Objektorientierte
Programmiersprache. Die Objektklassen und ihre Methoden wurden ständig erweitert
und sind in ihrer Komplexität kaum noch überschaubar. Trotzdem ist die Sprache selbst
in ihrer Syntax einfach zu erlernen und ermöglicht den leichten Einstieg in die Welt der
objektorientierten Programmierung.
Allgemeine Konzepte
„Objektorientiert“ – das Schlagwort der neunziger Jahre hat sich mittlerweile auf breiter
Ebene durchsetzen können. Einen großen Beitrag leisteten dabei sicherlich die Sprache
Smalltalk, C++ und Java.
Die Objektorientierte Problemerfassung geht vom menschlichen Denken an sich aus.
Die Beschreibung von Dingen der Realität wird zur Ausgangsbasis der Programmierung. Die Modellierung unserer Umwelt in dieser Form setzt stets einen gewissen Grad
an Abstraktionsfähigkeit voraus.
Objekte, Klassen und Instanzen
Objekte können im abstrakten Sinne alle Dinge unseres Lebens sein. Sie können vom
Computer über Bücher bis hin zur Stereoanlage alles sein. Wir kennen deren Eigenschaften (oder hoffen dies zumindest) und wissen, wie sie in bestimmten Situationen
reagieren.
Eine Klasse faßt das Verhalten (Methoden) und die Eigenschaften für eine Menge von
Objekten zusammen. In Form eines Prototyps bestimmt sie die Struktur aller nach diesem Muster zu erzeugenden Objekte. Als abstrakter Datentyp stellt die Klasse den
Hauptkern der objektorientierten Beschreibung dar.
Die Instanz einer Klasse ist gleichbedeutend mit einem speziellen, unverwechselbaren
Objekt. Alle Instanzen besitzen die gleichen Eigenschaften und Verhaltensweisen der
Klasse, nicht zwingend jedoch die gleichen Werte.
Objektorientiertes Programmieren in Avenue
ArcView GIS ist ein leistungsfähiges Desktop GIS. Es zeichnet sich besonders durch
relativ einfache Bedienbarkeit und hohe funktionale Skalierbarkeit aus. Der Zugriff auf
die allgemein zugänglichen Funktionalitäten erfolgt über eine geschlossene Klassenbibliothek. Diese Bibliothek ist soweit skalierbar wie ArcView selbst.
Jede Aktion innerhalb von ArcView löst eine Nachrichtenkette im objektorientierten Sinn
aus. Sei es die Digitalisierung von Punktobjekten oder die umfangreiche Themenanalyse. Hinter den einzelnen Menüpunkten und Schaltflächen stehen wiederum Aufrufe von
Avenue-Programmen, welche die jeweiligen Aktionen steuern.
12
Parkrauminformationssysteme
Avenue und ArcView
Avenue ist die Programmierumgebung von ArcView. Von der einfachsten Anpassung
bis zur umfangreichen Ablaufsteuerung stellt Avenue die Schnittstelle zwischen Programmierer und ArcView – Klassenbibliothek dar.
Die objektorientierte Gestaltung der Programmiersprache Avenue erlaubt eine schnelle
Einarbeitung. In kurzer Zeit sind schon umfangreiche Programmodule realisierbar. Da
die Klassenbibliothek ein geschlossenes System darstellt, ist diese durch Avenue auch
nicht erweiterbar.
Das Programmieren in Avenue besteht im Wesentlichen aus dem Senden von Anforderungen an Objekte oder Klassen. Hat eine Objekt eine Anforderung erhalten, antwortet
es immer mit der Rückgabe eines Objektes.
Umfangreiche Avenue-Programme zeichnen sich durch ihren modularen Aufbau und so
durch ihre Wiederverwendbarkeit einzelner Bausteine (Skripte) aus. Alle Systemskripte
sind frei verfügbar und können angepaßt werden. Dies bedeutet, daß fast jede Aktion in
ArcView gezielt beeinflußbar ist.
ArcView Projekte lassen sich aber auch gegen eine derartige Anpassung jederzeit sperren. Dadurch bleibt die Integrität der Projekte erhalten. Für komplexe Erweiterungen der
Funktionalität von ArcView werden dem Endanwender in der Regel Erweiterungen bereitgestellt. Diese lassen sich in alle Projekte einbinden und wieder entfernen.
Mit Avenue kann man:
• ArcView anpassen
• Die Tools von ArcView verändern
• Neue Tool erzeugen
• ArcView in andere Anwendungen integrieren
• Eigene Anwendungen auf der Basis von ArcView entwickeln
Avenue und objektorientierte Programmierung wurden gemäß [Herter et. Al 1999] erläutert.
13
Parkrauminformationssysteme
2.2 Datenbanken
In {2.1} sind Datenbanken wie folgt beschrieben:
Datenbanken dienen der Sammlung und Bereitstellung von Daten. Neben den eigentlichen Daten werden auch Beziehungen zwischen den Daten gespeichert, da
Beziehungen zwischen Daten wichtige Informationen abbilden und die Redundanz von
Datenelementen minimieren.
Datenbanken erleichtern das Suchen, Analysieren, Bearbeiten und Speichern von Datenbeständen. Mittels Datenbank-Managementsystemen können mehrere Benutzer
gleichzeitig auf den Datenbeständen arbeiten. Hierbei können häufig verschiedene Anwendungen auf ein und dieselben Daten zugreifen und die Daten analysieren. Bei
diesen Anwendungen kann es sich z.B. um statistische Analysen, graphische Aufbereitung der Daten, Berichtserstellungen, Multimediaanwendungen, Textverarbeitungen
oder einfache Tabellenbearbeitung handeln.
Relationale Datenbanken speichern die Daten in Tabellenform. Die Tabellen stehen
hierbei gemäß einem definierten Datenmodell in Beziehung (engl. relation) zueinander.
Zugegriffen wird auf die Daten mittels einer nicht-prozeduralen Sprache. Hierbei hat sich
die Sprache SQL (Structured Query Language) durchgesetzt. Mittels deklarativen
Sprachelementen erklärt der Benutzer dabei, welche Daten (inhaltsorientiert) er bearbeiten möchte, ohne dem System mitteilen zu müssen, auf welche Art bzw. mittels
welchem Verfahren die Daten aus der Datenbank wiedergewonnen werden. Der Einsatz
von (relationalen) Datenbanken hat mehrere Vorteile:
•
•
•
•
•
•
Datenhaltung und Zugriff auf die Daten erfolgt weitgehend unabhängig von der Anwendung. Eine Umstellung der physikalischen Abspeicherung der Daten, d.h. evtl.
Dateiformatänderung bzw. Abspeicherung an einem anderen Ort beeinträchtigt eine
einmal codierte Anwendung nicht. Programme greifen immer über eine logische
Sicht auf Daten zu.
Datensharing: Auf bestehende Datenbestände können mehrere Benutzer bzw. Anwendungen gleichzeitig unter Wahrung der Datenkonsistenz gespeicherter
Informationen zugreifen.
Garantierte Rücksetzbarkeit: Im Fehlerfall, sei es nun ein Hardware- oder Softwarefehler, kann ein Datenbestand auf einen Zustand zurückgesetzt werden, der den
Daten vor Beginn der Bearbeitung entspricht (Transaktionsverarbeitung).
Softwarequalität und Programmumfang: Wegen definierter Schnittstellen zu den
Datenbank-Managementsystemen und Modularisierung von Anwendercode und
Datenzugriffscode wird der Umfang eines Anwenderprogamms minimiert und eine
höhere Softwarequalität erreicht.
Freiheit, Programme und Datenhaltung beliebig zu verteilen: Durch die Trennung
des Anwendungscode und Datenbank-Zugriffscodes können die Datenbestände
von unterschiedlichen Programmen auf unterschiedlichen Betriebssystemplattformen bearbeitet werden. Voraussetzung hierbei ist, daß die Rechner (Client- und
Serverrechner) per Netz untereinander verbunden sind und mittels einem definierten Protokoll miteinander kommunizieren.
Skalierbarkeit der Datenbankleistungsfähigkeit: Durch den Einsatz eines entsprechend dimensionierten Rechners für den Datenbankserver kann den Anwendern
14
Parkrauminformationssysteme
eine nahezu beliebige Leistung des Datenbankservers bereitgestellt werden. Im
Falle von Oracle reicht dieses Leistungsspektrum z.B. vom Desktop-System bis zu
massiv-parallelen Rechnerarchitekturen (MPP-Rechner).
• Einsatz einer Client-Server-Rechnerarchitektur: Wegen der Trennung von Anwendung und Datenhaltung kann die Anwendung auf einem Frontend-Rechner (Client)
und die Datenhaltung auf einem Backend-Rechner (Server) erfolgen. Hierbei können
unterschiedliche
Rechner,
Netzwerke,
Betriebssysteme
und
Benutzeroberflächen in Frage kommen. Dem Anwender bleibt daher die Freiheit,
Hersteller der Rechnersysteme, Betriebssysteme, Benutzeroberflächen und Netzwerkarchitekturen frei auszusuchen.
Quelle: {2.1}
2.2.1 Relationale Datenbanken
Datenbanken bilden ein zentrales Element der elektronischen Datenverarbeitung. Dies
ist besonders augenfällig, wo eine große Datenbank im Mittelpunkt einer Organisation
steht, wie bei einer Versicherung, einer Bibliothek oder einem Unternehmen. Datenbanken finden sich aber auch als Kern einer Vielzahl von Computeranwendungen, von
Kommunikationsprogrammen über Planungshilfen bis zu Betriebssystemen. Deshalb
stellen Datenbanken auch eine guten Einstieg in den Umgang mit elektronischen Informationssystemen dar.
Relationale Datenbanken haben sich seit ihrer Konzeption zu Beginn der 80er Jahre in
fast allen Anwendungsgebieten durchgesetzt. Ihre Vorteile gegenüber älteren Modellen
liegen in leichterer Handhabbarkeit, größerer Flexibilität und der Einheitlichkeit des zugrundeliegenden Datenmodells. Sie haben sich heute eindeutig als Standard etabliert,
demgegenüber neuere Alternativen, wie objektorientiert Datenbanken, nur zögernd Fuß
fassen {2.4}.
Grundbegriffe des relationalen Datenmodells
• Attribut (attribute)
Eine bezeichnete Eigenschaft. Attribute basieren immer auf einem Wertebereich.
• Wertebereich (domain)
Eine Menge möglicher Werte, die ein Attribut annehmen kann, z.B. INTEGER, MONEY
oder CHAR(32).
• Tupel (tuple)
Ein Tupel umfaßt mehrere Attribute mit je einem zugehörigen Wertebereich. Ein Tupel
faßt die interessierenden Eigenschaften eines Objektes, einer Person oder einer Beziehung zusammen.
• Beziehung (relationship)
Beziehung zwischen Tupeln, wie zum Beispiel: eine Student besucht mehrere Vorlesungen. Beziehungen werden selbst wieder als Tupel dargestellt..
• Relation
Menge von (gleichartigen) Tupeln {2.2}
Beispiele für relationale Datenbanken sind MS Access, Ingres und SQL-Server.
15
Parkrauminformationssysteme
2.2.2 Objektorientierte Datenbanken
Traditionelle Datenbanksysteme, d.h. Relationale Datenbanksysteme, können nicht
mehr alle Anforderungen erfüllen, die an ein Datenbanksystem gestellt werden. Moderne Anwendungen benötigen weitergehende Fähigkeiten:
• Hochstrukturierte Information muß direkt darstellbar und verarbeitbar sein. Man
benötigt komplexe Datentypen und typspezifische Operationen.
• Eine hierarchische Struktur muß modellierbar sein. Dies ist im flachen Relationenmodell nur sehr rudimentär möglich.
Objektorientierte Systeme scheinen eher geeignet, diese Anforderungen zu erfüllen.
Das Paradigma der Objektorientierung ist im wesentlichen durch die Entwicklung in höheren Programmiersprachen geprägt. Diese läßt sich in drei Phasen aufteilen:
• In der 1. Phase gibt es Imperative Programmiersprachen wie COBOL und Fortran. Variablen, Felder und rudimentäre Kontrollstrukturen sind vorhanden.
• In der 2. Phase gibt es Strukturierte Programmiersprachen wie Algol, Pascal und
Modula-2. Blockstruktur und Kapselung ist vorhanden.
• In der 3. Phase gibt es Objektorientierte Programmiersprachen wie Simula, Eiffel, C++, Smalltalk und Oberon. Es gibt Objekte und Klassen, wobei Objekte
Identität und Verhalten haben. Dabei werden einige grundsätzliche Softwareengineeringideen wie Information Hiding (Trennung von Interface und
Implementierung) und Abstrakte Datentypen verwirklicht. Es gibt in einigen
Sprachen Vererbung, Overriding, Overloading und Late Binding (diese Begriffe
werden weiter unten erklärt).
In modernen Objektorientierten Sprachen sind die Paradigmen
• Objektidentität,
• Kapselung von Struktur und Verhalten,
• Kommunikation über Messages,
• Gruppierung von Objekten in Klassen,
• Spezialisierung und Vererbung bei Klassen,
• Modularität und
• Code-Erweiterbarkeit
verwirklicht.
Folgenden Eigenschaften sollte ein OODBS (Objekt Orientiertes Datenbank System)
besitzen:
Komplexe Objekte:
Objekte können durch beliebige Anwendung von Konstruktoren aus atomaren und
komplexen Objekten gebildet werden.
Objektidentität:
Objekte existieren unabhängig von ihrem Wert. Sie erhalten einen ObjektIdentifikator(OID). Unbeschadet dessen können Objekte Teil eines anderen Objektes sein (Objektaggregation), und mehrere Objekte können andere (Teil-)Objekte
gemeinsam nutzen (Object Sharing).
Kapselung:
Struktur und Verhalten eines Objektes wird getrennt. Die Kommunikation zwischen
verschiedenen Objekten und zwischen Objekten und Programmen ist streng geregelt (Modularität).
16
Parkrauminformationssysteme
Typen und Klassen:
Typ- oder Klassenbildung wird unterstützt. Ein Typ faßt Objekte mit gemeinsamen
Eigenschaften zusammen. Es wird zwischen dem für den Benutzer sichtbaren Interface und der Implementierung unterschieden. Eine Klasse ist ein Typ mit Methoden,
der Begriff Klasse hat eine dynamische Komponente
Hierarchie:
Typen oder Klassen können in einer Hierarchie stehen. Eigenschaften und Operationen werden vererbt.
Overriding, Overloading und Late Binding:
Beim Overriding werden aus einer Oberklasse ererbte Methoden-Definitionen neu
implementiert. Overloading führt in Abhängigkeit des Typs eines Objektes eine bestimmte Methoden-Implementierung aus. Bei einer überladenen Methode wird mit
Late Binding zur Compile-Zeit festgestellt, welche Methoden-Implementierung an
den Methoden-Namen gebunden wird.
In einer Typen- oder Klassenhierarchie haben unterschiedliche Operationen den
gleichen Namen. Erst zur Laufzeit wird entschieden, welche Operation ausgeführt
wird(Late Binding).
Vollständigkeit:
Das System ist vollständig im Sinne der Berechenbarkeitstheorie. Alle berechenbaren Funktionen können ausgedrückt werden.
Erweiterbarkeit:
Zu den vordefinierten Typen können eigene definiert werden. Der Benutzer kann
diese wie vordefinierte Typen benutzen {2.6}.
Beispiele für Objektorientierte Datenbanken sind Oracle 8i und IBM DB2.
17
Parkrauminformationssysteme
2.3 Internet, WWW, HTML, Webbrowser und Webserver
2.3.1 Das Internet
Das Internet, ein Begriff, der jeder schon einmal gehört hat, ein Bestandteil, der aus
dem Leben vieler Menschen nicht mehr wegzudenken ist. Im folgenden soll erklärt werden, wie und warum ist das Internet entstanden ist und was sich hinter diesem Begriff
verbirgt.
Das Internet wurde nicht von einem einzelnen Menschen erfunden oder von Unternehmen „gebaut“, sondern ist nach und nach gewachsen.
Ende der 60er Jahren wurde ein Pilotprojekt des amerikanischen Verteidigungsministeriums ins Leben gerufen, das die militärischen Möglichkeiten des Datenaustausches
zwischen weit voneinander entfernten Computern erforschen sollte. Im Rahmen dieses
Projekts wurden zunächst einige militärische Computeranlagen miteinander verbunden.
Später schlossen sich auch Universitäten, Behörden und öffentliche Institutionen an.
Schließlich beeindruckten die Möglichkeiten dieses Netzwerks auch die Industrie: Die
vielen Unternehmen, die ins Internet gingen, erweiterten das Informationsangebot dermaßen, daß es auch als Massenmedium in den USA Bedeutung erlangte.
Der nächste Schritt war dann die allmähliche Ausdehnung des Netzwerks auf andere
Länder. Neben Nordamerika engagierten sich vor allem die westeuropäischen Staaten
in diesem Bereich, und bis heute sind diese beiden Kontinente am engsten vernetzt. In
der Zwischenzeit ist es allerdings möglich, in fast allen Ländern der Erde via Internet
Informationen abzurufen und auszutauschen.
Beim Internet handelt es sich deshalb um eine nach und nach gewachsene Netzwerkstruktur. Einzelne Computer wurden miteinander zu kleinen Netzwerken verbunden,
diese Netze wuchsen mehr und mehr, weil im Laufe der Zeit immer mehr Rechner hinzukamen. So entstand das Internet. Es gibt im Internet keine Zentrale, keinen Besitzer
und niemanden, der für die im Netz verbreiteten Daten verantwortlich ist. Wegen dieser
dezentralen Struktur ist es nicht möglich, konkrete Aussagen über die genaue Zahl der
Internet-Benutzer zu machen. Schätzungen gehen derzeit von 50 bis 70 Millionen Internet-Benutzern weltweit aus.
Das World Wide Web (WWW) ist so bekannt, daß viele Benutzer glauben, das WWW
sei das Internet! Doch das WWW ist ein Dienst im Internet - ein Verbund von InternetServern, die mit einer speziellen Software ausgestattet sind, die die Wiedergabe von
weltweit verteilten Hypertext-Dokumenten - das sind über Querverweise verbundene
Informationen - ermöglicht. Ein zweiter Dienst im Internet, den man kennen sollte, heißt
FTP (File Transfer Protocol) und dient zur Übertragung von Dateien. Ein weiterer wichtiger Dienst innerhalb des Internets ist E-Mail (Electronic Mail), also die elektronische
Post: Jeder Internet-Benutzer erhält über seinen Serviceprovider oder Online-Dienst
eine eigene Internet-Adresse, unter der er per Computer von allen anderen InternetBenutzern erreicht werden kann. Auf diese Art und Weise ist es möglich, Nachrichten
miteinander auszutauschen, und zwar weltweit innerhalb weniger Stunden.
18
Parkrauminformationssysteme
Dieser E-Mail-Service wird noch durch die sogenannten Diskussionsforen ("Newsgroups") erweitert. Sie sind im Prinzip nichts anderes als Schwarze Bretter, an denen
man eine Nachricht hinterlassen kann. Jeder andere Internet-Nutzer ist nun in der Lage,
diese zu lesen und zu beantworten. Die Foren sind in der Regel thematisch nach Sachgebieten geordnet. So gibt es Rubriken für Kleinanzeigen oder Rubriken, in denen Sie
Informationen mit Menschen austauschen können, die gleiche Hobbys haben wie Sie
selbst, und auch Rubriken, in denen Sie sich detailliert über technische und wissenschaftliche Fragen informieren können. Die am häufigsten gestellten Fragen sind in
sogenannten "FAQs" (Frequently Ask Questions) der jeweiligen Sachgebiete zusammengestellt.
Das Internet: der größte Markt der Welt – durch das Internet ist man mit dem größten
Waren-, Informations- und Dienstleistungsmarkt der Welt verbunden. Nach Ansicht von
Experten wird das Internet unser Leben in nächster Zukunft stark verändern: Wir werden
schneller, bequemer und gezielter an genauere Informationen aus der ganzen Welt
kommen.
Weltweites Informationsangebot - Ein wichtiger Bereich ist das breite Angebot an aktuellen Informationen; so stellen Nachrichten Agenturen, Zeitschriften- und Buchverlage
unterschiedlichste Informationen im Internet zur Verfügung. Dadurch hat man die Möglichkeit, aktuelle Börsenkurse oder Schlagzeilen praktisch ohne Zeitverzögerung auf den
eigenen Bildschirm zu holen. Auch Unternehmen stellen sich im Internet vor und bieten
Ihnen die Möglichkeit, sich vom PC aus über die Produkte zu informieren.
Doch die Entwicklung macht hier nicht halt. In Zukunft wird das Internet mehr bieten als
nur den Abruf statischer Informationen. Das Abspielen von Videoclips und Musik sind
lediglich der Anfang. Man wird sich in dreidimensionalen Welten bewegen und auf das
Geschehen selbst Einfluß nehmen können. Dabei beschränkt sich die Interaktivität nicht
nur auf das Aufgeben einer Bestellung.{3.2}.
19
Parkrauminformationssysteme
2.3.2 WWW, HTML, Webbrowser und Webserver
Die Geschichte des World Wide Web begann um 1990 in Genf. Ein britischer Informatiker am Genfer Hochenergieforschungszentrum CERN (Conseil Européen pour la
Recherche Nucleaire), startete zusammen mit einigen Kollegen eine Initiative. Sie sollte
über das Internet einen neuartigen Informationsaustausch zwischen Wissenschaftlern
ermöglichen. Dabei sollten wissenschaftliche Dokumente online sichtbar gemacht werden, wobei einfache Textformatierung und das Einbinden von Grafik möglich sein sollte.
Die entscheidendste Idee dabei war, das Ganze so zu gestalten, daß die Dokumente
Verweise auf beliebige andere Dokumente enthalten können. Diese Hypertextfunktionalität sollte auch ihre Funktion bewahren, wenn die Dokumente auf ganz anderen
Internet-Servern liegen.
Die Grundlage dieser Initiative sollten das neue Dateiformat HTML (Hypertext Markup
Language) und das neue Internet-Protokoll HTTP (Hypertext Transfer Protocol) bilden.
Weiter geplant war eine Anwendungsoberfläche, die Dateien online anzeigt und Verweise ausführt. Wegen des Hypertext-Charakters wurde das ganze Projekt „World Wide
Web“ (weltweites Netz) getauft.
Ab 1993 wurde das WWW auch außerhalb des CERN - im Internet - zwischen ausgewählten Rechnern eingesetzt. Das WWW kam so gut an, daß man daraus einen neuen
Dienst im Internet machte.
Gleichzeitig wurde bereits begonnen, WWW-Server einzurichten, die das neue HTTPProtokoll unterstützten. Erste Client-Programme für Endanwender wurden entwickelt.
Softwareentwickler wurden von der Idee des WWW angesteckt und entwickelten fieberhaft die ersten WWW-Browser.
Was bietet das WWW?
Es ist ein weltweites Informationssystem, in dem multimedial und interaktiv gearbeitet
werden kann, indem man Informationen, Dateien, Bilder, Töne, Videos usw. per Mausklick abruft.
Es ist ein Hypertextsystem, d. h. es wird in Textdokumenten mit elektronischen Querverweisen auf andere Text- und Informationsquellen verwiesen. Jede dieser Seiten hat
eine individuelle Adresse, die einem sogenannten URL (Uniform Ressource Locator)Format zugeordnet ist. Die URL oder die Adresse setzt sich wie folgt zusammen:
Protokoll-Kennung://Server-Adresse,Verzeichnispfad/Dateiname mit Dateinamenerweiterung
Beispiel: http://www.uni-stuttgart.de
Kennzeichnend für das WWW ist der Beginn einer Adresse. Das http:// bedeutet, daß es
sich um ein Dokument im Hypertext handelt und dafür ein bestimmtes Protokoll benötigt,
nämlich das Hyper Text Transfer Protocol.
HTML bedeutet HyperText Markup Language. Es handelt sich dabei um eine Sprache,
die mit Hilfe von SGML (Standard Generalized Markup Language) definiert wird. SGML
ist als ISO-Norm 8879 festgeschrieben.
20
Parkrauminformationssysteme
HTML baut auf dem HTTP-Protokoll auf. Es ist eine sogenannte Dokumentenbeschreibungssprache (oder auch Dokumentenformat) und keine Programmiersprache, denn mit
einer Sprache wie HTML werden die logischen Strukturen eines Dokuments beschrieben und kein Programm im eigentlichen Sinn erstellt. Daraus resultieren auch die
unterschiedlichen Darstellungen von Webseiten in verschiedenen Browsern.
Als Auszeichnungssprache enthält HTML daher Befehle zum Markieren typischer Elemente eines Dokuments, wie Überschriften, Textabsätze, Listen, Tabellen oder
Grafikreferenzen.
Das Beschreibungsschema von HTML geht von einer hierarchischen Gliederung aus.
HTML beschreibt Dokumente. Dokumente haben globale Eigenschaften wie zum Beispiel einen Titel oder eine Hintergrundfarbe. Der eigentliche Inhalt besteht aus
Elementen, zum Beispiel einer Überschrift 1. Ordnung. Einige dieser Elemente haben
wiederum Unterelemente. So enthält ein Textabsatz zum Beispiel eine als fett markierte
Textstelle, eine Aufzählungsliste besteht aus einzelnen Listenpunkten, und eine Tabelle
gliedert sich in einzelne Tabellenzellen.
Die meisten dieser Elemente haben einen fest definierbaren Erstreckungsraum. So geht
eine Überschrift vom ersten bis zum letzten Zeichen, eine Aufzählungsliste vom ersten
bis zum letzten Listenpunkt, oder eine Tabelle von der ersten bis zur letzten Zelle. Auszeichnungen markieren Anfang und Ende von Elementen.
HTML und das WWW sind eng miteinander verbunden. Hinter der Normung von HTML
und dem WWW steht das World Wide Web-Consortium mit Sitz in Genf. Auf dem Server
dieser Organisation sind wichtige Informationen rund um das World Wide Web und aktuelle Entwicklungen im WWW zu finden (http://www.w3.org).
TCP/IP ist der kleinste gemeinsame Nenner des gesamten Datenverkehrs im Internet.
Erst durch dieses Protokoll wurde historisch gesehen aus einem begrenzten Netz ein
Netz der Netze. Egal, ob man WWW-Seiten aufruft, E-Mails versendet, mit FTP Dateien
downloadet oder mit Telnet auf einem entfernten Rechner arbeitet: stets werden die Daten auf gleiche Weise adressiert und transportiert. TCP bedeutet Transmission Control
Protocol (Protokoll für Übertragungskontrolle), IP bedeutet Internet Protocol.
Wenn eine E-Mail verschickt oder eine HTML-Datei im WWW aufgerufen wird, werden
die Daten bei der Übertragung im Netz in kleine Pakete zerstückelt. Jedes Paket enthält
eine Angabe dazu, an welche Adresse es geschickt werden soll, und das wievielte Paket innerhalb der Sendung es ist.
Die Adressierung besorgt das IP. Dazu gibt es ein Adressierungsschema, die
sogenannten IP-Adressen.
Daß die Datenpakete auch wirklich beim Empfänger ankommen, und zwar in der richtigen Reihenfolge, dafür sorgt das TCP. Das TCP verwendet Sequenznummern für die
einzelnen Pakete einer Sendung. Erst wenn alle Pakete einer Sendung vollständig beim
Empfänger angekommen sind, gilt die Übertragung der Daten als abgeschlossen.
Jeder Rechner, der am Internet teilnimmt, ist mit einer IP-Adresse im Netz angemeldet.
Rechner, die ans Internet angeschlossen sind, werden als Hosts oder Hostrechner bezeichnet. Wenn man also mit dem PC im WWW surft oder neue E-Mails abholt, ist man
mit einer IP-Adresse im Internet angemeldet. Der Zugangsprovider, über dessen Hostrechner man sich einwählt, kann feste IP-Adressen für den Nutzer einrichten. Große
21
Parkrauminformationssysteme
Zugangsprovider, etwa Online-Dienste wie CompuServe oder AOL, vergeben auch personenunabhängig dynamische IP-Adressen für jede Internet-Einwahl. Damit ein
Rechner am Internet teilnehmen kann, muß er über eine Software verfügen, die das
TCP/IP-Protokoll unterstützt. Unter MS Windows ist das beispielsweise die Datei winsock.dll im Windows-Verzeichnis.
WWW-Browser sind Präsentationsprogramme für HTML-Dokumente, die auf einer vorher zu installierenden Internet-Basis-Software aufsetzen und das Navigieren im World
Wide Web (WWW) erlauben.
WWW-Browser unterstützen in der Regel nicht nur das Präsentieren von HTMLDateien, sondern auch andere Internet-Dienste. So kann man mit Hilfe von WWWBrowsern z.B. auch Dateien downloaden mit FTP oder Newgroups-Nachrichten lesen.
Darüber hinaus kann man mit WWW-Browsern auch offline HTML-Dateien auf dem eigenen Rechner lesen.
Der erste WWW-Browser für graphische Benutzeroberflächen, der Browser „Mosaik“,
wurde Marc Andreessen entwickelt. Die Programmierer von Mosaic erfanden auch neue
Features, die sie in ihren WWW-Browser implementierten, ohne daß diese Features
standardisiert waren. Marc Andreessen stieg schließlich aus dem Mosaic-Projekt aus
und wurde Mitbegründer einer neuen Firma für WWW-Software: Netscape.
In der zweiten Jahreshälfte 1993 brachten einflußreiche Blätter wie die New York Times
erste Artikel über das Internet. Dadurch wuchs die Anzahl von Serverbetreibern im Internet, die sich die frei verfügbare HTTP-Software installierten und damit WWW-fähig
wurden. Hunderte, Tausende Menschen mit Internet-Zugang und Zugang zu Servern
begannen, HTML fürs WWW zu schreiben
Die Anzahl von Technologien und Softwarelösungen im WWW-Bereich ist heute kaum
noch überschaubar. Doch je bunter und unübersichtlicher der Markt, desto wichtiger
werden allgemein anerkannte und weitgehend eingehaltene Standards wie HTML und
andere Sprachen, die vom W3-Konsortium normiert werden.
Webserver - Client-Server-Technologie
Für die einzelnen Internet-Dienste wie World Wide Web, Gopher, E-Mail, FTP usw. muß
auf einem Hostrechner, der anderen Rechnern diese Dienste anbieten will, eine entsprechende Serversoftware laufen. Ein Hostrechner kann einen Internet-Dienst nur
anbieten, wenn eine entsprechende Serversoftware auf dem Rechner aktiv ist, und
wenn der Rechner "online" ist.
Server sind Programme, die permanent darauf warten, daß eine Anfrage eintrifft, die
ihren Dienst betreffen. So wartet etwa ein WWW-Server darauf, daß Anfragen eintreffen, die WWW-Seiten auf dem Serverrechner abrufen wollen.
Clients sind dagegen Softwareprogramme, die typischerweise Daten von Servern anfordern. Ein WWW-Browser ist beispielsweise ein Client. Wenn man etwa auf einen
Verweis klickt, der zu einer HTTP-Adresse führt, startet der Browser, also der WWWClient, eine Anfrage an den entsprechenden Server auf dem entfernten Hostrechner.
Der Server wertet die Anfrage aus und sendet die gewünschten Daten. Um die Kommunikation zwischen Clients und Servern zu regeln, gibt es entsprechende Protokolle.
22
Parkrauminformationssysteme
Client-Server-Kommunikation im WWW etwa regelt das HTTP-Protokoll. Ein solches
Protokoll läuft oberhalb des TCP/IP-Protokolls ab.
Daß ein Client Daten anfordert und ein Server die Daten sendet, ist der Normalfall. Es
gibt jedoch auch "Ausnahmen". So kann ein Client nicht nur Daten anfordern, sondern
auch Daten an einen Server schicken: zum Beispiel, wenn man per FTP eine Datei auf
den Serverrechner hochladen möchte, wenn eine E-Mail versandt oder im WWW ein
Formular ausfüllt und abschickt wird. Bei diesen Fällen redet man auch von Client-Push
("Client drängt dem Server Daten auf").
Ein anderer Ausnahmefall ist es, wenn der Server zuerst aktiv wird und dem Client etwas ohne dessen Anforderung zuschickt. Das nennt man Server-Push ("Server drängt
dem Client Daten auf"). Neue Technologien wollen diesen Ausnahmefall zu einer Regel
erheben: die sogenannten Push-Technologien. Diese Technologien sollen ermöglichen,
daß ein Client regelmäßig Daten empfangen kann, ohne diese eigens anzufordern. Dadurch sind Broadcasting-Dienste wie aktuelle Nachrichten usw. realisierbar. Netscape
und Microsoft Internet Explorer (beide ab Version 4.0) haben entsprechende Schnittstellen, um solche Dienste in Anspruch zu nehmen {3.2}, {3.4}.
23
Parkrauminformationssysteme
2.4 CGI-Schnittstellen und Perl
Die Erklärungen zu diesem Kapitel sind von {3.4} übernommen.
2.4.1 CGI: Common Gateway Interface
Das Common Gateway Interface (allgemeine Vermittlungsrechner-Schnittstelle) ist eine
Möglichkeit, Programme im WWW bereitzustellen, die von HTML-Dateien aus aufgerufen werden können, und die selbst HTML-Code erzeugen und an einen WWW-Browser
senden können.
CGI- das sind Programme, die auf einem Serverrechner im Internet liegen und bei Aufruf bestimmte Daten verarbeiten. Die Datenverarbeitung geschieht auf dem
Serverrechner. CGI-Programme können auf dem Serverrechner Daten speichern, zum
Beispiel, wie oft auf eine WWW-Seite zugegriffen wurde oder was ein Anwender in ein
Gästebuch geschrieben hat. Bei entsprechendem Aufruf kann ein CGI-Programm gespeicherte Daten auslesen und daraus HTML-Code generieren. Dieser „dynamisch“
erzeugte HTML-Code wird an den aufzurufenden WWW-Browser eines Anwenders übertragen und kann dort individuelle Daten in HTML-Form anzeigen, zum Beispiel den
aktuellen Zugriffszählerstand einer WWW-Seite.
Die sogenannte CGI-Schnittstelle muß von der WWW-Server-Software unterstützt werden.
Es gibt keine Vorschriften darüber, in welcher Programmiersprache ein CGI-Programm
geschrieben ist. Damit das Programm auf dem Serverrechner ausführbar ist, muß es
entweder für die Betriebssystemumgebung des Servers als ausführbares Programm
kompiliert worden sein, oder es muß auf dem Server ein Laufzeitinterpreter vorhanden
sein, der das Programm ausführt. Wenn ein Server ein Windows-NT Rechner ist, können CGI-Skripte auch exe-Dateien sein, die mit 32_Bit-Compilern für C, Pascal, Visual
Basic usw. erzeugt wurden. Die meisten heutigen CGI-Programme sind in der UnixShell-Sprache oder in Perl geschrieben.
In der folgenden Abbildung ist dargestellt, wie der Anwender in einer angezeigten
HTML-Datei in einem Formular Daten eingeben kann, z.B. eine Suche in einer Datenbank formulieren.
24
Parkrauminformationssysteme
Abbildung 2.1 CGI-Beispiel. Quelle: http://www.teamone.de/selfhtml
Nach dem Abschicken des Formulars an den Serverrechner wird ein CGI-Programm
aufgerufen. Das CGI-Programm setzt die vom Anwender eingegebenen Daten in eine
Datenbankabfrage um. Wie das genau funktioniert, hängt von der Datenbank ab. Die
Datenbankanwendung liefert die Suchergebnisse an das aufrufende CGI-Programm
zurück, oder schreibt sie in eine Datei, die das CGI-Programm dann auslesen kann. Das
CGI-Programm erzeugt nun HTML-Code, wobei es die Suchergebnisse als Daten in den
HTML-Code einbaut. Den HTML-Code sendet das CGI-Programm an den WWWBrowser, der die Suchabfrage gestartet hat. Am Bildschirm des Anwenders verschwindet die WWW-Seite mit dem Suchformular. Statt dessen erscheint eine neue Seite mit
den Suchergebnissen, dynamisch generiert von dem CGI-Programm.
Die CGI-Schnittstelle
CGI (Common Gateway Interface) erlaubt es einem WWW-Browser, über einen WWWServer Programme auszuführen. Solche Programme (oder Skripts) können beispielsweise Formulareingaben aus HTML-Dateien verarbeiten, auf dem Serverrechner Daten
speichern und dort gespeicherte Daten auslesen. Auf diese Weise werde WWW-Seiten
zu Oberflächen für „Anwendungen“, beispielsweise für elektronische Warenbestellung
oder zum Abfragen von Datenbanken.
Die sogenannte CGI-Schnittstelle steht zur Verfügung, wenn ein WWW-Server installiert
ist, der CGI unterstützt.
Die CGI-Schnittstelle besteht aus:
• einem bestimmten Verzeichnis auf dem Serverrechner, das CGI-Programme enthalten darf. Meist erhält dieses Verzeichnis den Namen „cgi-bin“ oder „cgi-local“- CGIProgramme oder CGI-Skripts werden dann nur ausgeführt, wenn sie in diesem Verzeichnis liegen. Welches das CGI-Verzeichnis ist und wie es heißt, wird beim
Einrichten des WWW-Servers festgelegt.
• einer Reihe von Daten, die der WWW-Server speichert, und die ein CGI-Skript auslesen kann (und zum Teil auslesen muß), um Daten verarbeiten zu können. Diese
Daten speichert der WWW-Server in sogenannten CGI-Umgebungsvariablen.
25
Parkrauminformationssysteme
Ein Entscheidender Vorteil der CGI-Schnittstelle ist die Tatsachen, daß es sich – ähnlich
wie bei HTML – um einen kommerziell unabhängigen kostenlosen, produktübergreifenden Standard handelt. Andere Schnittstellen, die von kommerziellen Herstellern
eingeführt wurden, sind z.B. die API-Schnittstelle von Netscape, oder die ISAPISchnittstelle von Microsoft.
CGI-Aufrufe aus HTML und HTML-Ausgabe über CGI
HTML und CGI kommunizieren in beide Richtungen: es ist einerseits möglich, aus einer
HTML-Datei, die gerade am Bildschirm angezeigt wird, ein CGI-Skript aufzurufen; anderseits kann ein CGI-Skript HTML-Code an den WWW-Browser übertragen, den dieser
dann am Bildschirm ausgibt.
CGI-Skripts können auch Daten auf einem Server speichern und zu einem späteren
Zeitpunkt wieder auslesen.
Ein CGI-Skript kann aus einer HTML-Datei auf verschiedene Arten aufgerufen werden.
Die Aufrufsart hängt dabei von der späteren Verwendung ab und auch davon, ob der
Anwender Daten eingeben sollte/müßte. Generell gibt es für CGI-Skripte, die keine Anwender Daten benötigen mehrere Möglichkeiten. Welche Methode letztlich gewählt wird,
ist wohl von den Vorlieben des Programmierers abhängig.
Die verscheidenden Arten, wie ein CGI-Skript aus einer HTML-Datei aufgerufen werden
kann sind im folgenden erläutert :
• Aufruf über ein Formular. Dabei steht im einleitenden <form>-Tag der Aufruf des
CGI-Skripts (Bsp.: <form action=“/cgi-bin/guestbook.pl“ method=“get“>). Der Aufruf
erfolgt nach dem Absenden des Formulars. Die vom Anwender eingegebenen oder
ausgewählten Daten stehen dem CGI-Skript zur Verarbeitung und Auswertung zur
Verfügung, z.B. bei Suchdiensten oder Gästebüchern. Diese Art wird verwendet,
wenn vom Anwender Dateneingaben erwartet werden.
• Aufruf über Verweise. Es genügt die URL-Adresse des Verweisziels das ausführbare
CGI-Skript anzugeben (z.B. <a href=“cgi-bin/statistik.pl“>Tagesstatistik aufrufen</a>). Dies ist sinnvoll für CGI-Skripts, die keine Eingabe vom Anwender
benötigen, sondern lediglich feste Datenausgaben erzeugen.
• Aufruf über eine Grafikreferenz. Auch dabei genügt es, als URL-Adresse in der srcAngabe des <img>-tags das ausführbare CGI-Skript anzugeben (z.B. <img src=“/cgibin/counter.pl“>). Dabei muß das CGI-Skript allerdings eine Graphikdatei im GIFoder JPEG-Format an den WWW-Browser zurücksenden. Die meisten graphischen
Zugriffszähler (Anzahl der Besucher als Graphik) basieren auf diesem Prinzip.
• Aufrufe über eine Server Side Include (SSI) Anweisung in einer HTML-Datei, z.B. mit
der Anweisung <!--#exec cgi=“/cgi-bin/counter.pl“ -->. Das ist sehr praktisch, um mit
Hilfe eines CGI-Skripts dynamische Information in Textform in eine HTML-Datei einzubinden. Auch andere Programme (.exe-Dateien) können mit diesem Aufruf
gestartet werden.
• über automatisches Laden des ausführbaren CGI-Skripts/CGI-Programms. Dazu
gibt man in dem <meta>-Befehl einfach anstelle einer anderen HTML-Datei die URLAdresse des ausführbaren CGI-Skripts an (z.B. <meta http-equiv=“refresh“ content=“0; URL=/cgi-bin/welcome.pl“>). Refresh bedeutet dabei, daß die
26
Parkrauminformationssysteme
Datei/Programm neu geladen bzw. ausgeführt werden soll. Content gibt die Sekundenzahl an, nach der neu geladen bzw. das Programm neu ausgeführt werden soll.
CGI-Umgebungsvariablen
Zur sogenannten CGI-Schnittstelle gehören auch die sogenannten CGIUmgebungsvariablen. Ein installierter WWW-Server stellt solche Variablen auf Betriebssystemebene zur Verfügung. Bei jedem Aufruf eines CGI-Skripts füllt er einige dieser
Variablen mit Informationen. Das CGI-Skript kann den Inhalt dieser Variablen auslesen
und für eigene Zwecke nutzen. Das CGI-Skript kann einige dieser Variablen auch selbst
mit Inhalt füllen oder einen dort gespeicherten Inhalt ändern. CGI-Umgebungsvariablen
existieren unabhängig von den Variablen, die in einem CGI-Script selbst definiert werden können.
In CGI-Umgebungsvariablen ist während der Ausführung eines CGI-Skripts beispielsweise der Name des Serverrechners gespeichert, oder Information zum verwendeten
Browser des Anwenders, der den Aufruf des CGI-Programms verursacht hat. Weitere
CGI-Umgebungsvariablen sind in {3.4} aufgeführt.
Server Side Includes (SSI)
Mit Hilfe von Server Side Includes (SSI) kann man direkt innerhalb von HTML-Dateien
dynamische Information, z.B. Datum und Uhrzeit, einbinden. Man kann auch CGIProgramme starten und deren Ausgabe, z.B. den Zählerstand mit Anzahl der Zugriffe
auf die aktuelle Datei, in die HTML-Datei einbinden. Oder man gibt den aktuellen Inhalt
diverser CGI-Umgebungsvariablen direkt in HTML aus – ohne Umweg über ein separates CGI-Script.
Server Side Includes werden nur ausgeführt, wenn der WWW-Browser die HTML-Datei
über einen installierten WWW-Server aufruft, also mit einer URL-Adresse vom Typ
http://.... Voraussetzung ist ferner, daß der installierte WWW-Server die Server Side
Includes unterstützt. Nicht alle WWW-Server tun das, andere interpretieren nur einen
Teil der möglichen Angaben. Wenn der Server keine Server Side Includes kennt, funktionieren die entsprechenden Anweisungen in der HTML-Datei nicht.
Damit ein WWW-Server sofort erkennt, daß eine HTML-Datei Server Side Include Anweisungen enthält, ist es wichtig, solche HTML-Dateien mit einer speziellen
Dateinamenendung zu kennzeichnen. Üblich sind die Dateiendungen .shtml oder .sht.
Die meisten Server ignorieren Server Side Include Anweisungen, wenn diese in einer
gewöhnlichen HTML-Datei mit der Endung .html oder . htm stehen.
Server Side Includes müssen in einer HTML-Datei innerhalb eines Kommentars notiert
sein. Es gibt verschiedene Server Side Include Anweisungen, beginnend mit einem Gatterzeichen #.
Bei der Anweisung #exec, die ein Programm auf dem Serverrechner ausführt, muß man
den Typ des Programms (z.B. cgi) und als Wert die Adresse des ausführbaren Programms (z.B.: “/cgi-bin/programm.pl““) angegeben werden. Um ein beliebiges
Programm auf dem Serverrechner zu starten, muß folgende Server Side Include Anweisung verwendet werden: <!--#exec cmd=“prog/search.exe *.htm“--> {3.4}
27
Parkrauminformationssysteme
2.4.2 Allgemeines zu Perl
Perl steht für Practical Extraction and Report Language. Die Sprache stammt aus der
Unix-Welt und wurde 1987 entwickelt. Perl ist das Werk einer Einzelperson: der Erfinder, Larry Wall, hat auch heute noch die Oberhand über die Fortentwicklung der Syntax.
Es gilt deshalb als Kultfigur.
Entsprechend der Unix-Philosophie ist Perl eine offene Sprache. Ihr Umfang und ihre
Möglichkeiten wachsen mit neuen Versionen des Perl-Interpreters.
Perl ist eine Scriptsprache, deren Haupteinsatz nicht umfangreiche Anwendungen sind,
sondern trickreiche Automatismen in der täglichen Datenverarbeitung. Einen wahren
Boom erlebt die Sprache aber vor allem als Lieblingswerkzeug der CGI-Programmierer
im World Wide Web.
Perl gilt als Hackersprache, als eine Sprache, in der man unglaubliche Dinge in einer
einzigen Programmanweisung erledigen kann.
Dateien mit Perl-Anweisungen werden nicht für bestimmte Betriebsumgebungen kompiliert, sondern von einem Interpreter-Programm beim Aufruf abgearbeitet. Der Nachteil
dieses Prinzips: Skripts sind nicht so schnell ausführbar wie kompilierte und gelinkte
Programme; daher eignen sie sich eher für kleinere Prozeduren und Anwendungen. Der
Vorteil: Skripts brauchen nicht für jede Betriebsumgebung neu kompiliert werden; daher
sind sie problemlos portabel und laufen überall, wo ein Perl-Interpreter installiert ist.
Der Perl-Interpreter
Perl-Dateien sind einfache ASCII-Dateien, die Programmanweisungen in der Syntax von
Perl enthalten. Solche Dateien können mit jedem Texteditor erstellt oder bearbeitet werden. Zum Ausführen von Dateien mit Perl-Programmanweisungen ist jedoch der PerlInterpreter erforderlich.
Perl-Interpreter sind für fast alle Betriebssysteme als Freeware erhältlich {3.4}.
28
Parkrauminformationssysteme
2.5 Objektorientierte Programmierung in Java
Problemorientierte Sprachen
Problemorientierte Sprachen - auch prozeduale Sprachen – sind unabhängig von einem Computersystem. Lediglich der Übersetzer (Compiler) muß an das jeweilige
System angepaßt sein und den entsprechenden Maschinencode erzeugen. Problemorientierte Programmiersprachen werden auch als höhere Programmiersprachen
bezeichnet.
Diese Sprachen besitzen problemorientierten Charakter, d.h., sie sind in ihrer Struktur
und ihrem Befehlsvorat auf bestimmte Anwendungen zugeschnitten.
Höhere Programmiersprachen sind im Allgemeinen leichter zu erlernen als maschinenorientierte Sprachen. Der Programmcode kann auch bei anderen Rechnersystemen
wieder verwendet werden.
Das Programm der höheren Programmiersprache verbraucht mehr Speicherplatz und ist
meist auch langsamer als das vergleichbare Maschinenprogramm.
Beispiele für Problemorientierte Programmiersprachen: COBOL, FORTRAN, Basic,
C/C++, Java [Krüger 1 1998].
Objektorientierte Programmierung am Beispiel von JAVA
Die Weiterentwicklung der modularen Programmiersprache führte zur objektorientierten
Programmiersprache. Das Problem der modularen Programmierung ist, daß globale
Variablen in jedem Teil des Programms aufgerufen und überschrieben werden können
sowie die fehlende Verbindung zwischen den Daten eines Programms und den sie manipulierenden Funktionen. Dies führt dazu, daß große Programme sehr leicht
unübersichtlich werden und sich schwer testen lassen.
1970 erkannte David Parnas das Problem und hatte die Idee, jede einzelne Variable in
einem Modul einzukapseln. Direkter Zugriff auf die Variablen wurde nur über eine bestimmte Schnittstelle mit einem Satz von Operationen, wie z.B. über Prozeduren oder
Funktionen, erlaubt. Sollen andere Module ebenfalls auf die Variable zugreifen, können
sie dies nur indirekt, indem sie die Variable über eine Schnittstelle für ein solches Modul
aufrufen [13].
Entwicklung – Die Geschichte von Java
1991 wurde bei der Firma Sun Microsystems ein Projektteam mit dem Codenamen
„Green Project“ gegründet. Bill Joy, James Gosling und weitere Mitarbeiter hatten die
Aufgabe, ein System zu entwickeln, welches unabhängig von einer konkreten Hardwareausprägung und möglichst klein und auf jeden Fall objektorientiert sein sollte.
Programme für dieses System, welches ursprünglich unter dem Namen OAK (Object
Application Kernel) bekannt wurde, sollte beispielsweise über Fernsehkanäle auf Fernseher geladen werden können oder aber als Steuerung anderer technischer
Haushaltsgeräte dienen (Settop-Boxen). Später wurde der Name „Java“ gewählt. „Java“
ist in der amerikanischen Umgangssprache gleichbedeutend mit „starken Bohnenkaffee“; von diesem trinken Programmierer eine ganze Menge
29
Parkrauminformationssysteme
Zur gleiche Zeit erkannte man, daß das World Wide Web eine interessante Plattform
und ein geeignetes Transportmedium für Anwendungen unter Java ist. Der Entwicklung
sind nun (fast) keine Grenzen mehr gesetzt. In naher Zukunft könnte vielleicht ein Applet
(Java Programm; wird später erklärt) auf unserem Toaster installiert sein, welches die
Steuerung des Gerätes übernimmt und ggf. auch eine Nachricht aus dem Internet empfängt und den Röstvorgang startet.
Die „Java Virtual Machine“ (Java Compiler und Interpreter; ist in den meisten Browsern
eingebaut) wurde für verschiedene (bestehende) Betriebssysteme verfügbar gemacht.
Java-Programme können daher von Servern aus dem Internet heruntergeladen werden
und auf dem lokalen Rechner ausgeführt werden. Die Zusammenarbeit mit Firmen wie
Netscape, SpyGlass und ORACLE ermöglicht inzwischen die Ausführung von JavaProgrammen innerhalb von WWW-Seiten direkt im Browser. Der Zugang zur Software
erfordert keine Kenntnisse über das Betriebssystem, statt dessen wird mit dem Browser
nur ein Link auf der WWW-Seite angestoßen.
Verschiedene Schutzmechanismen regeln, welche lokalen Ressourcen ein Programm
nutzen darf. Beispielsweise darf ein im Browser ausgeführtes Programm, welches aus
dem Internet heruntergeladen wurde, nicht auf die Festplatte zugreifen.
Vor der Entwicklung von Java (bzw. OAK) stand die Frage, ob eine völlig neue Sprache
geschaffen werden soll, oder ob eventuell Bestandteile verfügbarer Sprachen mitgenutzt
werden sollten. Gosling sprach sich gegen bestehende Sprachen aus, da „moderne
Programmiersprachen“ wie C oder C++ bereits mehrere Jahrzehnte ohne größere Veränderungen im Einsatz waren. Um C++-, Smalltalk- und Eiffel-Programmierern den
Umstieg auf Java zu erleichtern, wurden jedoch Konzepte dieser Sprachen sowie die
Syntax von C++ zugrunde gelegt. Dabei wurden all diejenigen Elemente der Sprache
C++ fortgelassen, welche immer wieder Probleme bereiten und zu Mißverständnissen
führen. Dieses sind insbesondere Zeiger und die schwierig zu implementierende Möglichkeit der Mehrfachvererbung. Im Gegensatz wurden Datentypen wie „sichere“ Felder
aufgenommen, die selbsttätig den Zugriff auf den Speicher überwachen. Die gesamte
Speicherverwaltung erfolgt durch die „Java Virtuell Machine“, sie liegt nicht mehr in den
Händen des Programmierers.
Sowohl die kostenlose Weitergabe der Java-Entwickungsumgebung „Java Development
Kit“ (JDK) als auch die Implementierung der „Java Virtual Machine“ in verschiedenen
Browsern fördern die Verbreitung der „neuen“ Programmiersprache. Durch zusätzliche
Standardfunktionalitäten wie JDBC (Java Database Connectivity) wird Java zudem zu
einer mächtigen Programmiersprache für verschiedene Anwendungsgebiete. Insbesondere können Seiten des World Wide Web zu echten Client / Serveranwendungen
werden: das im Browser ablaufende Programm erzeugt eine Anfrage an die Datenbank,
erhält das Ergebnis und präsentiert dieses in Form einer WWW-Seite. Im Gegensatz
zum bisher hauptsächlich hierfür genutzten CGI (Common Gateway Interface) werden
die WWW-Server weniger belastet, da die Programme auf dem Client und nicht mehr
auf dem Server ablaufen und einer direkte Kommunikation zwischen Datenbankrechner
und Client erfolgt. Eventuell vorhandene Sicherheitsprobleme könnten dadurch gelöst
werden [RRZN 1 1999].
30
Parkrauminformationssysteme
Einsatz
Anwendungen, die im Internet und/oder auf unterschiedlichen Rechnersystemen laufen
sollen – verteilte Anwendungen.
Vorteil
JAVA ist eine vollständig objektorientierte Programmiersprache. Nicht alle Sprachelemente von C++ sind realisiert, wodurch JAVA eine relativ schlanke und übersichtliche
Sprache ist.
JAVA-Compiler sind fast für jedes System kostenlos erhältlich. JAVA besitzt eine umfangreiche Programmbibliothek (Netzwerk, Graphik, Datenbanken, Threads,
Benutzeroberflächen).
Nachteil
In JAVA ist keine hardware-nahe Programmierung möglich, da das Konzept dieser
Sprache auf die Portabilität zu anderen Computersystemen ausgerichtet ist. Die Unterstützung der aktuellen Java-Version hinkt bei Browsern und bestimmten Plattformen
stark der neusten Entwicklung hinterher.
Was bedeutet objektorientiert Programmieren?
Die Grundidee der objektorientierten Programmierung liegt in der experimentellen
Sichtweise des Programmierprozesses. Jede Art der Programmierung kann als Modellbildungsprozess und ewiger Kreislauf zwischen den einzelnen Stufen des
Entwicklungsprozesses gesehen werden.
In der Objektorientierten Programmierung werden nicht der Ablauf und die möglichen
Schritte zur Problemlösung betrachtet, sondern die Objekte der realen Welt, die in dem
Problem vorkommen. Diese Objekte werden über die objektorientierten Methoden analysiert und über die Programmiersprache dargestellt. Die Aufteilung der notwendigen
Teilaufgaben wird nach Klassen vorgenommen. Um die entscheidenden Ziele der Entwicklung großer Softwaresysteme, wie z.B. Produktivitäts- und Qualitätssteigerung, zu
realisieren, werden bei objektorientierten Programmiersprachen die Wiederverwendbarkeit, Erweiterbarkeit und Kompatibilität korrekt arbeitender Programmelemente in den
Vordergrund gestellt. Die Produktivität der Programme wird durch graphische Benutzeroberflächen und aufwendige Kommunikationsschnittstellen erhöht. Die objektorientierte
Vorgehensweise versucht durch Abstraktion, Datenkapselung, Modularität und Hierachienprinzipien diese Ziele zu erfüllen.
Die Stufen der Objektorientierten Programmierung
•
•
•
Objektorientierte Analyse (OOA)
In der objektorientierten Analyse wird ein fachliches Modell des Anwendungsbereiches erstellt. Es wird das „WAS“ des Systems modelliert.
Objektorientierter Entwurf (engl.: object oriented design OOD)
In dem objektorientierten Entwurf wird aus dem fachlichen Modell ein technisches
Modell der Software erstellt. Es wird das „WIE“ der Umsetzung geklärt.
Objektorientierte Programmierung (OOP)
31
Parkrauminformationssysteme
In der objektorientierten Programmierung wird das technische Modell in Quelltexte
einer Programmiersprache umgesetzt. Es entsteht die Software.
Prinzipien der OOP
•
•
•
•
•
•
Abstraktion: Suchen gemeinsamer Eigenschaften von Objekten. Die Objekte können
zu übergeordneten Objekten zusammengefaßt werden.
Kapselung: Struktur und Verhalten eines Objektes wird getrennt. Keine globalen Variablen in (Idealfall)
Modularität : Die Kommunikation zwischen verschiedenen Objekten und zwischen
Objekten und Programmen ist streng geregelt.
Hierarchie: Typen und Klassen können in einer Hierarchie stehen. Eigenschaften
und Operationen werden vererbt.
Typisierung : Ein Typ faßt Objekte mit gemeinsamen Eigenschaften zusammen.
Nebenläufigkeit. Mehrere Vorgänge können gleichzeitig durchgeführt werden
Klassen, Objekte, Vererbung und Polymorphismus (Vielgestaltigkeit) sind der Kern der
objektorientierten Entwicklung. [RRZN 2 1999]
32
Parkrauminformationssysteme
2.5.1 Applets und Applikationen
Es werden zwei verschiedene Formen von ausführbaren Java-Programmen unterschieden: Applets und Applikationen
Applets
Ein Applet ist ein Java-Programm, welches über eine HTML-Seite aufgerufen wird. Die
HTML-Seite kann über den lokalen Rechner gespeichert sein oder aber über das Internet geladen werden. Zum Laden und Ausführen dient entweder der Appletviewer des
Java Development Kit (JDK) oder ein Java-fähiger Browser für das World Wide Web,
wie beispielsweise der Netscape Navigator.
Der Aufruf einer HTML-Datei mit dem Appletviewer kann beispielsweise folgendermaßen aussehen:
• Für eine lokale Datei:
Appletviewer java/demos/beispiel1.html
• Für eine Seite im World Wide Web:
Appletviewer \ http://www.javasoft.com/applets/Hangman/index.html
Eine solche HTML-Datei enthält (mindestens) ein sogenanntes <applet>-Tag, also eine
besondere Marke, welche den Namen der aufzurufenden Java-Klasse enthält:
<applet code=“MyApplet.class“ width=100 height=140></applet>
In der Grundform des <applet>-Tag wird neben der Größe des Applets in der HTMLSeite (in Pixel) auch der Klassennamen angegeben. Bei Verwendung der relativen
Pfadangabe wird die Klasse im selben Verzeichnis gesucht, in welchen die HTML-Datei
gefunden wurde.[RRZN 1 1999]
Aus Sicherheitsgründen darf ein Applet in der Regel weder auf Dateien des lokalen
Rechners zugreifen noch externe Programme auf diesem starten. Eine Ausnahme bilden signierte Applets. Für eine Applikation gelten diese Beschränkungen nicht.
Eine Anleitung, wie Applets signiert werden können befindet sich im Anhang hinter den
angegebenen Links z.B. {5.2}.
Applikationen
Eigenständige Java-Programme werden als Applikationen oder auch „Standalone
Applets“ bezeichnet. Sie können alle Möglichkeiten eines Applet nutzen, also auch graphische Angaben wie in einem Appletviewer starten, sind aber unabhängig von diesem
oder einem Java-fähigen Browser.
Gestartet wird eine Java-Applikation beispielsweise über das Programm Java des JDK.
Als Kommandozeilenargument wird der Name der Klasse angegeben, welche die
„Startmethode“ main enthält.
Das Java-Programm bzw. die auszuführende Klasse muß eine Methode „main“ enthalten, welche beim Start des Programms ausgeführt wird. [RRZN 1 1999].
33
Parkrauminformationssysteme
2.5.2 Grundelemente der Sprache Java
Format von Java-Programmen
Java-Quelltexte sind an kein vorgegebenes Format gebunden; es gibt insbesondere
keine vorgeschriebene Zeilenstruktur. Das Leerzeichen, das Zeilenende, der Zeilenvorschub, der Tabulator und Kommentare werden außerhalb von Zeichenkonstanten und
Zeichenketten (Strings) als Trennzeichen behandelt. Durch sie werden alle Schlüsselwörter und Anweisungen voneinander getrennt.
Der Quellcode darf in einer Datei in einer einzigen Zeile geschrieben werden. Jedoch
hat es sich als sinnvoll herausgestellt, eine Strukturierung des Quelltextes vorzunehmen, um einen Überblick zu wahren [RRZN 1 1999].
34
Parkrauminformationssysteme
3. Mögliche Lösungen zur Verbindung von GIS und Internet
3.1 ImageMapper
Der ImageMapper der Firma alta4 (http://www.alta4.com/index_d.htm) ist eine ArcView
GIS Erweiterung, mit der GIS Karten im Internet dargestellt werden können. Er konvertiert Karten und Daten aus ArcView GIS in interaktive Karten im Internet.
Durch die Wizard-basierte Erweiterung, kann der Kartenauthor spezifizieren was passieren soll, wenn der Nutzer auf die Elemente der Karten klickt.
Eine Imagemap kann auf jedem Server abgelegt werden, ohne daß dieser zusätzliche
Software wie CGI-Skripts oder ähnliches installiert werden muß.
Die Installation des ImageMappers erfolgt durch downloaden einer .zip-Datei. Diese Datei enthält eine .apr-Datei, die in ArcView geöffnet werden muß, und damit der
ImageMapper installiert wird.
Eigenschaften des ImageMappers
• Karten können mit jedem Webbrowser betrachtet werden, der HTML 3.0 unterstützt
• Keine Plugins notwendig
• Keine Applets notwendig
• Keine ActiveX Controls notwendig
• Karten können auf jedem Webserver untergebracht werden
• Es muß keine Software auf dem Server installiert werden
• Keine Berechnung auf Serverseite
• Extrem schnelle Antwort durch vorgefertigte Dokumente
• Keine komplexe Konfiguration (Port-Nummern, Wiederholraten, Time-OutIntervalle...)
• Wird niemals auf ihrem Server crashen
• Absolut unlimitierte Skalierbarkeit ohne komplexe Lastverteilungsprobleme
• Karten können lokal ohne den Server betrachtet werden
• Karten und gesamte Projektfunktionalität kann auf CD gebrannt werden
• keine Programmierung notwendig
• Kartenauthor kann sicherstellen, daß jede Karte seinen kartographischen Ansprüchen genügt
Der ImageMapper ist auf sehr einfache Weise angewandt werden. Für statische Projekte ist er wohl die beste und auch kostengünstigste Alternative zum Internet Map Server.
Sind die gegebenen Daten allerdings dynamisch, steht man vor einem Problem. Bei jeder Veränderung muß der ImageMapper erneut gestartet werden. Da es mit der jetzigen
Version (1.0) nicht möglich ist den ImageMapper über ein Skript anzustoßen, d.h. den
ImageMapper ohne Interaktion mit dem Dialog laufen zu lassen, ist er für diese Anwendung nicht geeignet.
35
Parkrauminformationssysteme
Abbildung 3.1 Ausgangsview in ArcView
In der oberen Menüzeile befindet sich folgendes Symbol, durch das der ImageMapper
gestartet wird:
Durch das Starten des ImageMappers erscheint dieses Fenster:
36
Parkrauminformationssysteme
Abbildung 3.2 Auswahlfenster des ImageMappers
Sind alle Optionen gewählt, kann man durch das Anklicken des Create Map Buttons die
Ergebniskarte als HTML-Seite erzeugen:
37
Parkrauminformationssysteme
Abbildung 3.3 Ergebnisdarstellung durch den ImageMapper in einer HTML-Datei
38
Parkrauminformationssysteme
3.2 Map-TV
Map-TV ist eine Serversoftware der Firma SpatialMedia, die es ermöglicht ArcView
Shapefiles im Internet darzustellen.
Voraussetzung für den Server ist eine WIN32 Maschine. Client-Geräte müssen über
einen Web Browser verfügen (Microsoft Explorer 3/4 oder Netscape 3/4) und sollten in
der Lage sein sich mit dem Map-TV Server über TCP/IP zu verbinden.
Der Browser muß HTML und JavaScript 1.0 unterstützen. Es ist kein Web Server notwendig, da Map-TV bereits einen beinhaltet.
Die Menuleiste, die vom Client aus bedient werden kann umfaßt z.B. folgende Optionen
• Zoom (+/-)
• Drucken
• Kartenausschnitt ändern
• Information
Um ein Map-TV Projekt automatisch anzulegen, aktiviert man die Wizard-Funktion. Angegeben wird ein beliebiger „Theme Name“. Die Wizard-Funktion führt nun durch die
Erstellung eines neuen Projekts. Jedes Projekt muß mindestens ein „Theme“ enthalten.
Ein Theme besteht aus einem ArcView Shapefile. Sind die gewünschten Shapefiles im
Projekt enthalten, kann mit dem Pfad Server | Start Serving der Server aktiviert werden.
Beim folgen dieses Pfades wird grundsätzlich nachgefragt, ob das Projekt gespeichert
werden soll.
In der blauen Titelleiste erscheint der Pfad, der im Browser angegeben werden muß, um
die Internetdarstellung zu betrachten.
Klickt man auf Server | Stop Serving können Änderungen am Projekt vorgenommen
werden.
Abbildung 3.4 Map-TV Wizard Fenster
39
Parkrauminformationssysteme
Das Softwaremodul Map-TV ist für diese Anwendung nicht geeignet, da sie nicht dynamisch anwendbar ist. Ist ein Shapefile im Projekt angegeben und soll dieser Shapefile in
ArcView verändert werden, kann er nur unter einem anderen Namen abgespeichert
werden. So müßte bei jeder Veränderung der Parkraumsituation ein neues Projekt
angelegt werden, was allerdings nur manuell möglich ist.
Zur Darstellung von statischen Situationen ist dieses Modul allerdings eine preiswerte
Alternative zu dem ArcView Internet Map Server der Firma ESRI.
40
Parkrauminformationssysteme
3.3 ArcView Internet Map Server (IMS)
Nach {4.4} ist der IMS wie folgt beschrieben:
Die ArcView Internet Map Server (ArcView IMS) Extension erweitert ArcView GIS um
eine Map-Server Komponente, mit welcher GIS und Mapping Funktionalitäten für das
Internet bereitgestellt werden können.
ArcView IMS schließt einen eingebauten Installations-Wizard und ein gebrauchsfertiges
Java-Applet mit ein, um Daten schnell zu veröffentlichen.
Die interaktive Karten können aus unterschiedlichsten Datenformaten einschließlich
ArcView SHAPE, Arc/INFO COVERAGE, SDE-Layern, DWG, DXF, DGN und einer
Vielzahl an Rastergraphiken hergestellt werden.
So kann jede beliebige Karte, die in ArcView GIS erstellt wurde, einfach und schnell im
Web veröffentlicht werden.
Internet Map Serveranwendungen auf Basis von ESRI Internet-/Intranet Software finden
man an vielen Stellen rund um den Globus. Das Spektrum der Anwendungen ist dabei
äußerst vielfältig und wächst ständig weiter.
Alles, was man dazu benötigt, ist ein Standardbrowser. Es sind keine Plugins oder weitere Softwareprodukte für die Nutzung dieser Internet-Dienste erforderlich!
Abbildung 3.5 Kartendarstellung im Internet mit dem IMS. Quelle:
http://www.infas-geodaten.de/esriweb/wisbd2.html
41
Parkrauminformationssysteme
Abbildung 3.6 Mögliche Anwenderaktionen mit dem IMS
Technische Informationen
Der ArcView Internet Map Server (IMS) wird von zahlreichen Systemen unterstützt. Genaue Informationen sind über {4.4} zu erhalten.
42
Parkrauminformationssysteme
4. Gegebene Daten
Die gegebene Datengrundlage besteht aus fünf Dateien. In den Dateien Parkscheinautomaten.shp und Parken.shp befinden sich Informationen zu den vorhandenen
Parkplätzen. Die Datei Klein.dxf enthält Informationen bezüglich des Grundrisses und
der Straßenzüge; Schraffur.dwg stellt die Gebäude schraffiert dar. Db1.mdb ist eine Datenbank, die in der Tabelle 1 die aktuellen Belegungsdaten der Parkscheinautomaten
enthält.
Gegeben sind die Dateien:
• Parkscheinautomaten.shp
• Parken.shp
• Klein.dxf
• Schraffur.dwg
• Db1.mdb
4.1 Die verschiedenen Dateitypen
Shp – Shapedateien oder auch Shapethemen
Ein Shapethema ist ein ArcView-eigenes Datenformat für raumbezogene Daten. Die
Themen von Shapedateien können in ArcView GIS bearbeitet, d.h. die Geometrie der
Objekte kann editiert werden.
ArcView-Shape-Dateien sind ein einfaches, nicht-topologisches Format zum Speichern
der geometrischen Orts- und Attributinformationen geographischer Objekte.
Im Shape-Dateiformat werden die Geometrie und die Attribute geographisch bezogener
Objekte in bis zu fünf Dateien mit bestimmten Dateinamenserweiterungen definiert. Diese Dateien sollten im gleichen Projektarbeitsbereich abgelegt werden. Im einzelnen
handelt es sich um folgende Dateien:
.shp - die Datei, in der die Geometrie des Objekts gespeichert ist.
.shx - die Datei, in der der Index der Objektgeometrie gespeichert ist.
.dbf - die dBASE-Datei, in der die Attributinformationen der Objekte gespeichert sind.
Wenn eine Shape-Datei als Thema zu einem View hinzugefügt wird, erscheint diese
Datei als Objekttabelle.
.sbn und .sbx - die Dateien, in denen der raumbezogene Index der Objekte gespeichert
ist.
DXF-Dateien
AutoCAD unterstützt neben .dwg-Dateien das Format DXF (Drawing Interchange File),
ein Industriestandardformat, das für den Datenaustausch zwischen CAD- und GISAnwendungen verwendet wird. ArcView ermöglicht das Erstellen von CADZeichnungsthemen aus .DXF-Dateien.
Das DXF-Format ist ein Dateiformat zur Speicherung von Vektorgraphiken.
Eine DXF-Datei besteht im wesentlichen aus Codepaaren und ihren verknüpften Werten. Die Codes, die als Gruppencodes bezeichnet werden, geben die Art der auf sie
folgenden Werte an.
43
Parkrauminformationssysteme
ArcView unterstützt ASCII- und Binär- sowie Teil-DXF-Dateien (nur Elementbereich).
Eine DXF-ASCII-Datei ist eine speziell formatierte Textdatei, die mit einem beliebigen
Texteditor angezeigt und bearbeitet werden kann. Die Datei ist in der Regel in verschiedene Bereiche wie Kopf-, Tabellen-, Block- und Elementbereich aufgeteilt. In jedem
dieser Bereiche werden die entsprechenden Daten gespeichert, die verwendet werden,
um DXF-Dateien in andere Anwendungen zu exportieren
DWG-Dateien
AutoCAD-Zeichnungsdateien (nur ArcView für Windows)
AutoCAD speichert seine Zeichnungsdatenbank in einem eigenen Dateiformat mit der
Dateinamenserweiterung .dwg. ArcView liest diese Dateien direkt ein, um CADZeichnungsthemen zu erstellen. Die .DWG-Dateien werden nicht auf UNIX- und Macintoshplattformen unterstützt. ArcView unterstützt Zeichnungsdateien die mit AutoCAD bis
Version 13 erzeugt wurden.
mdb-Dateien
Eine mdb-Datei ist eine Microsoft Access Datenbankdatei. Die unterschiedlichen Daten
können dort in separaten Tabellen gespeichert werden.
44
Parkrauminformationssysteme
4.2 Inhalt der Dateien
Parkscheinautomat.shp
Die Datei Parkscheinautomaten.shp beinhaltet folgende Attribute:
• Id: Nummer des Automaten
• Lage: Beschreibung der groben Lage des Automaten (Stadtbezirke)
• Standort: Genauer Standort des Automaten (z.B. Hausnummer...)
• freie: dieses Attribut wurde neu hinzugefügt. Hier wird im Avenueskript „Access.ave“
die berechnete Anzahl der freien Plätze eingetragen.
Parken.shp
Die Datei Parken.shp beinhaltet die folgenden Attribute. Nicht alle Attribute sind hier
dargestellt, weil sie für die Abfrage nicht relevant waren.
• Nummer (des Parkplatzes)
• Straße
• Öffentlich
• Behindertenparkplatz
• Parkschein
• Bemerkungen
• Parkuhrmenu
• Parkverbot
• Parkhöchst
• Gebiet
• Parkscheibe
• Langzeitpark
• Stand (Datum)
Neu hinzugefügt wurden die zwei Felder
• automatid
• berechnen
Die gegebene Datei „parken.shp“ wird nachträglich noch um zwei Felder erweitert. In
der ursprünglich gegebenen Datei ist zwar vermerkt, ob es sich um einen Parkplatz eines Parkscheinautomatens handelt oder nicht, aber es sind den Plätzen keine
Automaten zugewiesen.
Durch das Feld automatid wird jedem Parkplatz der das Attribut Parkscheinautomat besitzt ein Parkscheinautomat zugewiesen. Das Zuweisen der Parkplätze zu einem
bestimmten Automaten geschieht von Hand, d.h. der Parkplatz wird dem optisch nächsten Automaten zugeordnet, falls mehrere in der nahen Umgebung vorhanden sind.
Im Feld „berechnen“ wird im Avenueskript „access.ave“ die Anzahl der freien Parkplätze
pro zugewiesenen Automaten berechnet.
Klein.dxf
Diese dxf-Datei stellt den Grundriß von Esslingen dar. Grundstücke, Straßenzüge,
Hausnummern und Grundstücksnummern werden dargestellt.
45
Parkrauminformationssysteme
Schraffur.dwg
In der Datei Schraffur.dwg werde die Gebäude schraffiert dargestellt. Zur Analyse, Abfrage und Darstellung der Daten wird diese Datei nicht hinzugezogen, da das
Ergebnisbild sonst über zuviel Information verfügen würde und somit unübersichtlich
wäre.
Db1.mdb
In dieser Datenbank ist die Tabelle1 enthalten. Tabelle1 ist die Datei, in der sich die aktuellen Belegungszahlen und auch die Uhrzeit befindet.
46
Parkrauminformationssysteme
5. Das Programmkonzept
Um dieses Parkrauminformationssystem mit Anbindung an das Internet zu Erstellen,
wurden das GIS ArcView und die Datenbank für die Online Daten, MS Access, explizit
vorgegeben. Bei den benützen Datenbanken handelt es sich deshalb um relationale
Datenbanken.
Weitere Vorgaben wurde nicht gemacht.
Ein Parkrauminformationssystem mit Anbindung an das Internet benötigt unbedingt folgende Komponenten :
• Datenbank mit Online Daten
• Geo-Informationssystem
• Webserver
Dabei muß das Geo-Informationssystem auf die Online Daten der Datenbank zugreifen
können. Die Daten werden alle 15 Minuten erneuert, deshalb muß gewährleistet sein,
daß immer auf die aktuellen Daten zugegriffen wird.
Das GIS soll vom Internet aus aktiviert und eine Parkplatzabfrage gestartet werden. Das
Ergebnis der Abfrage soll im Internet präsentiert werden.
Die oben beschriebenen Funktionen sind auf folgende Weise realisiert worden:
Anfang
Um eine Parkrauminformationssystem im Internet zu realisieren benötigt man zunächst
eine Einstiegsseite. Von dieser Einstiegsseite wird das Parkrauminformationssystem
abgefragt. Außerdem werden mehrere Abfragemöglichkeiten realisiert. Die Einstiegsseite wird als HTML-Seite programmiert.
Starten des GIS
Das GIS muß auf einer Internetseite aktiviert werden. Es wird auf einer HTML Seite eine
sensible Fläche (oder Text) erstellt, die beim Anklicken das GIS startet. Das Starten des
GIS von HTML aus wird über eine CGI Schnittstelle erreicht. Dabei wird die Server Side
Include Anweisung (SSI) verwendet. Die SSI Anweisung kann ein .exe-Programm mit
einer angegebenen Programmdatei starten.
Datenbankanbindung an das GIS
Wenn das GIS gestartet ist, muß die Datenbank der Online Daten mit dem GIS verbunden werden. Das wird man über ein Avenue Skript durch einen Connect-Befehl
realisiert.
Datenbankverbindung
Die Online Datenbank muß mit der Datenbank des GIS verbunden werden, damit eine
Abfrage nach der aktuellen Parkbelegung möglich ist. Das wird durch ein Avenue Skript
erreicht.
47
Parkrauminformationssysteme
Datenbankabfrage
An die verbundene Datenbank, die jetzt aus GIS Datenbank und Online Datenbank besteht wird eine Abfrage nach der Parkbelegung gestellt. Das Ergebnis wird graphisch
dargestellt, in ein Layout eingefügt und als .jpg exportiert.
Aktualität der Daten
Die Aktualität der Daten wird dadurch erreicht, daß das GIS nach jeder Abfrage beendet
wird und bei jeder neuen Abfrage das GIS wieder erneut gestartet wird und auch wieder
die Datenbank mit den Online Daten abgebunden wird. Erreicht wird das dadurch, daß
das Skript nach dem exportieren der .jpg Graphik ArcView beendet.
Präsentation der Abfrage
Das Ergebnis der Abfrage (Graphik) wird in eine HTML-Seite integriert, die zur Visualisierung des Ergebnisses dient.
48
Parkrauminformationssysteme
5.1. HTML / SHTML – Dateien
Im folgenden werden die HTML-Seiten beschrieben, die zur Realisierung des Parkrauminformationssystem verwendet werden.
5.1.1 HTML-Code
esslingen.html
Diese HTML-Seite ist die Startseite des Parkrauminformationssystems.
Der gesamte Inhalt einer HTML-Datei wird in die Tags <html> bzw. </html> eingeschlossen
<html>
Der Server Rechner befiehlt dem WWW-Browser diese HTML-Datei nach 6000 Sekunden in jedem Fall von der Originaladresse auf dem Serverrechner zu laden.
<meta http-equiv="expires" content="6000">
Die HTML-Datei besteht aus zwei Teilen, dem „Header“ und dem „Body“. Hier im
„Head“, dem Kopfteil wird der Titel festgelegt. Der Titel der Datei wird bei der Anzeige im
WWW-Browser in der Titelzeile des Anzeigefensters angezeigt
<head>
<title>Parkraummanagementsystem</title>
</head>
Jetzt wird der „Body“ der HTML-Datei gestaltet. Die Farbe für den Hintergrund, Text und
die Verweise wird festgelegt.
<body bgcolor="silver" text="black" link="blue" vlink="azure"
alink="darkblue" leftmargin=30 topmargin=50>
Der Schriftfont wird festgelegt und zwei alternative Fonts aufgelistet.
<font face="Arial, Helvetica, sans-serif">
Die Überschrift wird eingefügt und mit einer Abbildung „ansicht_burg.jpg“ versehen. Die
Quelle dieser Abbildung ist die Internet Seite:
http://www.esslingen.de/tourismus/rundgang/burg.html
<h1> Parkinformationssystem Esslingen <img src="ansicht_burg.jpg"
width=20% ></h1>
Das Tag <p> (p = Paragraph) fügt eine Absatzschaltung ein
49
Parkrauminformationssysteme
50
<p>
Die Auswahlmöglichkeit, entweder alle Parkscheinautomaten auf einem Blick zu erhalten oder einen bestimmte Parkscheinautomaten auszuwählen wird in "Tabellenform"
dargestellt. Die Tabelle hat zwei Spalten und ist zentriert. Die Spaltenbezeichnungen
der Tabelle werden durch die Überschriften (<h3>) „Auswahl“ und „Überblick“ festgelegt.
In der folgenden Zeile befinden sich zwei Abbildungen, hinter denen sich jeweils ein Link
auf eine andere Seite befindet. Klickt man auf den Parkscheinautomaten, gelangt man
auf die Seite „auswahl1.html“, auf der man einen bestimmten Parkscheinautomaten
auswählen kann, klickt man hingegen auf die Übersichtskarte von Esslingen wird man
zur Seite „View.shtml weitergeleitet, die dann automatisch eine Abfrage an das GeoInformationssystem startet.
<table width=100% cellpadding=10>
<tr align=center>
<td ><h3>Auswahl</h3>
<a href="auswahl1.html"><img src="parkautomat.jpg" width=60
der=0 ></a>
<td><h3>Überblick</h3>
<a href="View.shtml"><img src="esslingen.jpg" width=300
der=0></a>
bor-
</tr>
In der letzten Zeile befindet sich der Beschreibungstext der beiden Abbildungen.
<tr align=center valign=top>
<td>Auswahl eines bestimmten Parkscheinautomaten<Beschreibungstext>
<td>Belegung aller Parkscheinautomaten auf einen
Blick<Beschreibungstext>
</tr>
</table>
Hier ist ein Link eingefügt, mit dem man zurück auf die „default.html“ Seite gelangt!
<a href="http://127.0.0.1"> Zum Anfang </a>
Die abschließenden Tags werden eingefügt.
</font>
</body>
</html>
bor-
Parkrauminformationssysteme
auswahl1.html
Das ist die HTML-Seite, auf der die verschiedenen Parkscheinautomaten ausgewählt
werden können.
Der gesamte Inhalt einer HTML-Datei wird in die Tags <html> bzw. </html> eingeschlossen
<html>
Der Server Rechner befiehlt dem WWW-Browser diese HTML-Datei nach 6000 Sekunden (=100 Minuten) in jedem Fall von der Originaladresse auf dem Serverrechner zu
laden.
<meta http-equiv="expires" content="6000">
Die HTML-Datei besteht aus zwei Teilen, dem „Header“ und dem „Body“. Hier im „Header“, dem Kopfteil wird der Titel festgelegt. Der Titel der Datei wird bei der Anzeige im
WWW-Browser in der Titelzeile des Anzeigefensters angezeigt
<head>
<title>Parkraummanagementsystem</title>
</head>
Die Farben für den Hintergrund, den Text und die Links werden hier festgelegt.
<body bgcolor="silver" text="black" link="blue" vlink="azure"
alink="darkblue" leftmargin=30 topmargin=50>
Der Schriftfont wird festgelegt, zu der „ersten Wahl“ „Arial“ werden noch zwei alternative
Schriftfonts angeboten.
<font face="Arial, Helvetica, sans-serif">
Die Überschrift für die HTML-Seite wird durch den „<h1>-Tag“ festgelegt.
<h1> Parkplatz ausw&auml;hlen </h1>
Unter der Überschrift befindet sich eine Übersichtskarte aller Parkscheinautomaten, die
in der Karte auch mit Nummern versehen sind.
<img src="essübersicht.jpg" width=70% align=left>
Neuer Absatz
<p>
51
Parkrauminformationssysteme
Informations- bzw. Aufforderungstext, einen Parkscheinautomaten auszuwählen.
Bitte wählen Sie einen Parkscheinautomaten:<br>
Hinter jedem Namen der Parkscheinautomaten befindet sich ein Link zu einer Seite
(SHTML-Datei), die das jeweils zugehörige Projekt des Parkscheinautomaten startet.
<a href="Marktno.shtml"> Marktplatz Nordost (Nr. 1) </a><br>
<a href="Markts.shtml"> Marktplatz S&uuml;d (Nr. 2) </a><br>
<a href="stadthalle.shtml"> Stadthalle (Nr. 3) </a><br>
<a href="ebersh.shtml"> Ebershaldenstra&szlig;e /
Hauffstra&szlig;e (Nr. 4) </a><br>
<a href="ottilien.shtml"> Ottilienplatz (Nr. 5)</a><br>
<a href="zwinger.shtml"> Zwingerstra&szlig;e (Nr. 6) </a><br>
<a href="ritter.shtml"> Ritterstra&szlige (Nr. 7) </a><br>
<a href="kessel.shtml"> Kesselwasen (Nr. 8) </a><br>
<a href="metzger.shtml"> Oberer Metzgerbach (Nr. 9) </a><br>
<a href="bahnkron.shtml"> Bahnhofstra&szlig;e / Am Kronenhof (Nr.
10) </a><br>
<a href="bahnschelz.shtml"> Bahnhofstra&szlig;e / Schelztor (Nr.
11) </a><br>
<a href="bahnplatz.shtml"> Bahnhofplatz (Nr. 12)</a><br>
<a href="ross1.shtml"> Rossmarkt 1 (Nr. 13) </a><br>
<a href="ross2.shtml"> Rossmarkt 2 (Nr. 14) </a><br>
<a href="wehrneck.shtml"> Wehrneckarstra&szlig;e (Nr. 15)
</a><br>
<a href="bahnmart.shtml"> Martinstra&szlig;e / Bahnhofstra&szlig;e (Nr. 16) </a><br>
<a href="kanalmart.shtml"> Martinstra&szlig;e / Kanalstra&szlig;e
(Nr. 17) </a><br>
<a href="schelz.shtml"> Schelztorstra&szlig;e (Nr. 18) </a><br>
<a href="fabrik.shtml"> Fabrikstra&szlig;e (Nr. 19)</a><br>
<a href="vogel.shtml"> Vogelsangbr&uuml;cke (Nr. 20) </a><br>
<a href="obermuhl.shtml"> Obertorstra&szlig;e /
M&uuml;hlstra&szlig;e (Nr. 21) </a><br>
<a href="oberkies.shtml"> Obertorstra&szlig;e / Kiesstra&szlig;e
(Nr.22) </a><br>
<a href="blumen.shtml"> Blumenstra&szlig;e (Nr.23) </a><br>
<a href="charlot.shtml"> Charlottenplatz (Nr.24) </a><br clear=all>
52
Parkrauminformationssysteme
Abbildung 5.1 Auswahloptionen
Einfügen eines Absatzes
<p>
Kommentar zur Dauer der Abfrage
!Die Abfrage kann einige Minuten dauern!<br>
Link zur Startseite des Parkrauminformationssystems.
<a href="esslingen.html"> Zum Anfang </a>
Die abschließenden Tags werden eingefügt.
</font>
</body>
</html>
Abbildung 5.2 Auswahlseite
53
Parkrauminformationssysteme
5.1.2 SHTML-Code
Bei den SHTML-Dateien handelt es sich um die Dateien, die ArcView vom Internet aus
Starten können.
View.shtml
Diese SHTML-Seite startet eine Abfrage aller Parkscheinautomaten als Übersicht über
alle Parkscheinautomaten Esslingens.
Der gesamte Inhalt einer HTML-Datei wird in die Tags <html> bzw. </html> eingeschlossen
<html>
Der Server Rechner befiehlt dem WWW-Browser diese HTML-Datei nach 6000 Sekunden in jedem Fall von der Originaladresse auf dem Serverrechner zu laden.
<meta http-equiv="expires" content="6000">
Die HTML-Datei besteht aus zwei Teilen, dem „Header“ und dem „Body“. Hier im
„Head“, dem Kopfteil wird der Titel festgelegt. Der Titel der Datei wird bei der Anzeige im
WWW-Browser in der Titelzeile des Anzeigefensters angezeigt
<head>
<title>Parkraummanagementsystem</title>
</head>
Die Farbe für den Hintergrund, Text und die Verweise wird festgelegt.
<body bgcolor="silver" text="black" link="blue" vlink="azure"
alink="darkblue" leftmargin=30 topmargin=50>
Der Schriftfont wird festgelegt und zwei alternative Fonts aufgelistet.
<font face="Arial, Helvetica, sans-serif">
Über die Server Side Include Anweisung (<!—exec cmd..... -->) in der HTML-Datei wird
das Geoinformationssystem ArcView mit dem Projekt „projesview.apr“ (Namen des Projektes) gestartet.
<!--#exec cmd="/Esri/Av_gis30/Arcview/Bin32/arcview.exe projesview.apr“ -->
Die Überschrift der Ergebnisseite mit Abbildung
<h1> Parkinformationssystem Esslingen <img src="ansicht_burg.jpg"
width=20% ></h1>
54
Parkrauminformationssysteme
Neuer Absatz
<p>
Zweite Überschrift der Ergebnisseite und neuer Absatz
<h3>Ergebnis - Anzahl der freien Pl&auml;tze</h3><p>
Das Ergebnis der Abfrage wird als .jpg exportiert und an dieser Stelle eingefügt. In diesem Beispiel ist der Name der Ergebnisgrafik „ergalles.jpg“.
<img src="file://localhost/c:/httpd/ergalles.jpg" width=100% >
Neuer Absatz
<p>
Mit diesem Link gelangt man zur Startseite des Parkrauminformationssystems
<a href="esslingen.html"> Zum Anfang </a>
Die abschließenden Tags werden eingefügt
</font>
</body>
</html>
55
Parkrauminformationssysteme
Auswahl des Automaten
Für jeden Automaten existiert eine zugehörige SHTML-Datei, die bei der Auswahl des
jeweiligen Automaten angesprochen wird. Die Dateien unterscheiden sich in den jeweiligen Namen (Projektnamen, Ergebnisabbildungsnamen und Bezeichnung des
Parkscheinautomaten).
Im folgenden wird dies beispielsweise für den Automaten Ecke Bahnhofstraße / Am
Kronenhof beschrieben.
bahnkron.shtml
Bahnkron.shtml ist eine SHTML-Datei, die ein Projekt zum Abfragen eines einzelnen
Parkscheinautomaten startet. In diesem Beispiel wird der Parkscheinautomat an der
Ecke Bahnhofstraße / Am Kronenhof abgefragt.
Der gesamte Inhalt einer HTML-Datei wird in die Tags <html> bzw. </html> eingeschlossen
<html>
Der Server Rechner befiehlt dem WWW-Browser diese HTML-Datei nach 6000 Sekunden in jedem Fall von der Originaladresse auf dem Serverrechner zu laden.
<meta http-equiv="expires" content="6000">
Die HTML-Datei besteht aus zwei Teilen, dem „Header“ und dem „Body“. Hier im „Header“, dem Kopfteil wird der Titel festgelegt. Der Titel der Datei wird bei der Anzeige im
WWW-Browser in der Titelzeile des Anzeigefensters angezeigt
<head>
<title>Parkraummanagementsystem</title>
</head>
Die Farbe für den Hintergrund, Text und die Verweise wird festgelegt.
<body bgcolor="silver" text="black" link="blue" vlink="azure" alink="darkblue" leftmargin=30 topmargin=50>
Der Schriftfont wird festgelegt und zwei alternative Fonts aufgelistet.
<font face="Arial, Helvetica, sans-serif">
Über die Server Side Include Anweisung (<!—exec cmd..... -->) in der HTML-Datei wird
das Geo-Informationssystem ArcView mit dem dazugehörigen Projekt (proj10view.apr)
gestartet. Die Namen der Projekte sind durchnumerieret, entsprechend den Nummern
die auch in der Übersichtskarte für die Automaten vergeben wurden.
56
Parkrauminformationssysteme
<!--#exec cmd="/Esri/Av_gis30/Arcview/Bin32/arcview.exe
proj10view.apr! -->
Die Überschrift der Ergebnisseite mit einer Abbildung
<h1> Parkinformationssystem Esslingen <img src="ansicht_burg.jpg"
width=20% ></h1>
Neuer Absatz
<p>
zweite Überschrift auf der Ergebnisseite, mit Angabe des Automatennamens
<h3>Ergebnis - Anzahl der freien Pl&auml;tze Bahnhofstra&szlig;e
/ Am Kronenhof</h3>
Neuer Absatz
<p>
Das Ergebnis wird bei der Abfrage in ArcView in ein .jpg (bahnkron.jpg) exportiert und
hier auf der HTML-Seite eingebunden. Die „width“ - Angabe bestimmt die Größe der
Abbildung.
<img src="file://localhost/c:/httpd/bahnkron.jpg" width=100% >
Neuer Absatz
<p>
Über diesen Link gelangt man zur Startseite des Parkrauminformationssystems
<a href="esslingen.html"> Zum Anfang </a>
Die abschließenden Tags werden eingefügt.
</font>
</body>
</html>
57
Parkrauminformationssysteme
5.2 Avenue Skript
Das Avenueskript „access.ave“ führt die Abfrage, die von der HTML-Seite aus gestartet
wird durch. Zuerst wird die MS Access-Datenbank an das Projekt angebunden. Danach
erfolgt die Berechnung der freien Parkplätze in den jeweiligen Tabellen, da die gegebenen Daten nur die aktuelle Belegung und die Maximalzahl der Parkplätze pro Automat
beinhaltet. Das View wird anschließend in verschiedenen Farben - nach Belegung gestaffelt – eingefärbt und in einem Layout dargestellt. Abschließend wird das Layout als
.jpg-Abbildung exportiert und das ArcView beendet. Für jeden Parkscheinautomaten gibt
es ein extra Projekt, in denen sich das Skript „access.ave“ durch die verschiedenen
Namen der Ergebnisabbildungen unterscheidet.
Folgend wird der Prototyp eines solchen Skriptes erklärt.
Die Datei „aktuell.dbf“ beinhaltet die Daten, die aus der MS Access Datei importiert werden. Wenn in dem Projekt die Tabelle „aktuell.dbf“ existiert, wird sie aus dem Projekt
gelöscht, damit sie nachher nicht mehrmals vorhanden ist.
if(av.GetProject.FindDoc(„aktuell.dbf“)<>nil)then
theSEd=av.GetProject.FindDoc(„aktuell.dbf“)
av.GetProject.RemoveDoc(theSEd)
end
Voraussetzung: Ein gültiger ODBC-Treiber für MS Access 97 ist installiert und die
Tabelle1 existiert in der mdb-Datei. Die Datenbank „Db1.mdb“ und die enthaltene
Tabelle „Tabelle1“ wird standardmäßig genannt. ArcView verwendet dann immer nur
diese Dateien.
In der Systemsteuerung muß bei 32bit ODBC bei der MS Access 97-Datenbank der
mdb- Dateipfad angegeben werden.
Die MS Access Datei „db1.mbd“, deren Pfad in der Systemsteuerung des Betriebssystems angegeben wurde wird mit dem Projekt verbunden und die Daten in der dbf-Datei
„aktuell.dbf“ gespeichert. Deshalb ist es wichtig, zuvor die „alte“ aktuell.dbf-Datei vollständig aus dem Projekt zu löschen, um nur die aktuellen Daten der
Parkscheinautomaten zu verarbeiten.
theSQL=SQLCon.Find(„MS Access 97-Datenbank“)
‘ MS Access 97-Datenbank
aString=“Select*from automaten“
theVTab=Vtab.MakeSQL(theSQL, aString)
if(theVTab.HasError.not) then
myTable=Table.Make(theVTab)
av.GetProject.AddDoc(myTable)
myTable.SetName(„aktuell.dbf“)
else
MsgBox.Info(“Fehler bei der SQL-Verbindung“, ““)
end
58
Parkrauminformationssysteme
Die importierte Tabelle „aktuell.dbf“ wird mit der Tabelle „Attribute von Parkscheinautomaten.shp“ verbunden (join). Dabei muß definiert werden, welche Tabelle an welche
Tabelle angebunden (VonVTab und ZuVTab) wird und welche Tabellenfelder das Verbindungsglied darstellen (Find.Field). Das Verbindungsglied ist in diesem Fall die
Nummer des Parkscheinautomaten. In der Tabelle „Attribute von Parkscheinautomaten.shp“ ist das Feld mit „Id“ bezeichnet, in der Tabelle „aktuell.dbf“ wird das Feld
„Automatennr“ genannt.
ZuVTab=av.GetProject.FindDoc(“Attribute von Parkscheinautomaten.shp“).GetVTab
VonVTab=av.GetProject.FindDoc(„aktuell.dbf).GetVTab
ZuVTabSchluessel=ZuVTab.FindField(“Id“)
VonVTabSchluessel=VonVTab.FindField(“Automatennr“)
ZuVtab.Join(ZuVTabSchluessel, VonVTab, VonVTabSchluessel)
Die Tabelle „Attribute von Parkscheinautomaten.shp“ wird geöffnet. Anschließend wird
überprüft, ob sie editierbar ist und auf Editiermodus gestellt. Das Feld „freie“ wird aktiviert und über die Felder „Max Plätze“ und „Akt Belegung“ die Anzahl der freien
Parkplätze berechnet. Die Zahl der freien Plätze wird in das Feld „freie“ eingetragen.
Wenn für alle Reihen die Anzahl der freien Plätze eingetragen ist, wird der Bearbeitungsmodus deaktiviert und das zuvor berechnete Ergebnis gespeichert.
theTable=av.FindDoc(“Attribute von Parkscheinautomaten.shp“)
theTable.GetWin.Open
theVTab=theTable.GetVTab
if(theVTab.CanEdit)then
theVTab.SetEditable(TRUE)
theField=av.GetActveDoc.GetVTab.FindField(“freie“)
theMaxAnz=theVtab.FindField(“Max Plätze“)
theBelAnz=theVTab.FindField(“Akt Belegung“)
theTable.SetAciveField(theField)
numRecords=theVTab.GetNumRecords
for each record in theVTab
theMax=theVTab.ReturnValue(theMaxAnz, record)
theBel=theVTab.ReturnValue(theBelAnz, record)
theFreie=theMax-theBel
theVTab.setValue(theFields, record, theFreie)
end
59
Parkrauminformationssysteme
theVTab.SetEditable(FALSE)
theVTab.Refresh
else
MsgBox.Info(“Die Tabelle ist nicht editierbar.“,““)
end
Die Legende zum Thema „Parkscheinautomaten.shp“ wird in abgestuften Farben dargestellt. Kriterium, bzw. Klassifizierungsfeld hierfür ist die Anzahl der freien Parkplätze.
Die fünf Intervalle haben jeweils dieselbe Anzahl an Parkscheinautomaten, dabei sind
die Farben so gewählt, daß die Automaten im Intervall mit den meisten freien Parkplätzen grün dargestellt sind, Automaten mit den wenigsten freien Parkplätzen in rot
dargestellt sind.
theView=av.FindDoc(“Parkrauminformationssystem Esslingen“)
theWin=theView.GetWin
theWin.Open
theTheme=theView.FindTheme(“Parkscheinautomaten.shp“)
theTheme.SetActive(TRUE)
theLegend=Legend.Make(#SYMBOL_MARKER)
theLegend.SetLegendType(#LEGEBD_TYPE_COLOR)
theLegend.Interval(theTheme, “freie“, 5)
theSymList={Color.GetRed, Color.GetMagenta, Color.GetBlue, Color.GetCyan, Color.GetGreen}
theSymbols=theLegend.GetSymbols
for each i in 0..4
theSymbol=theSymbols.Get(i)
theSymbol.SetColor(theSymList.Get(i))
theSymbol.SetSize(36)
end
theTheme.SetLegend(theLegend)
theTheme.UpdateLegend
Die Belegung der Parkscheinautomaten ist berechnet und die Parkscheinautomaten
sind auch nach Grad ihrer Belegung eingefärbt. Die Parkplätze in der Grafik haben allerdings noch keine Belegungseinfärbung. Deshalb wird jetzt wiederum die Tabelle
„aktuell.dbf“ an eine andere Tabelle angebunden (join). Dieses Mal wird sie an die Tabelle „Parkplatzattribute“ angebunden, damit auch diese Tabelle über die Information
der belegten Parkplätze verfügt.
Die Tabelle „Parkplatzattribute“ muß um die Information über die Anzahl der verkauften
Parkscheine ergänzt werden und wird deshalb auf gleiche Weise wie weiter oben be-
60
Parkrauminformationssysteme
schrieben mit der Tabelle „aktuell.dbf“ verbunden. Auch hier wird wieder bestimmt, zu
welcher Tabelle die Felder der anderen Tabelle hinzugefügt werden sollen und welches
Feld das Verbindungsglied der Verbindung ist.
ZuVTab=av.GetProject.FindDoc(“Parkplatzattribute“).GetVTab
VonVTab=av.GetProject.FindDoc(“aktuell.dbf“).GetVTab
Das Verbindungsglied ist hier erneut die Parkscheinautomatennummer. In der Tabelle
„Parkplatzattribute“ heißt das Feld „automatid“ und in der Tabelle mit den aktuelle Belegungsdaten „aktuell.dbf“ wird das Feld „Automatennr“ genannt.
ZuVTabSchluessel=ZuVTab.FindField(“automatid“)
VonVTabSchluessel=VonVTab.FindField(“Automatennr“)
ZuVTab.Join(ZuVTabSchluessel, VonVTab,VonVTabSchluessel)
In der Tabelle „Parkplatzattribute“ fehlt die Information über die Anzahl der freien Parkplätze. Deshalb wird diese jetzt berechnet und in das Feld „berechnen“ eingetragen.
Dazu wird zuerst der Bearbeitungsmodus der Tabelle überprüft, und falls sie editierbar
ist, der Modus auf „bearbeitbar“ gesetzt. Danach wird durch die Differenz der Felder
„Max Plätze“ und „Akt Belegung“ in einer Schleife die Anzahl der freien Parkplätze für
alle Parkscheinautomaten berechnet und im Feld „ berechnen“ gespeichert. Anschließend wird der Bearbeitungsmodus deaktiviert und die Tabelle aktualisiert.
theTable=av.FindDoc(„Parkplatzattribute“)
theTable.GetWin.Open
theVTab=theTable.GetVTab
if(theVTab.CanEdit)then
theVTab.SetEditable(TRUE)
theField=av.GetActiveDoc.GetVTab.FindField(“berechnen“)
theMaxAnz=theVTab.FindField(“Max Plätze“)
theBelAnz=theVTab.FindField(“AktBelegung“)
theTable.SetActiveField(theField)
numRecords=theVTab.GetNumRecords
for each record in theVTab
theMax=theVTab.ReturnValue(theMaxAnz, record)
theBel=theVTab.ReturnValue(theBelAnz, record)
theFreie=theMax-theBel
theVTab.setValue(theField, record, theFreie)
end
61
Parkrauminformationssysteme
theVTab.SetEditable(FALSE)
theVTab.Refresh
else
MsgBox.Info(“Die Tabelle ist nicht editierbar.“,““)
end
Die Legende für die einzelnen Parkplätze wird so gestaltet, daß Parkplätze, die einem
Parkscheinautomaten zugeordnet sind, der viele Parkscheine „verkauft“ hat, in roter
Farbe dargestellt sind. Parkplätze eines Parkscheinautomaten mit wenig oder keinen
verkauften Parkscheinen sind in Grün dargestellt. Im Skript wird festgelegt, daß es sich
um einen Legendentypen mit abgestuften Farben handelt und auch in wieviel Intervalle
das Thema unterteilt werden soll. Als Klassifizierungsfeld wird hier das Feld „berechnen“
gewählt und die Intervalle werden als gleich groß festgelegt. Zuletzt wird die neu erstellte Legende aktiviert und das Thema aktualisiert.
theView=av.FindDoc(“Parkrauminformationssystem Esslingen“)
theWin=theView.GetWin
theWin.Open
theTheme=theView.FindTheme(“Parken.shp“)
theTheme.SetActive(TRUE)
theLegend=Legend.Make(#SYMBOL_FILL)
theLegend.SetLegendType(#LEGEND_TYPE_COLOR)
theLegend.Intervall(theTheme, “berechnen“, 5)
theSymList={Color.GetRed, Color.GetMagenta, Color.GetBlue, Color.GetCyan, Color.GetGreen}
theSymbols=theLegend.GetSymbols
for each i in the 0..4
theSymbol=theSymbols.Get(i)
theSymbol.SetColor(theSymList.Get(i))
end
theTheme.SetLegend(theLegend)
theTheme.UpdateLegend
Das Layout „Layout2“ wird geöffnet. In diesem Layout ist immer der aktuelle View dargestellt. Das Layout wird im JPEG-Format exportiert, damit es später als
Ergebnisabbildung in ein HTML-Dokument eingefügt werden kann. Der Name der Abbildung wird an der Stelle „NAME.jpg“ vergeben und ist jeweils an die einzelnen Projekte
durch unterschiedliche Namen angepaßt. Der Name der Abbildung variiert in jedem Pro-
62
Parkrauminformationssysteme
jekt und besteht aus einer Abkürzung des Straßennamens, in der der Parkscheinautomat steht.
theLayout=av.FindDoc(“Layout2“)
theLayout.GetWin.Open
theFormat=“JPEG“
theFileName=“NAME.jpg“.AsFileName
theExportDisplay=theLayout.GetDisplay.ExportStartFN(theFileName,
theFormat)
theExportDiaplay.Invalidate(FALSE
theLayout.GetGraphics.SetDisplay(theExportDisplay)
theLayout.GetGraphics.Draw
theLayout.GetGraphics.SetDisplay(theLayout.GetDisplay)
theExportDisplay.ExportEnd
Die Verbindungen zwischen den verschiedenen Tabelle werden gelöst.
theTable=av.FindDoc(„Attribute von Parkscheinautomaten.shp“)
theTable.GetWin.Open
theVTab=av.GetActiveDoc.GetVTab
if(theVTab.IsBase.Not) then
av.GetProject.SetModified(true)
end
theVTab.UnJoinAll
Das Projekt und ArcView wird beendet
Av.Quit
63
Parkrauminformationssysteme
64
5.3 Bedienung des Parkrauminformationssystems
Um zur Anfangsseite der Testversion des Parkrauminformationssystems zu gelangen,
wählt man folgende Adresse in den Browser:
http://195.126.81.165/arcview/esslingen.html
(Achtung, die Testversion liegt nur zeitlich begrenzt auf dem Server)
Dort sind die HTML/SHTML-Seiten nach folgendem Prinzip aufgebaut und verlinkt:
esslingen.html
auswahl1.html
auswahl1.html
Abbildung
bahnkron.shtml
Abbildung
View.shtml
View.shtml
Auswahlliste
Abbildung
Parkrauminformationssysteme
Das Parkinformationssystem wurde zuerst auf einem lokalen Webserver getestet. Auf
der Internet Seite von Stefan Münz http://www.teamone.de/selfhtml werden verschiedene Webserver empfohlen. Für die Testversion wurde der Webserver von Omnicron
Technologies (http://www.omnicron.ab.ca/httpd/) lokal installiert, da er CGISchnittstellen unterstützt. Ohne diese CGI-Unterstützung können keine CGI Anweisungen durchgeführt werden und somit auch ArcView nicht gestartet werden. Deshalb ist es
für die Wahl des Webservers wichtig, darauf zu achten, daß er über CGI Unterstützung
verfügt.
Die Aktualität der Daten wird dadurch gewahrt, daß für jede Abfrage an das System das
jeweilige ArcView Projekt neu gestartet wird. Bei jedem Start der verschiedenen ArcView Projekte wird die gegebene MS Access Datei neu angebunden und somit auch
immer nur die aktuellen Daten verwendet.
Allerdings müssen die Belegungsdaten immer in der selben MS Access Datei stehen,
da immer nur die selbe Datei an das System angebunden wird. Das bedeutet, daß die
Parkautomaten ihre Daten immer an die selbe Datei senden müssen, damit ArcView
auch immer die aktuellen Daten verwertet.
Auf der Startseite des Parkrauminformationssystems ist diese Oberfläche zu sehen:
Abb. 5.1 Startseite des Parkrauminformationssystems
Auf der rechten Seite der Startseite befindet sich eine Abbildung, die den Stadtgrundriß
Esslingens zeigt. In dieser Karte sind die vorhandenen Parkscheinautomaten durch
schwarze Punkte dargestellt. Auf der anderen Seite ist ein Parkscheinautomat abgebil-
65
Parkrauminformationssysteme
det. Beide Abbildungen sind mit jeweils einer anderen Seite verlinkt. Wenn man mit dem
Mauszeiger über diese Abbildungen fährt, wandelt sich der Mauszeiger von einem Pfeil
in eine Hand mit einem ausgestreckten Zeigefinger. Klickt man nun mit diesem „ausgestreckten Zeigefinger“ auf die Abbildung wird man zu der Seite verwiesen, die „hinter“
der Abbildung steht (Abb. 4.1). Klickt man auf die Übersichtskarte von Esslingen startet
diese Seite automatisch auf dem Serverrechner ein ArcView Projekt. Das ArcView Projekt führt eine Abfrage durch, die durch ein Avenueskript zuvor genau bestimmt wurde.
Als Ergebnis der Abfrage generiert das Avenueskript ein „Layout“, das in eine .jpgAbbildung exportiert wird. Auf der „verlinkten“ Seite wird das Ergebnis der Abfrage (Abb
4.2) durch die exportierte .jpg-Abbildung dargestellt.
Abb. 5.2 Ergebnis der gesamten Abfrage
In der Ergebnisabbildung sind die Parkscheinautomaten je nach Belegungsgrad unterschiedlich eingefärbt. Die Parkscheinautomaten sind in fünf Gruppen unterteilt.
Ein grüner Punkt bedeutet dabei, daß noch fast alle Plätze frei sind, ein roter dagegen,
das nichts mehr oder fast nichts mehr frei ist. Die unterschiedlichen Belegungsgrade
und Einfärbungen sind der eingefügten Legende zu entnehmen.
Über den Verweis „Zum Anfang“ auf dieser Seite gelangt man wieder zur Startseite
(Abb. 4.1) des Parkrauminformationssystems.
Auf der linken Seite befindet sich hier unter der Überschrift „Auswahl“ eine Abbildung die
einen Parkscheinautomaten zeigt. Hinter diesem Automaten befindet sich wiederum ein
66
Parkrauminformationssysteme
Verweis auf eine andere Seite. Auch diese Seite erreicht man durch das Anklicken mit
dem „ausgestreckten“ Zeigefinger.
Diese HTML-Seite ist in der Abbildung 4.3 dargestellt. Hier ist nochmals die Stadtübersichtskarte von Esslingen zu sehen. Die Lage der Parkscheinautomaten ist wiederum
durch schwarze Punkte visualisiert. Zusätzlich sind den schwarzen Punkten bzw. den
Parkscheinautomaten noch Nummern zugewiesen. Neben der Karte sind die Straßennamen, an denen sich die Parkscheinautomaten befinden angegeben. Hinter den
Straßennamen befindet sich jeweils eine Nummer. Die Nummer hinter den Straßennamen entspricht der Nummer, die in der Karte eingezeichnet ist und dient zur
Orientierung. Kennt man nur den Straßennamen des Parkscheinautomatens, kann man
durch die Nummer die Lage nachschauen, ist es umgekehrt und man kennt auf dem
Stadtplan die Stelle, an der man parken will, kann man den zugehörigen Straßennamen
erfahren.
Hinter den Straßennamen mit den Nummern befindet sich jeweils eine weitere Seite.
Fährt man mit dem Mauszeiger über die Namen verwandelt sich dieser wieder in eine
Hand. Wurde eine solche „verlinkte“ Seite schon einmal mit dem jeweiligen Browser, der
gerade in Benutzung ist aufgerufen, wird der Name, der bei noch nicht gewählter Abfrage in blauer Schriftfarbe dargestellt ist, in grauer Schriftfarbe dargestellt.
Über den Verweis „Zum Anfang“ gelangt man wieder zur Startseite (Abb. 4.1)
Abb. 5.3 Auswahl eines bestimmten Parkscheinautomaten
67
Parkrauminformationssysteme
Hinter jedem Straßennamen befindet sich eine neue Seite. Diese neue Seite startet
wiederum das zugehörige ArcView Projekt. ArcView führt eine Abfrage durch, die durch
ein Avenueskript gesteuert ist. Als Ergebnis exportiert ArcView das erzeugte Layout in
eine .jpg-Abbildung.
Auf der Ergebnisseite wird die neu erzeugte .jpg-Abbildung dargestellt. (Abb. 4.4)
Wie weiter oben schon beschrieben sind die Parkscheinautomaten je nach Belegungsgrad unterschiedlich eingefärbt. In der Legende kann man wiederum nachsehen, wieviel
Plätze bei dem abgefragten Automaten ungefähr frei sind.
Abb. 5.4 Erzeugt .jpg-Abbildung
Über den Verweis „ Zur Auswahl“ der Ergebnisseite (Abb. 4.5) gelangt man wieder zu
der Seite, auf der man sich die verschiedenen Parkscheinautomaten auswählen kann.
68
Parkrauminformationssysteme
Abb. 5.1 Ergebnisseite einer Einzelabfrage.
69
Parkrauminformationssysteme
6. Ergänzungen und Erweiterungen
Neben der in Kapitel 5 beschriebenen Lösung wurden noch weitere Möglichkeiten gefunden und teilweise auch realisiert.
Grundlage ist hierbei zum einen eine Lösung über Java, zum anderen eine Lösung mit
einer CGI-Schnittstelle und Perl.
Die Java Lösung startet von einer HTML-Seite aus über ein Java Applet das GIS. Das
GIS führt die Abfrage durch, in gleicher Weise, wie im vorigen Kapitel beschrieben. Das
Ergebnis wird wieder eine HTML-Seite mit einer integrierten Graphik sein. Die Parameter, in diesem Fall könnte das beispielsweise die Parkscheinautomatennummer sein,
wird im Applet in eine .dbf-Datei geschrieben. Auf diese .dbf-Datei kann ArcView zugreifen und damit die Abfrage des gewünschten Automaten starten.
Eine weitere Möglichkeit ist die Lösung über eine CGI-Schnittstelle und einem PerlSkript. Diese Lösung funktioniert fast genau wie die Lösung in Kapitel 5. Zusätzlich wird
hier auf der HTML-Auswahlseite ein Formular eingebaut. Durch das Formular wird die
Nummer des gewählten Automaten an das Perl-Skript übermittelt. Das Perl-Skript speichert diese Information in einer .dbf-Datei und ArcView kann auf diese Weise wieder auf
die Daten zugreifen.
In 6.1 und 6.2 sind diese Lösungsansätze genauer beschrieben.
6.1 Lösung über Java
Um über ein Java Programm ein ArcView Projekt (Hier wäre der Projektname proj1.apr)
zu starten kann man folgende Applikation verwenden. Dies ist allerdings nur innerhalb
eines geschlossenen Systems möglich.
import java.lang.*;
import java.io.*;
public class RuntimeExecTest
{
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime();
String[] callAndArgs = {
"c:\\Esri\\Av_gis30\\Arcview\\Bin32\\arcview.exe",
"h:\\ArcView\\neu\\proj1.apr" };
try {
Process child = rt.exec(callAndArgs);
child.waitFor();
System.out.println("Process exit code is:
" +
child.exitValue());
}
catch(IOException e) {
System.err.println( "IOException starting process!");
70
Parkrauminformationssysteme
}
catch(InterruptedException e) {
System.err.println( "Interrupted waiting for process!");
}
}
}
Will man das ganze nun im Internet nutzen und auf einem Serverrechner ein Programm
- in diesem Fall ArcView – starten, muß man die Applikation in ein Applet umwandeln.
Die Umwandlung einer Applikation in ein Applet geschieht problemlos. Durch die „Codeworte“ „extends applet“ wird dem Java Interpreter mitgeteilt, daß es sich nicht um eine
Applikation, sondern um ein Applet handelt.
Beispiel für ein Applet:
import
import
import
import
java.applet.*;
java.awt.*;
java.lang.*;
java.io.*;
public class Eingabe extends Applet {
public static void main(String[] args)throws IOException {
String hello = "Wahl\n";
PrintWriter f;
int a;
BufferedReader din = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Bitte Parkplatznummer eingeben (1, 2
oder 3:");
a = Integer.parseInt(din.readLine());
System.out.println("Sie haben Parkplatz "+a+" gewählt");
try {
f = new PrintWriter(
new BufferedWriter(
new FileWriter("Park.dbf")));
f.print(hello);
f.print(a);
f.close();
}
catch (IOException e){
71
Parkrauminformationssysteme
System.out.println("Fehler beim erstellen der Datei");
}
}
}
In dem Programm wird man aufgefordert, eine vorgegebene Parkplatznummer auszuwählen. Die eingegebene Nummer wird in einer .dbf-Datei gespeichert, auf die ArcView
Zugriff hat und damit die Abfrage erledigen kann.
Hier entsteht allerdings ein Problem in der Art des Applets. Applets können keine Anwendungen auf Rechnern starten, da sie sonst Sicherheitsbestimmungen verletzen
würden. Um das zu umgehen gibt es die Möglichkeit das Applet zu signieren. Ein Applet
zu signieren ist eine sehr komplizierte Angelegenheit und jeder Nutzer aus dem Internet
benötigt eine Zugangsberechtigung um diese Anwendung zu starten.
Diese Sachverhalte haben die Lösungsmöglichkeit, das Parkrauminformationssystem
fürs Internet mit Hilfe von signierten Java Applets zu verwirklichen, als ungeeignet erscheinen lassen.
72
Parkrauminformationssysteme
6.2 Lösung über CGI-Schnittstelle
Die Lösung über eine CGI-Schnittstelle funktioniert fast genauso wie die Lösung, die
jetzt in Gebrauch ist.
In der Lösung mit der CGI-Schnittstelle befindet sich auf der HTML-Seite mit der Auswahloption ein Formular. Der gesamte Quellcode mit Erklärungen dazu befindet sich in
Kapitel 6.3 CGI-Schnittstelle und Perl Skript – Formularlösung.
Beispiel eines HTML-Formulars:
<form action="/cgi-bin/auswahl.pl" method=post>
Auswahl des Parkscheinautomaten
<p>Bitte wählen Sie:
<select name="Nummer" size=1>
<option value="1111202"> Marktplatz Nordost (Nr. 1)
<option value="1111212"> Marktplatz S&uuml;d (Nr. 2)
<option value="1114113"> Stadthalle (Nr. 3)
</select>
<input type=submit value="OK">
<br><br>
</form>
Abbildung 6.1 Formular mit Auswahloption
In dem Formular wird der Wert „value=...“ (hier die Nummer des gewählten Automaten)
an das zugehörige Perl-Skript („auswahl.pl“), das in der ersten Zeile des Beispiel HTMLFormulars angegeben ist, geschickt. Außerdem ist die Methode, wie die Daten übertragen werden sollen angegeben, in diesem Fall durch die Methode „post“. Durch drücken
des „OK-Buttons“ werden die Daten „verschickt“.
Das Perl-Skript „auswahl.pl“:
#!/bin/perl
73
Parkrauminformationssysteme
if($ENV{'REQUEST_METHOD'} eq 'GET')
{ $Daten = $ENV{'QUERY_STRING'} }
else {
read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
}
print "Content-type: text/html\n\n";
print "<html><head><title>Ergebnis</title></head>\n";
print "<body bgcolor=#CCFFFF><h1>Einen Mausklick noch bis zum Ergebnis</i></h1>\n";
print "<a href='http://127.0.0.1/ergebnis1.shtml'> Weiter zum Ergebnis\n";
@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder)
{
($name, $value) = split(/=/, $Feld);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$Formular{$name} = $name;
$Formular{$value} = $value;
#print "$Formular{$name} = $Formular{$value}", "<br>\n";
}
print "<br>\n";
print "</a></body></html>\n";
open(FH, ">test.dbf");
print FH "$Formular{$name}\n";
print FH "$Formular{$value}";
close(FH);
Das Perl-Skript „auswahl.pl“ erzeugt dann wiederum eine neue HTML-Seite. Auf dieser
neuen HTML-Seite befindet sich ein Link zu einer SHTML-Seite, auf der das ArcView
Projekt gestartet wird. Das Perl Skript erzeugt außerdem eine .dbf-Datei (test.dbf), in der
der Nummer des entsprechenden Parkscheinautomatens (ist in $value abgelegt) gespeichert ist. Das ArcView-Projekt benutzt zur Analyse der Parksituation standardmäßig
diese .dbf-Datei, die das Perl-Skript erzeugt. Dadurch wird immer nur der aktuell gewählte Parkscheinautomat zur Abfrage verwendet. Das Starten des ArcView Projekts
auf der SHTML-Seite wird durch die Server Side Include Anweisung „<!—exec
cmd=“....arcview.exe projekt.apr! -->“ des Webservers realisiert und funktioniert wie in
der angewandten Lösung des Parkinformationssystems.
Diese Lösung wurde nicht verwendet, da als Ergebnis ein View des gewünschten Parkscheinautomatens erzeugt werden sollte. Um für jeden Parkscheinautomaten immer den
richtigen Ausschnitt der Karte darstellen zu können, wurde für jeden Automaten ein separates Projekt angelegt. Dadurch ist für jeden Parkscheinautomaten jeweils der richtige
Ausschnitt der Karte gezoomt als View im Projekt enthalten.
74
Parkrauminformationssysteme
Der Unterschied dieser Lösung zu der Lösung in Kapitel 5 besteht darin, daß in dieser
Lösung mit Formularen gearbeitet wird, die ein Perl-Skript aktivieren. Das Perl-Skript
erzeugt eine HTML-Seite, von der aus ArcView gestartet werden kann. Außerdem speichert es die ausgewählte Nummer des Parkscheinautomaten in einer .dbf-Datei.
ArcView kann auf diese .dbf-Datei zugreifen und führt die Abfrage des gewählten Automaten durch. In dieser Lösung wird deshalb nur ein ArcView Projekt benötigt und auch
nur eine SHTML-Seite.
Man könnte die jetzige Lösung auch mit Hilfe von CGI-Schnittstellen in Kombination mit
Perl lösen, das ist allerdings nicht notwendig, da jedem Automaten sein eigenes Projekt
zugeordnet wurde und so eine Lösung mit einem HTML-Formular unnötig ist, sogar den
Prozeß verlangsamen würde.
Eine Formularlösung wäre dann von Vorteil, wenn man mit einem Projekt auskommen
könnte, also nicht verschiedene gezoomte Viewbereiche benötigt. Das ist z.B. der Fall,
wenn man als Ergebnis ein Diagramm mit der Belegung erzeugt. In diesem Fall könnte
über das HTML-Formular die Nummer des gewünschten Parkscheinautomaten übergeben werden und das Diagramm für diesen Automaten erzeugt werden.
75
Parkrauminformationssysteme
6.3 CGI-Schnittstelle und Perl Skript – Formularlösung
HTML-Datei mit Formular
Diese HTML-Datei stellt eine komplette Lösung der in Kapitel 6.2 beschriebenen Möglichkeit und eine Alternativlösung zu der im Kapitel 5 beschriebenen HTML-Lösung dar.
Die HTML-Seiten, die in Kapitel 6.2 ausschnittsweise aufgeführt wurden, sind hier in
voller Länge aufgeführt.
Der gesamte Inhalt einer HTML-Datei wird in die Tags <html> bzw. </html> eingeschlossen
<html>
Der Server Rechner befiehlt dem WWW-Browser diese HTML-Datei nach 6000 Sekunden in jedem Fall von der Originaladresse auf dem Serverrechner zu laden.
<meta http-equiv="expires" content="6000">
Die HTML-Datei besteht aus zwei Teilen, dem „Header“ und dem „Body“. Hier im
„Head“, dem Kopfteil wird der Titel festgelegt. Der Titel der Datei wird bei der Anzeige im
WWW-Browser in der Titelzeile des Anzeigefensters angezeigt
<head>
<title>Parkraummanagementsystem</title>
</head>
Die Farbe für den Hintergrund, Text und die Verweise wird festgelegt.
<body bgcolor="silver" text="black" link="blue" vlink="azure" alink="darkblue" leftmargin=30 topmargin=50>
Der Schriftfont wird festgelegt und zwei alternative Fonts aufgelistet.
<font face="Arial, Helvetica, sans-serif">
Überschrift der HTML-Seite
<h1> Parkplatz ausw&auml;hlen</h1><br>
Einbinden einer Abbildung zur besseren Orientierung
<img src="essübersicht.jpg" width=50% >
Zwei Zeilenumbrüche werden eingefügt.
76
Parkrauminformationssysteme
<br><br>
Mit <form> wird ein Formular definiert. Alles, was zwischen diesem einleitenden Tag
und dem abschließenden Tag </form> steht, gehört zum Formular.
Bei der Angabe „action“ wird ein CGI-Programm („auswahl.pl“), das die Daten weiterverarbeitet, auf dem Serverrechner aufgerufen. Die Übertragungsmethode wird hier mit
„post“ angegeben. Wenn man „method=post“ wählt, werden die Daten des ausgefüllten
Formulars auf dem Serverrechner von "stdin" zur Verfügung gestellt, und das CGIProgramm muß sie behandeln wie eine Benutzereingabe, die auf der Kommandozeile
gemacht wurde (post = verschicken). Da in diesem Fall kein EndOfFile-Signal (EOF)
gesendet
wird,
muß
das
CGI-Programm
die
CGI-Umgebungsvariable
CONTENT_LENGTH auslesen, um die Länge der übermittelten Daten und damit deren
Ende zu ermitteln.
<form action="/cgi-bin/auswahl.pl" method=post>
Aufforderung zum Auswählen eines Automaten
Auswahl des Parkscheinautomaten
<p>Bitte wählen Sie:
Eine Auswahlliste wird mit bestimmten Werten (value) versehen. Beim Auswählen eines
Objektes der Liste wird dieser Wert übergeben.
<select name="Nummer" size=1>
<option value="1111202"> Marktplatz Nordost (Nr. 1)
<option value="1111212"> Marktplatz S&uuml;d (Nr. 2)
<option value="1114113"> Stadthalle (Nr. 3)
<option value="1114133"> Ebershaldenstra&szlig;e /
Hauffstra&szlig;e (Nr. 4)
<option value="1115213"> Ottilienplatz (Nr. 5)
<option value="1115333"> Zwingerstra&szlig;e (Nr. 6)
<option value="1117332"> Ritterstra&szlige (Nr. 7)
<option value="1121212"> Kesselwasen (Nr. 8)
<option value="1122231"> Oberer Metzgerbach (Nr. 9)
<option value="1123241"> Bahnhofstra&szlig;e / Am Kronenhof (Nr.
10)
<option value="1124441"> Bahnhofstra&szlig;e / Schelztor (Nr. 11)
<option value="1211134"> Bahnhofplatz (Nr. 12)
<option value="1123531"> Rossmarkt 1 (Nr. 13)
<option value="1123611"> Rossmarkt 2 (Nr. 14)
<option value="1123621"> Wehrneckarstra&szlig;e (Nr. 15)
<option value="1124411"> Martinstra&szlig;e / Bahnhofstra&szlig;e
(Nr. 16)
<option value="1221334"> Martinstra&szlig;e / Kanalstra&szlig;e
(Nr. 17)
77
Parkrauminformationssysteme
<option value="1222114"> Schelztorstra&szlig;e (Nr. 18)
<option value="1421611"> Fabrikstra&szlig;e (Nr. 19)
<option value="1421621"> Vogelsangbr&uuml;cke (Nr. 20)
<option value="1422733"> Obertorstra&szlig;e /
M&uuml;hlstra&szlig;e (Nr. 21)
<option value="1423223"> Obertorstra&szlig;e / Kiesstra&szlig;e
(Nr.22)
<option value="1424143"> Blumenstra&szlig;e (Nr.23)
<option value="1424843"> Charlottenplatz (Nr.24)
</select>
Button zum „Abschicken“ der Auswahl
<input type=submit value="OK"><br><br>
Abschlußtag des Formulars
</form>
Verweis zur „default.html“ Seite
<a href="http://127.0.0.1"> Zum Anfang </a>
Abschließende HTML-Tags
</font></body>
</html>
Abbildung 6.2 HTML-Datei mit Formularfeld
78
Parkrauminformationssysteme
Perl Skript - auswahl.pl
Perl-Skript, das von der CGI-Schnittstelle gestartet wird.
Lage des Perl-Interpreters auf dem Rechner
#!/bin/perl
Test, ob die Daten durch die „Get“ oder die „Post“ Methode übergeben werden.
if($ENV{'REQUEST_METHOD'} eq 'GET')
{ $Daten = $ENV{'QUERY_STRING'} }
else {
read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
}
Das Perl-Skript erzeugt ein neues HTML-Dokument. Auf dieser Seite ist ein Link zur
Ergebnisseite vorhanden. Dieser Link trägt den Namen „Weiter zum Ergebnis“. Wenn
diese SHTML-Seite aufgerufen wird, wird das ArcView Projekt gestartet.
print "Content-type: text/html\n\n";
print "<html><head><title>Ergebnis</title></head>\n";
print "<body bgcolor=#CCFFFF><h1>Einen Mausklick noch bis zum Ergebnis</i></h1>\n";
print "<a href='http://127.0.0.1/ergebnis1.shtml'> Weiter zum Ergebnis\n";
Die Daten, die durch das Formular übergeben werden, werden extrahiert und der Wert
zur Kontrolle auf der HTML-Seite ausgegeben.
@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder)
{
($name, $value) = split(/=/, $Feld);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$Formular{$name} = $name;
$Formular{$value} = $value;
#print "$Formular{$name} = $Formular{$value}", "<br>\n";
}
Die HTML-Seite wird durch die abschließenden Tags komplettiert.
print "<br>\n";
print "</a></body></html>\n";
79
Parkrauminformationssysteme
In die dbf-Datei „test.dbf“ wird der übergebene Wert des ausgewählten Parkscheinautomaten geschrieben. Auf diese Weise kann man in ArcView später die Abfrage des
ausgewählten Parkscheinautomatens starten.
open(FH, ">test.dbf");
print FH "$Formular{$name}\n";
print FH "$Formular{$value}";
close(FH);
80
Parkrauminformationssysteme
6.4 Sonstige Erweiterungen
Das entwickelte Parkrauminformationssystem kann natürlich noch beliebige um viele
Komponenten erweitert werden.
Man kann zusätzlich die exakten Belegungszahlen eines Parkscheinautomaten anzeigen. Diese können beispielsweise durch ein Diagramm dargestellt werden, das
zusätzlich auf der Ergebnisseite eingefügt wird.
Abb. 6. 1 Beispiel: Belegungsanzeige in Diagrammform
Diese Belegungsdiagramme kann man zusätzlich für jeden Automaten in die Ergebniskarte von ganz Esslingen einfügen und hat damit schon in einer Übersichtskarte den
Belegungsgrad aller Automaten auf einem Blick. Durch ein solches Kuchendiagramm
kann man recht schnell nur durch einen kurzen Blick auf die Karte erkennen, wie die
Parkplatzsituation in dem gewünschten Bereich ist und eventuell gleich auf einen benachbarten ausweichen.
Eine weitere interessante Ergänzung ist die Anzeige der Höchstparkdauer und auch der
Gebühr der Parkscheinautomaten. Dadurch kann dies man im Falle eines eventuell länger dauernden Parkens im Vorhaben berücksichtigt werden.
Außerdem kann man das System um eine Komponente erweitern, die eine Belegungstendenz anzeigt. Durch das Einbinden mehrerer Access-Dateien können die aktuellen
Belegungszahlen mit den vorigen verglichen werden und so eine Tendenz berechnet
werden.
81
Parkrauminformationssysteme
Durch einen Vergleich mit den Belegungszahlen von den Vortagen zur selben Uhrzeit
können Zeiten hoher Nutzung ermittelt werden. Zu Stoßzeiten können Parkplatzsuchende durch einen entsprechenden Hinweis rechtzeitig gewarnt werden.
Außerdem könnte man in dieses Parkrauminformationssystem auch die Parkhäuser mit
einbeziehen.
Des weiteren wäre es auch sehr informativ, alle öffentlichen Parkplätze, auch die die
kostenlos zur Verfügung stehen, in ein Parkrauminformationssystem aufzunehmen. So
könnten durch eine „nächste Nachbarschaftssuche“ alle öffentliche zugänglichen Parkplätze zu einem gewünschten Zielpunkt gesucht werden. Als Ergebnis könnten alle
Parkplätze, die sich in einer gewissen Umgebung zum Zielort befinden angezeigt werden.
Weitergehend könnte man das System so erweitern, daß auch Sonderparkplätze, wie
Behindertenparkplätze und Frauenparkplätze in einer Karte dargestellt werden. Auch
das Darstellen von Anwohnerparkplätzen nach Zonen oder Bereichen wäre eine interessante Erweiterung.
Parkplätze, die zu einem Park und Ride Projekt gehören, könnten damit ausgewiesen
werden, so daß man bei „zugeparkter“ Innenstadt dann das Auto außerhalb abstellen
kann und bequem mit den öffentlichen Verkehrsmittel ins Zentrum gelangen kann.
Eine sogenannte Bereichssuchoption, mit der man sich zu einem bestimmten Ziel mehrere mögliche Parkmöglichkeiten anzeigen lassen kann wäre auch denkbar. In der
Bereichssuchoption könnte man entweder stadtteilweise die Parkmöglichkeiten anzeigen lassen, oder auch um ein bestimmtes Ziel alle Parkplätze mit einer bestimmten
Entfernung zum Ziel suchen lassen
Möglich wäre auch der Einsatz von „Clickable Maps“. „Clickable Maps“ sind Karten mit
„sensiblen“ Bereichen. Diese Bereiche müssen vorher genau festgelegt werden. Klickt
man auf einen dieser Bereiche (in diesem Fall ein Parkscheinautomat) bekommt man
eine Information (hier die aktuelle Belegung der Parkplätze) geliefert.
Will man nun das ganze Parkrauminformationssystem um einen Parkscheinautomaten
erweitern ist es denkbar, einen anderen Lösungsansatz zu wählen. In der jetzigen Lösung müßte man für einen neuen Automaten ein neues ArcView Projekt anlegen, und
auch eine neue SHTML-Seite erzeugen. Für einen einzelnen Automaten ist das sicher
kein Problem, geschieht die aber öfter, ist es besser einen anderen Lösungsansatz
auszubauen.
Dieser andere Lösungsansatz basiert auf der Lösung, die in Kapitel 6.2 erklärt wurde.
Die Nummer des Parkscheinautomaten wird durch das Perl-Skript in eine .dbf-Datei gespeichert. ArcView verwendet diese Datei, um die Abfrage nach dem gewählten
Automaten durchzuführen. Allerdings muß das Avenue-Skript im ArcView Projekt um
eine automatische Zoomfunktion erweitert werden, um den Ausschnitt um den Automaten herum als Ergebnis darstellen zu können. Diese Zoomfunktion müßte einen
vorgegebenen Ausschnitt um den jeweils gewählten Automat herauszoomen und die
82
Parkrauminformationssysteme
Situation um diesen Automaten darstellen. Durch diese Lösung wird nur ein Projekt und
auch nur eine SHTML-Datei benützt.
83
Parkrauminformationssysteme
7. Zusammenfassung
Die gefundene Lösung des Parkrauminformationssystems mit der CGI-Schnittstelle und
der SHTML-Seite funktioniert problemlos. Dabei hängt die Geschwindigkeit der Ergebnispräsentation stark von der Rechnerleistung des Servers ab und auch von den
verwendeten Graphikdateien im ArcView Projekt ab. Ein leistungsfähiger Serverrechner
ist äußerst empfehlenswert, da die Abfrage des Geo-Informationssystems und somit
auch der Aufbau der Ergebnisseite sonst über eine Minute dauern kann und auch mehrere Abfragen gleichzeitig an das System gestellt werden können. Sind mehrere
Abfragen gleichzeitig gestellt, werden mehrere ArcView Projekte gleichzeitig geöffnet
und jedes Projekt führt eine Abfrage parallel durch. Ist in so einem Fall der Serverrechner nicht leistungsfähig genug kann es zu Problemen kommen, oder der Serverrechner
kann sogar ganz „abstürzen“.
Eine Testversion des Parkrauminformationssystems befindet sich hier:
http://195.126.81.165/arcview/esslingen.html
(Achtung, die Testversion wird sich nur kurzzeitig auf dem Server befinden)
Benutzt man zur Lösungsfindung noch zusätzlich HTML-Formulare, wird das nochmals
den Zeitfaktor vergrößern. Durch das Einbinden von einem HTML-Formular wird ein Perl
Skript gestartet werden, das wiederum Zeit zum Verarbeiten der Daten benötigt.
Außerdem ist es wichtig bei der Wahl eines Webservers darauf zu achten, daß er CGI
unterstützt. Tut er das nicht, ist das Starten eines ArcView Projektes nicht möglich.
Unbedingt notwendig ist auch, daß ein gültiger ODBC-Treiber für die MS Access Datenbank installiert ist. Nur so kann das Avenue Skript von ArcView eine Verbindung zu der
MS Access Datenbank herstellen und damit immer die aktuellen Daten zur Abfrage verwenden.
Die Lösung mit den signierten Applets ist nicht durchführbar, da das Parkrauminformationssystem ja von vielen beliebigen Anwendern genützt werden soll. Bei einer Lösung
mit signierten Applets haben nur Leute mit einem „Zugangsschlüssel“ im Browser eine
Berechtigung Abfragen an das System zu stellen. Für diese Aufgabenstellung scheidet
diese Lösung vollständig aus.
Man könnte eine solche Lösung eventuell im E-Commerce Bereich einsetzen. Wer einen gewissen Betrag zahlt, bekommt einen Zugangsschlüssel und kann dann das
System nutzen.
Die zwei kommerziellen Alternativen ImageMapper und Map-TV haben sich beide nicht
als geeignet herausgestellt. Beide erzeugen eine statische Lösung. Will man immer eine
aktuelle Datendatei anbinden, muß bei jeder Änderung eine neue Lösung interaktiv erzeugt werden. Dadurch sind diese Lösungen überhaupt nicht für dynamisch
veränderbare Daten geeignet. Bei jeder Änderung müßten die Projekte von einem Anwendungsbetreuer angepaßt werden.
84
Parkrauminformationssysteme
Mit dem ArcView Internet Map Server ließe sich dieses Projekt sicherlich gut realisieren.
Zum Testen stand dieser aber nicht zur Verfügung, so daß hier nur diese Vermutung
gemacht werden kann. Darüber hinaus ist ohnehin eine Alternativlösung zum ArcView
Internet Map Server gesucht.
85
Parkrauminformationssysteme
7.1 Ausblick
In der Zukunft kann man sich noch zahllose Erweiterungen zu einem solchen Parkrauminformationssystem vorstellen.
Schon heute gibt es internetfähige Mobiltelefone, mit denen man sich die verschiedensten Informationen beschaffen kann. Dadurch kann man dann natürlich auch
Informationen zu Parkplätzen abrufen, falls diese auf einer WAP – fähigen Internet Seite
vorhanden sind.
In Navigationssystemen können solche Parkrauminformationssysteme eingebunden
werden. Dadurch kann man direkt zu einem Parkplatz geleitet werden. Vorstellbar wäre
in dieser Kombination auch, daß man sich einen Parkplatz vorab reservieren kann und
eventuell auch schon bezahlen, so daß man direkt zu „seinem“ freien Parkplatz geführt
wird.
Routenplaner, mit dem man seine Fahrt von Ausgangspunkt zum Zielpunkt planen lassen und ausdrucken kann gibt es schon in vielfältigen Ausführungen. Wenn man
allerdings mit einem Routenplaner auch die Parkplätze anzeigen lassen kann, die aktuelle Belegung feststellen und dann auch noch einen Parkplatz reservieren, wäre das
eine erhebliche Erneuerung, die sicherlich von vielen Menschen gerne genutzt werden
würde.
Weitergehend wäre es natürlich interessant, wenn man über ein Parkrauminformationssystem die Tarife der Parkplätze und Parkhäuser erfahren könnte, sowie die Größe bzw.
Höhe der Einfahrt, falls man mit einem größeren bzw. höheren Fahrzeug unterwegs ist.
Besonders großzügig angelegt Parkplätze und Parkhäuser könnten als Komfortparkplätze ausgewiesen werden.
Man kann bei einem Parkrauminformationssystem selbstverständlich noch weitergehen
und eine Stadtinformation anbinden. Zu einem Zielort (z.B. Ämter, Ärzte, kulturelle Einrichtungen und Geschäfte) kann man sich den nächstgelegenen freien Parkplatz
anzeigen lassen. Bei vielen Einkaufsgeschäften erhält man einen „Parkzuschuß“. Diese
Information könnte man auch mit diesem Parkrauminformationssystem anzeigen und
diese Kriterien in die Parkplatzwahl mit einbeziehen.
86
Parkrauminformationssysteme
8. Literatur
[Baloui 1998]
Said Baloui
Access 97 Kompendium
Markt& Technik Buch- und Software-Verlag GmbH, 1998
[Cecconi 1999]
Alessandro Cecconi
Kartographische Darstellung von statistischen Daten im Internet
Diplomarbeit, Geographisches Institut der Universität Zürich, 1999
[Christiansen , Torkington 1998]
Tom Christiansen, Nathan Torkington
Perl Cookbook
O‘ Reilly Verlag, 1998
[ESRI 1 1996]
Environmental Systems Research Institute, Inc.
Using Avenue
Handbuch zu ArcView GIS 3.1
[ESRI 2 1996]
Environmental Systems Research Institute, Inc.
Mit ArcView GIS Arbeiten
Handbuch zu ArcView GIS 3.1
[Bill, Fritsch 1997]
Ralf Bill, Dieter Fritsch
Grundlagen der Geo-Informationssysteme Bn.1, Hardware, Software, Daten
h. Wichmannn Verlag Heidelberg, 1997
[Herter et al. 1999]
Michael Herter, Michael Höck, Michael Jacobi
Avenue Programmierung in ArcView GIS
Buch und CD-ROM 1999 Eigenverlag, Kontaktadresse: avenue-
[email protected]
[Krüger 1 1998]
Guido Krüger
Java 1.1 Grundlagen Programmierung
Erste Auflage, HERDT-Verlag, Nackenheim, Germany, 1998
87
Parkrauminformationssysteme
[Krüger 2 1998]
Guido Krüger
Java 1.1 Programmierung Fortgeschrittene
Erste Auflage, HERDT-Verlag, Nackenheim, Germany, 1998
[Liebig 1999]
Wolfgang Liebig
Desktop-GIS mit ArcView GIS - Leitfaden für Anwender
Zweite Auflage, H.Wichmann Verlag, Hüthig GmbH, Heidelberg, 1999
[Leukert 2000]
Kristin Leuckert, Wolfgang Reinhardt und Stefan Seeberger
GIS-Internet Architekturen
Zeitschrift für Vermessungswesen 1/2000 (S. 23-28)
[RRZN 1 1999]
Regionales Rechenzentrum für Niedersachsen / Universität Hannover
Java Begleitmaterial zu Vorlesungen/Kursen
Fünfte Auflage, http://www.rrzn.unihannover.de/Dokumentation/Kooperation.html, 1999
[RRZN 2 1999]
Regionales Rechenzentrum für Niedersachsen / Universität Hannover
Grundlagen der Programmierung mit Beispielen in C++ und Java
Erste Auflage; http://www.rrzn.unihannover.de/Dokumentation/Kooperation.html, 1999
88
Parkrauminformationssysteme
8.1 Links
Geo-Informationssysteme, ArcView, Avenue
•
•
•
•
•
•
•
{1.1} http://www.esri-germany.de/
{1.2} http://www.esri.com
{1.3} http://castafiore.uni-muenster.de/seminare/ss98/uis/AV.html
{1.4} http://www.conterra.de/gis_prod/av_gis/avgs_txt.htm
{1.5} http://www.archmatic.com/glossar/z_gis.htm
{1.6} http://gio.uni-muenster.de/ (Archiv 2/97)
{1.7} http://www.spatialmedia.com
Datenbanken
• {2.1} http://www.lrz-muenchen.de/services/datenhaltung/datenbanken/
• {2.2} http://www.staff.fh-vorarlberg.ac.at/%7Eges/fa96inf2/Welcome.html
• {2.3} http://www.bib.informatik.th-darmstadt.de/TTT/AZ89.HTM#g41
• {2.4} http://www.phil-fak.uniduesseldorf.de/infowiss/frames/lehrangebot/praetor.html
• {2.5} http://wwwdb.informatik.uni-rostock.de/DBinfos.html
• {2.6} http://www.informatik.uni-trier.de/~hoff/etc/dpa/node28.html
• {2.7} http://www-4.ibm.com/software/data/db2/
• {2.8} http://www.oracle.com/
• {2.9} http://www2.informatik.uni-osnabrueck.de/um/95/95.1/oodb/oodb.html
Internet, WWW, HTML, Webbrowser und Webserver
• {3.1} http://www.bis.uni-oldenburg.de/internet/kurs1.html
• {3.2} http://www.bipas.de/allgemein/allgemein.htm
• {3.3} http://www.w3.org
• {3.4} http://www.teamone.de/selfhtml/selfhtml.htm
Internet Map Server
• {4.1} http://www.alta4.de
• {4.2} http://www.spatialmedia.com/
• {4.3} http://www.esri.com/software/arcview/extensions/imsext.html
•
{4.4}
http://www.esri-germany.de/index/auswahl.html?top=produkte&nav=internet
Beispiel
• http://212.76.136.14/ip_demo/ip_demo1.html
89
Parkrauminformationssysteme
Signierte Applets
• {5.1} http://www.suitable.com/Doc_CodeSigning.shtml von Daniel Griscom
• {5.2} http://java.rrzn.uni-hannover.de/jug/sigapplets/
• {5.3} http://ourworld.compuserve.com/homepages/jozart/article/index.html
• {5.4} http://www.capitalnet.com/~oswald/Derrick/
• {5.5} http://www.microsoft.com/java/security/default.htm
• {5.6} http://java.sun.com/security/
• {5.7} http://java.rrzn.uni-hannover.de/insel/handbuch/sig.html
Java
•
•
•
•
{6.1} http://www.egd.igd.fhg.de/~sybille/kurs/
{6.2} http://www.geocities.com/SiliconValley/Foothills/5270/
{6.3} http://www.geocities.com/SiliconValley/Foothills/5270/html/links.html
{6.4}
http://www.geocities.com/SiliconValley/Foothills/5270/Texte/FAQ/node12.htm
l#126
Perl
•
{7.1}
•
•
•
•
•
•
•
•
•
http://www.uni-koeln.de/RRZK/kurse/unterlagen/perl.h97/part1/proglang.html
{7.2} http://www.uni-koeln.de/RRZK/kurse/unterlagen/perl.h97/index.html
{7.3} http://www.uni-koeln.de/dienste/www/uk-web/970606/links.html
{7.4} http://www.bboxbbs.ch/home/html_Kurs/html/tgc.htm
{7.5} http://www.phy.uni-bayreuth.de/~btpa25/perl/perl_main.html
{7.6} http://www.ma-netz.de/
{7.7} http://www.tekromancer.com/perl/inhalt.html (für Anfänger!)
{7.8} http://www.perl-archiv.de/perl/index.shtml
{7.9} http://www.iha.bepr.ethz.ch/pages/leute/schluep/teleseminar/perl/a.htm
{7.10} http://www.uni-koblenz.de:81/extern/71.html
90
Parkrauminformationssysteme
9. Anhang
Im Anhang befinden sich die Programmcodes ohne beschreibenden Text.
9.1 Avenue Skript
' Voraussetzung: Ein gültiger ODBC-Treiber für
' MS Access 7.0 ist installiert und die Tabelle1
' existiert in der MdB-Datei
if(av.GetProject.FindDoc("aktuell.dbf")<>nil)then
theSEd=av.GetProject.FindDoc("aktuell.dbf")
av.GetProject.RemoveDoc(theSEd)
end
theSQL = SQLCon.Find("MS Access 97-Datenbank")
'MS Access 97-Datenbank
aString="Select * from automaten"
theVTab=VTab.MakeSQL(theSQL, aString)
if (theVTab.HasError.not) then
myTable=Table.Make(theVTab)
av.GetProject.AddDoc(myTable)
myTable.SetName("aktuell.dbf") 'Name für die Datei ist immer gleich
else
MsgBox.Info("Fehler bei der SQL-Verbindung","")
end
' Tabelle aktuell.dbf mit Tabelle Attribute von Parkscheinautomaten.shp verbinden
ZuVTab=av.GetProject.FindDoc("Attribute von Parkscheinautomaten.shp").GetVTab
VonVTab=av.GetProject.FindDoc("aktuell.dbf").GetVTab
ZuVTabSchluessel=ZuVTab.FindField("Id")
VonVTabSchluessel=VonVTab.FindField("Automatennr")
ZuVTab.Join(ZuVtabSchluessel,VonVTab,VonVTabSchluessel)
' Anzahl der Freien Parkplätze berechnen
' Anzahl der Plätze - Belegt Plätze
' Tabelle Attribute von Parkscheinautomaten.shp bearbeitbar setzen,
' berechnen und Bearbeitung beenden + Speichern
theTable=av.FindDoc("Attribute von Parkscheinautomaten.shp")
theTable.GetWin.Open
91
Parkrauminformationssysteme
theVTab=theTable.GetVTab
if(theVTab.CanEdit)then
theVTab.SetEditable(TRUE)
theField=av.GetActiveDoc.GetVTab.FindField("freie")
theMaxAnz=theVTab.FindField("Max Plätze")
theBelAnz=theVTab.FindField("Akt Belegung")
theTable.SetActiveField(theField)
numRecords=theVTab.GetNumRecords
for each record in theVTab
theMax=theVTab.ReturnValue(theMaxAnz, record)
theBel=theVTab.ReturnValue(theBelAnz, record)
theFreie=theMax-theBel
theVTab.setValue(theField, record, theFreie)
end
theVTab.SetEditable(FALSE)
theVTab.Refresh
else
MsgBox.Info("Die Tabelle ist nicht editierbar.","")
end
' Legende mit abgestuften Farben erstellen legende1
' Rot ist besetzt, grün ist frei
theView=av.FindDoc("Parkrauminformationssystem Esslingen")
theWin=theView.GetWin
theWin.Open
theTheme=theView.FindTheme("Parkscheinautomaten.shp")
theTheme.SetActive(TRUE)
theLegend=Legend.Make(#SYMBOL_MARKER)
theLegend.SetLegendType(#LEGEND_TYPE_COLOR)
theLegend.Interval(theTheme, "freie", 5)
theSymList = {Color.GetRed, Color.GetMagenta, Color.GetBlue, Color.GetCyan, Color.GetGreen}
theSymbols=theLegend.GetSymbols
for each i in 0..4
theSymbol=theSymbols.Get(i)
92
Parkrauminformationssysteme
theSymbol.SetColor(theSymList.Get(i))
theSymbol.SetSize (36)
end
theTheme.SetLegend(theLegend)
theTheme.UpdateLegend
' Tabelle aktuell mit Tabelle Parkplatzattribute verbinden
ZuVTab=av.GetProject.FindDoc("Parkplatzattribute").GetVTab
VonVTab=av.GetProject.FindDoc("aktuell.dbf").GetVTab
ZuVTabSchluessel=ZuVTab.FindField("automatid")
VonVTabSchluessel=VonVTab.FindField("Automatennr")
ZuVTab.Join(ZuVtabSchluessel,VonVTab,VonVTabSchluessel)
' Anzahl der Freien Parkplätze berechnen
' Anzahl der Plätze - Belegt Plätze
' Tabelle Attribute von Parkscheinautomaten.shp bearbeitbar setzen,
' berechnen und Bearbeitung beenden + Speichern
theTable=av.FindDoc("Parkplatzattribute")
theTable.GetWin.Open
theVTab=theTable.GetVTab
if(theVTab.CanEdit)then
theVTab.SetEditable(TRUE)
theField=av.GetActiveDoc.GetVTab.FindField("berechnen")
theMaxAnz=theVTab.FindField("Max Plätze")
theBelAnz=theVTab.FindField("Akt Belegung")
theTable.SetActiveField(theField)
numRecords=theVTab.GetNumRecords
for each record in theVTab
theMax=theVTab.ReturnValue(theMaxAnz, record)
theBel=theVTab.ReturnValue(theBelAnz, record)
theFreie=theMax-theBel
theVTab.setValue(theField, record, theFreie)
end
theVTab.SetEditable(FALSE)
93
Parkrauminformationssysteme
theVTab.Refresh
else
MsgBox.Info("Die Tabelle ist nicht editierbar.","")
end
' Legende mit abgestuften Farben erstellen Legende2
' Rot ist besetzt, grün ist frei
theView=av.FindDoc("Parkrauminformationssystem Esslingen")
theWin=theView.GetWin
theWin.Open
theTheme=theView.FindTheme("Parken.shp")
theTheme.SetActive(TRUE)
theLegend=Legend.Make(#SYMBOL_FILL)
theLegend.SetLegendType(#LEGEND_TYPE_COLOR)
theLegend.Interval(theTheme, "berechnen", 5)
theSymList = {Color.GetRed, Color.GetMagenta, Color.GetBlue, Color.GetCyan, Color.GetGreen}
theSymbols=theLegend.GetSymbols
for each i in 0..4
theSymbol=theSymbols.Get(i)
theSymbol.SetColor(theSymList.Get(i))
end
theTheme.SetLegend(theLegend)
theTheme.UpdateLegend
' Layout2 öffnen und als .jpg exportieren
theLayout=av.FindDoc("Layout2")
theLayout.GetWin.Open
theFormat="JPEG"
theFileName="ebersh.jpg".AsFileName
theExportDisplay=theLayout.GetDisplay.ExportStartFN(theFileName, theFormat)
theExportDisplay.Invalidate(FALSE)
theLayout.GetGraphics.SetDisplay(theExportDisplay)
theLayout.GetGraphics.Draw
theLayout.GetGraphics.SetDisplay(theLayout.GetDisplay)
theExportDisplay.ExportEnd
' alle Verbindungen lösen
94
Parkrauminformationssysteme
theTable=av.FindDoc("Attribute von Parkscheinautomaten.shp")
theTable.GetWin.Open
theVTab = av.GetActiveDoc.GetVtab
if (theVTab.IsBase.Not) then
av.GetProject.SetModified(true)
end
theVTab.UnJoinAll
' Löschen der Tabelle aktuell.dbf
if(av.GetProject.FindDoc("aktuell.dbf")<>nil)then
theSEd=av.GetProject.FindDoc("aktuell.dbf")
av.GetProject.RemoveDoc(theSEd)
end
' Projekt schließen
' Av.Quit
95
Parkrauminformationssysteme
9.2 Html und SHTML
Startseite in HTML
Auf dieser HTML-Seite befindet sich die Startseite des Parkrauminformationssystems.
Hier kann man wählen, ob man eine Abfrage an einen bestimmten Automaten richten
will, oder eine Übersicht über alle Parkscheinautomaten bekommen will.
<html>
<meta http-equiv="expires" content="6000">
<head>
<title>Parkraummanagementsystem</title>
</head>
<body bgcolor="silver" text="black" link="blue" vlink="azure" alink="darkblue" leftmargin=30 topmargin=50>
<font face="Arial, Helvetica, sans-serif">
<h1> Parkinformationssystem Esslingen <img src="ansicht_burg.jpg" width=20%
></h1>
<p>
<table width=100% cellpadding=10>
<tr align=center>
<td ><h3>Auswahl</h3>
<a href="auswahl1.html"><img src="parkautomat.jpg" width=60 border=0 ></a>
<td><h3>Überblick</h3>
<a href="View.shtml"><img src="esslingen.jpg" width=300 border=0></a>
</tr>
<tr align=center valign=top>
<td>Auswahl eines bestimmten Parkscheinautomaten<Beschreibungstext>
<td>Belegung aller Parkscheinautomaten auf einen Blick<Beschreibungstext>
</tr>
</table>
<a href="http://127.0.0.1"> Zum Anfang </a>
</font>
</body>
</html>
96
Parkrauminformationssysteme
Auswahlseite
Auf dieser HTML-Seite kann ein Parkscheinautomat gewählt werden. beim Klicken auf
den gewünschten Namen des Parkscheinautomaten, wird man zu der SHTML-Seite
weitergeleitet, die die Abfrage startet und auch das Ergebnis darstellt.
<html>
<meta http-equiv="expires" content="6000">
<head>
<title>Parkraummanagementsystem</title>
</head>
<body bgcolor="silver" text="black" link="blue" vlink="azure" alink="darkblue" leftmargin=30 topmargin=50>
<font face="Arial, Helvetica, sans-serif">
<h1> Parkplatz ausw&auml;hlen </h1>
<img src="essübersicht.jpg" width=70% align=left>
<p>
Bitte wählen Sie einen Parkscheinautomaten:
<br>
<a href="Marktno.shtml"> Marktplatz Nordost (Nr. 1) </a><br>
<a href="Markts.shtml"> Marktplatz S&uuml;d (Nr. 2) </a><br>
<a href="stadthalle.shtml"> Stadthalle (Nr. 3) </a><br>
<a href="ebersh.shtml"> Ebershaldenstra&szlig;e / Hauffstra&szlig;e (Nr. 4) </a><br>
<a href="ottilien.shtml"> Ottilienplatz (Nr. 5)</a><br>
<a href="zwinger.shtml"> Zwingerstra&szlig;e (Nr. 6) </a><br>
<a href="ritter.shtml"> Ritterstra&szlige (Nr. 7) </a><br>
<a href="kessel.shtml"> Kesselwasen (Nr. 8) </a><br>
<a href="metzger.shtml"> Oberer Metzgerbach (Nr. 9) </a><br>
<a href="bahnkron.shtml"> Bahnhofstra&szlig;e / Am Kronenhof (Nr. 10) </a><br>
<a href="bahnschelz.shtml"> Bahnhofstra&szlig;e / Schelztor (Nr. 11) </a><br>
<a href="bahnplatz.shtml"> Bahnhofplatz (Nr. 12)</a><br>
<a href="ross1.shtml"> Rossmarkt 1 (Nr. 13) </a><br>
<a href="ross2.shtml"> Rossmarkt 2 (Nr. 14) </a><br>
<a href="wehrneck.shtml"> Wehrneckarstra&szlig;e (Nr. 15) </a><br>
<a href="bahnmart.shtml"> Martinstra&szlig;e / Bahnhofstra&szlig;e (Nr. 16) </a><br>
<a href="kanalmart.shtml"> Martinstra&szlig;e / Kanalstra&szlig;e (Nr. 17) </a><br>
<a href="schelz.shtml"> Schelztorstra&szlig;e (Nr. 18) </a><br>
<a href="fabrik.shtml"> Fabrikstra&szlig;e (Nr. 19)</a><br>
<a href="vogel.shtml"> Vogelsangbr&uuml;cke (Nr. 20) </a><br>
97
Parkrauminformationssysteme
<a href="obermuhl.shtml"> Obertorstra&szlig;e / M&uuml;hlstra&szlig;e (Nr. 21)
</a><br>
<a href="oberkies.shtml"> Obertorstra&szlig;e / Kiesstra&szlig;e (Nr.22) </a><br>
<a href="blumen.shtml"> Blumenstra&szlig;e (Nr.23) </a><br>
<a href="charlot.shtml"> Charlottenplatz (Nr.24) </a><br clear=all>
<p>
!Die Abfrage kann einige Minuten dauern!
<br>
<a href="esslingen.html"> Zum Anfang </a>
</font>
</body>
</html>
98
Parkrauminformationssysteme
SHTML-Datei
Diese SHTML-Seite startet eine Abfrage aller Parkscheinautomaten als Übersicht über
alle Parkscheinautomaten Esslingens.
<html>
<meta http-equiv="expires" content="6000">
<head>
<title>Parkraummanagementsystem</title>
</head>
<body bgcolor="silver" text="black" link="blue" vlink="azure" alink="darkblue" leftmargin=30 topmargin=50>
<font face="Arial, Helvetica, sans-serif">
<!--#exec cmd="/Esri/Av_gis30/Arcview/Bin32/arcview.exe projesview.apr! -->
<h1> Parkinformationssystem Esslingen <img src="ansicht_burg.jpg" width=20%
></h1>
<p>
<h3>Ergebnis - Anzahl der freien Pl&auml;tze</h3>
<p>
<img src="file://localhost/c:/httpd/ergalles.jpg" width=100% >
<p>
<a href="esslingen.html"> Zum Anfang </a>
</font>
</body>
</html>
SHTML-Datei, die ein Projekt zum Abfragen eines einzelnen Parkscheinautomaten Startet. Die übrigen SHTML-Dateien sind genauso aufgebaut. Sie unterscheiden sich in
einzelnen Namen, wie z.B. Projektnamen, Ergebnisabbildungsnamen und auch in der
Bezeichnung des Parkscheinautomatens.
<html>
<meta http-equiv="expires" content="6000">
<head>
<title>Parkraummanagementsystem</title>
99
Parkrauminformationssysteme
</head>
<body bgcolor="silver" text="black" link="blue" vlink="azure" alink="darkblue" leftmargin=30 topmargin=50>
<font face="Arial, Helvetica, sans-serif">
<!--#exec cmd="/Esri/Av_gis30/Arcview/Bin32/arcview.exe proj10view.apr! -->
<h1> Parkinformationssystem Esslingen <img src="ansicht_burg.jpg" width=20%
></h1>
<p>
<h3>Ergebnis - Anzahl der freien Pl&auml;tze Bahnhofstra&szlig;e / Am Kronenhof</h3>
<p>
<img src="file://localhost/c:/httpd/bahnkron.jpg" width=100% >
<p>
<a href="esslingen.html"> Zum Anfang </a>
</font>
</body>
</html>
100
Parkrauminformationssysteme
9.3 HTML-Datei mit Formular
<html>
<meta http-equiv="expires" content="6000">
<head>
<title>Parkraummanagementsystem</title>
</head>
<body bgcolor="silver" text="black" link="blue" vlink="azure" alink="darkblue" leftmargin=30 topmargin=50>
<font face="Arial, Helvetica, sans-serif">
<h1> Parkplatz ausw&auml;hlen</h1>
<br>
<img src="essübersicht.jpg" width=50% >
<br><br>
<form action="/cgi-bin/auswahl.pl" method=post>
Auswahl des Parkscheinautomaten
<p>
Bitte wählen Sie:
<select name="Nummer" size=1>
<option value="1111202"> Marktplatz Nordost (Nr. 1)
<option value="1111212"> Marktplatz S&uuml;d (Nr. 2)
<option value="1114113"> Stadthalle (Nr. 3)
<option value="1114133"> Ebershaldenstra&szlig;e / Hauffstra&szlig;e (Nr. 4)
<option value="1115213"> Ottilienplatz (Nr. 5)
<option value="1115333"> Zwingerstra&szlig;e (Nr. 6)
<option value="1117332"> Ritterstra&szlige (Nr. 7)
<option value="1121212"> Kesselwasen (Nr. 8)
<option value="1122231"> Oberer Metzgerbach (Nr. 9)
<option value="1123241"> Bahnhofstra&szlig;e / Am Kronenhof (Nr. 10)
<option value="1124441"> Bahnhofstra&szlig;e / Schelztor (Nr. 11)
<option value="1211134"> Bahnhofplatz (Nr. 12)
<option value="1123531"> Rossmarkt 1 (Nr. 13)
<option value="1123611"> Rossmarkt 2 (Nr. 14)
<option value="1123621"> Wehrneckarstra&szlig;e (Nr. 15)
<option value="1124411"> Martinstra&szlig;e / Bahnhofstra&szlig;e (Nr. 16)
101
Parkrauminformationssysteme
<option value="1221334"> Martinstra&szlig;e / Kanalstra&szlig;e (Nr. 17)
<option value="1222114"> Schelztorstra&szlig;e (Nr. 18)
<option value="1421611"> Fabrikstra&szlig;e (Nr. 19)
<option value="1421621"> Vogelsangbr&uuml;cke (Nr. 20)
<option value="1422733"> Obertorstra&szlig;e / M&uuml;hlstra&szlig;e (Nr. 21)
<option value="1423223"> Obertorstra&szlig;e / Kiesstra&szlig;e (Nr.22)
<option value="1424143"> Blumenstra&szlig;e (Nr.23)
<option value="1424843"> Charlottenplatz (Nr.24)
</select>
<input type=submit value="OK">
<br><br>
</form>
<a href="http://127.0.0.1"> Zum Anfang </a>
</font>
</body>
</html>
102
Parkrauminformationssysteme
zugehöriges Perl-Skript
#!/bin/perl
if($ENV{'REQUEST_METHOD'} eq 'GET')
{ $Daten = $ENV{'QUERY_STRING'} }
else {
read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
}
print "Content-type: text/html\n\n";
print "<html><head><title>Ergebnis</title></head>\n";
print "<body bgcolor=#CCFFFF><h1>Einen Mausklick noch bis zum Ergebnis</i></h1>\n";
print "<a href='http://127.0.0.1/ergebnis1.shtml'> Weiter zum Ergebnis\n";
@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder)
{
($name, $value) = split(/=/, $Feld);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$Formular{$name} = $name;
$Formular{$value} = $value;
#print "$Formular{$name} = $Formular{$value}", "<br>\n";
}
print "<br>\n";
print "</a></body></html>\n";
open(FH, ">test.dbf");
print FH "$Formular{$name}\n";
print FH "$Formular{$value}";
close(FH);
103

Similar documents