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ä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üd (Nr. 2) </a><br> <a href="stadthalle.shtml"> Stadthalle (Nr. 3) </a><br> <a href="ebersh.shtml"> Ebershaldenstraße / Hauffstraße (Nr. 4) </a><br> <a href="ottilien.shtml"> Ottilienplatz (Nr. 5)</a><br> <a href="zwinger.shtml"> Zwingerstraße (Nr. 6) </a><br> <a href="ritter.shtml"> Ritterstraße (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ße / Am Kronenhof (Nr. 10) </a><br> <a href="bahnschelz.shtml"> Bahnhofstraß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ße (Nr. 15) </a><br> <a href="bahnmart.shtml"> Martinstraße / Bahnhofstraße (Nr. 16) </a><br> <a href="kanalmart.shtml"> Martinstraße / Kanalstraße (Nr. 17) </a><br> <a href="schelz.shtml"> Schelztorstraße (Nr. 18) </a><br> <a href="fabrik.shtml"> Fabrikstraße (Nr. 19)</a><br> <a href="vogel.shtml"> Vogelsangbrücke (Nr. 20) </a><br> <a href="obermuhl.shtml"> Obertorstraße / Mühlstraße (Nr. 21) </a><br> <a href="oberkies.shtml"> Obertorstraße / Kiesstraße (Nr.22) </a><br> <a href="blumen.shtml"> Blumenstraß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ä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ätze Bahnhofstraß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ü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ä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üd (Nr. 2) <option value="1114113"> Stadthalle (Nr. 3) <option value="1114133"> Ebershaldenstraße / Hauffstraße (Nr. 4) <option value="1115213"> Ottilienplatz (Nr. 5) <option value="1115333"> Zwingerstraße (Nr. 6) <option value="1117332"> Ritterstraße (Nr. 7) <option value="1121212"> Kesselwasen (Nr. 8) <option value="1122231"> Oberer Metzgerbach (Nr. 9) <option value="1123241"> Bahnhofstraße / Am Kronenhof (Nr. 10) <option value="1124441"> Bahnhofstraß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ße (Nr. 15) <option value="1124411"> Martinstraße / Bahnhofstraße (Nr. 16) <option value="1221334"> Martinstraße / Kanalstraße (Nr. 17) 77 Parkrauminformationssysteme <option value="1222114"> Schelztorstraße (Nr. 18) <option value="1421611"> Fabrikstraße (Nr. 19) <option value="1421621"> Vogelsangbrücke (Nr. 20) <option value="1422733"> Obertorstraße / Mühlstraße (Nr. 21) <option value="1423223"> Obertorstraße / Kiesstraße (Nr.22) <option value="1424143"> Blumenstraß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ä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üd (Nr. 2) </a><br> <a href="stadthalle.shtml"> Stadthalle (Nr. 3) </a><br> <a href="ebersh.shtml"> Ebershaldenstraße / Hauffstraße (Nr. 4) </a><br> <a href="ottilien.shtml"> Ottilienplatz (Nr. 5)</a><br> <a href="zwinger.shtml"> Zwingerstraße (Nr. 6) </a><br> <a href="ritter.shtml"> Ritterstraße (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ße / Am Kronenhof (Nr. 10) </a><br> <a href="bahnschelz.shtml"> Bahnhofstraß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ße (Nr. 15) </a><br> <a href="bahnmart.shtml"> Martinstraße / Bahnhofstraße (Nr. 16) </a><br> <a href="kanalmart.shtml"> Martinstraße / Kanalstraße (Nr. 17) </a><br> <a href="schelz.shtml"> Schelztorstraße (Nr. 18) </a><br> <a href="fabrik.shtml"> Fabrikstraße (Nr. 19)</a><br> <a href="vogel.shtml"> Vogelsangbrücke (Nr. 20) </a><br> 97 Parkrauminformationssysteme <a href="obermuhl.shtml"> Obertorstraße / Mühlstraße (Nr. 21) </a><br> <a href="oberkies.shtml"> Obertorstraße / Kiesstraße (Nr.22) </a><br> <a href="blumen.shtml"> Blumenstraß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ä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ätze Bahnhofstraß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ä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üd (Nr. 2) <option value="1114113"> Stadthalle (Nr. 3) <option value="1114133"> Ebershaldenstraße / Hauffstraße (Nr. 4) <option value="1115213"> Ottilienplatz (Nr. 5) <option value="1115333"> Zwingerstraße (Nr. 6) <option value="1117332"> Ritterstraße (Nr. 7) <option value="1121212"> Kesselwasen (Nr. 8) <option value="1122231"> Oberer Metzgerbach (Nr. 9) <option value="1123241"> Bahnhofstraße / Am Kronenhof (Nr. 10) <option value="1124441"> Bahnhofstraß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ße (Nr. 15) <option value="1124411"> Martinstraße / Bahnhofstraße (Nr. 16) 101 Parkrauminformationssysteme <option value="1221334"> Martinstraße / Kanalstraße (Nr. 17) <option value="1222114"> Schelztorstraße (Nr. 18) <option value="1421611"> Fabrikstraße (Nr. 19) <option value="1421621"> Vogelsangbrücke (Nr. 20) <option value="1422733"> Obertorstraße / Mühlstraße (Nr. 21) <option value="1423223"> Obertorstraße / Kiesstraße (Nr.22) <option value="1424143"> Blumenstraß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