Fakultät Informatik/Mathematik Internettechnologien für Geoinformatik/Management Prof. Dr.-Ing. habil. P. Sobe
6. Praktikum –Serverseitige Skript-Verarbeitung mit PHP
In diesem Praktikum sollen Webinhalte durch ein PHP-Skript erzeugt werden.
Ausgangspunkt ist eine Weltkarte und eine überlagerte SVG-Grafik, die positionsbezogene Daten bereitstellt. Die SVG-Grafik soll serverseitig und dynamisch durch das PHP-Skript erzeugt werden.
Laden Sie sich dazu die Dateien flightinfo.txt und worldmap_85deg.jpg herunter!
Nennen Sie die flightinfo.txt -Datei in eine PHP-Datei um und installieren Sie diese Datei zusammen mit der Bilddatei (worldmap_85deg.jpg) im Dokumentpfad eines Webservers!
Die Weltkarte ist eine Mercator-Projektion, die bis zum 85. Breitengrad geführt wird.
Die Grafik hat eine Ausdehnung von 2400x2400 Pixeln und den Mittelpunkt an der Position x=1200px, y=1200px. Der Mittelpunkt entspricht dem Schnittpunkt von Äquator und Nullmeridian. Ausgehend von Positionen die mit ihrer geografischen Breite und Länge in Dezimalgrad gegeben werden, sollen Markierungen in die Karte eingetragen werden.
Teilaufgaben:
a) Der Start- und Zielpunkt eines Flugs (Berlin Tegel und New York JFK) werden in der Karte bislang an vorab berechneten Kartenpositionen eingetragen!
Berechnen Sie diese Kartenpositionen aus der geografischen Position der Flughäfen innerhalb der PHP-Webseite und tragen Sie den Start und Zielpunkt entsprechend der berechneten Positionen ein! Die Umrechnung ist in Umrechnung_koord.pdf beschrieben.
Berlin Tegel, TXL: 52° 33‘ 34.87‘‘ Nord, 13° 17‘ 15.76‘‘ Ost (52.559686°, 13.287711°) New York, JFK: 40° 38‘ 23.10‘‘ Nord, 73° 46‘ 44.13‘‘ West (40.63975°, -73.778925°)
Kontrollieren Sie, ob sich die richtigen Pixelpositionen 1289, 785 für Berlin Tegel und 708, 902 für New York JFK ergeben!
b) Gestalten Sie Ihr Programm so, dass die Berechnung der Pixelposition aus den Koordinaten in einer PHP-Funktion vorgenommen wird!
c) Variieren Sie 100 Positionen zwischen Berlin Tegel und New York JFK, z.B.
durch gleichmäßige lineare Annäherung der geografischen Breite und Länge an die Zielposition! Diese Positionen sollen eine Flugroute darstellen und in die Karte eingetragen werden (Hinweis: Die kürzeste Flugroute müsste man entlang eines Großkreises führen, was hier nicht gefordert ist.)
Fortsetzung folgt umseitig …
Fakultät Informatik/Mathematik Internettechnologien für Geoinformatik/Management Prof. Dr.-Ing. habil. P. Sobe
d) Lesen Sie die Datei flights.txt durch das PHP-Skript ein! Die Datei finden Sie zusammen mit der Aufgabenstellung auf der Webseite zur Lehrveranstaltung.
Platzieren Sie die Datei im Publikationsverzeichnis Ihres Webservers!
Die Datei enthält je Zeile sechs verschiedene Angaben:
Startort geogr. Länge des Startorts geogr. Breite des Startorts Zielort geogr. Länge des Zielorts geogr. Breite des Zielorts
Für jede Flugroute (d.h. für jede Zeile) soll die Position des Starts und des Ziels, sowie die Flugroute in die Webseite eingetragen werden.
Zum Einlesen der Daten und der Zuweisung auf die einzelnen PHP-Variablen können Sie sich an dem folgenden Skriptfragment orientieren:
$handle = fopen("flights.txt","r");
…
if ( $flugdaten = fscanf($handle,"%s %f %f %s %f %f\n") ) {
list($name_start,$gln_start,$gbr_start,$name_ziel,$gln_ziel,$gbr_ziel)=
$flugdaten;
// Koordinatentransformation und Zeichnen }
fclose($handle);
e) Erstellen Sie eine Formular-Webseite, die eine Datei im Format der vorgegebenen flights.txt durch Inhalte aus den Formulareingabefeldern erzeugt!
Nach Eingabe von Start und Ziel mit deren geografischen Koordinaten soll in Ihrer Datei jeweils eine Zeile angehangen werden.
Zum Schreiben in eine Datei wird Ihnen das folgende Skriptfragment bereitgestellt:
…
fwrite($handle, $startort);
fwrite($handle, " ");
fwrite($handle, $gln_startort);
fwrite($handle, " ");
…
f) Lesen Sie in Ihrer PHP-Webanwendung nun die durch die Formulareingabe erzeugte Datei ein! Es sollten alle enthalten Zeilen durch eine grafische Anzeige (analog zur Ausgangsstecke Berlin – New York) repräsentiert werden.
Später wollen wir die Flugdaten dann auch aus einer Datenbank lesen. In den folgenden Praktika wird eine Nutzerinteraktion durch die Kombination von JavaScript, AJAX, PHP und Datenbankzugriff ermöglicht.