Hier wird Open Map Eberswalde (abgekürzt OME)
beschrieben,
also die Software, die die
interaktive Radkarte von Eberswalde
betreibt.
Bitte beachten Sie auch die Hinweise und Hilfe
zu diesem
Projekt, und dabei besonders die
rechtlichen Erklärungen.
Die wichtigsten Dateien von OME sind mapewA.php5 (Kartenseite) und
mapewAsend.php (Absendeseite). Diese Dateien enthalten HTML, PHP,
JavaScript und CSS. Es werden die Library OpenLayers und Daten von
OpenStreetMap (insbesondere die "Kacheln" für die Hintergrundkarten)
verwendet. OpenLayers.js ist auf diesem Server, das heißt, auf dem selben
Rechner wie mapewA.php5, mapewAsend.php, ... . Der zusätzliche Code
für die OSM-Daten (OpenStreetMap.js) wird vom OSM-Server geladen.
Die PHP-Dateien, die zu OME gehören, hatten für einige Zeit die Erweiterung
"php5", weil das für das genutzte 1&1-Hosting einfacher war. Jetzt
(ab 21.06.2014) ist das, außer bei mapewA.php5, nicht mehr der Fall.
Um die Verwendung der Erweiterung "php5" auf einem Apache2-Webserver zu
ermöglichen, kann (muss?) man in der Datei
/etc/apache2/mods-available/php5.conf
in der Zeile
<FilesMatch "\.ph(p3?|tml)$">
die Ziffer 3 durch eine 5 ersetzen.
Zu den anderen OME-Dateien siehe unten die Liste unter "Dateien".
Wichtig beim verwendeten PHP
============================
- Es muss PHP Version 5 verwendet werden, wegen der Verwendung von
file_put_contents
in mapewAsend.php. Möglicherweise kommen auch andere PHP5-spezifische
Funktionen in OME-Dateien vor. PHP 4 scheint ja sowieso obsolet zu
sein, also ist das kaum ein Problem.
- magic_quotes_gpc muss off sein.
Gegebenenfalls bitte den Artikel zu Magic Quotes auf php.net lesen.
Character-Encoding
==================
Die Character-Encoding sollte für alle Textdateien UTF-8 sein (auch für
HTML, PHP, CSS, ...).
Änderung von Dateinamen
=======================
Bei Änderung der Dateinamen (zum Beispiel mapew.php statt mapewA.php; oder
Erweiterung php statt php5) müssen natürlich die Links in den jeweils anderen
Dateien (.php*, .html) entsprechend geändert werden (also zum Beispiel der
Link auf mapewA.php5 in der Datei mapewAsend.php). Die entsprechenden Stellen
kann man leicht finden, zum Beispiel mit dem Programm grep.
Die Dateien von OME
===================
Alle relevanten OME-Dateien sind in einem Ordner des Webserver-Dateisystems
(also unterhalb des WWW-Root-Verzeichnisses), oder in Unterordnern dieses
Ordners, zu finden. Dieser Ordner, der gewissermaßen der Ausgangspunkt der
OME - Software im Dateisystem des Servers ist, wird hier "OME-Root-Ordner"
genannt.
Die Software kann einen oder mehrere "Inhalte" verwalten. Jeder Inhalt hat
ein eigenes Unterverzeichnis im Root-Ordner, dieser Unterordner wird auch
[datendir] genannt. Der Name des Unterordners [datendir] identifiziert den
Inhalt und ist damit gewissermaßen der Kurzname des Inhalts.
Jeder Inhalt hat ein oder mehrere Themen (auch Kategorien oder subjects
genannt). Für die mit Geometrien verbundenen Daten jedes Themas gibt es
eine Datei in dem entsprechenden [datendir]. Für die Hinweise ohne
Geometrien (nur Text) gibt es für jeden Inhalt eine Datei im
entsprechenden [datendir].
Für jeden Inhalt gibt es eine Protokolldatei (logfile). Alle diese
Protokolldateien befinden sich in demselben Protokoll-Ordner ([logdir]).
Im Namen jeder Protokolldatei ist der Name des entsprechenden Inhalts
enthalten.
Im OME-Root-Ordner (direkt, nicht in Unterordnern) befinden sich:
software.html Diese Datei (Informationen zur Software für
Open Map Eberswalde)
mapewA.php5 Die "Kartenseite", zum Anzeigen und zum
Erstellen von Kartenbojekten
mapewAsend.php Die "Absendeseite", verwaltet Zusatzdaten,
schickt Daten an Server
fc.php erzeugt jeweils ein FeaturSet im Sinne von
GeoJSON aus jeweils einer Dateie mit mehreren
einzelnen Features; wird von mapewA.php5
für jedes Thema aufgerufen.
textonly.php Seite und PHP-Skript zum Anzeigen von Beiträgen,
die keinen Kartenbezug haben (also ohne Features
sind); wird von mapewA.php5 aufgerufen.
onekey.php PHP-Skript zum Erzeugen einer SVG-Datei mit der
Legende (map key) für ein Thema. Dieses Skript
verwendet [datendir]/categories.inc als Input.
Es wird von mapewA.php5 aufgerufen.
helpgeojson.html Informationen zum GeoJSON-Format
hinweise.html Hilfe und Hinweise zur Nutzung dieser Software
OpenLayers.js Datei mit dem hauptsächlichen JavaScript-Code von
OpenLayers; von openlayers.org. Zum OpenLayers-
System gehören noch Dateien in Unterordnern,
diese Unterordner und Dateien entstehen beim
Installieren von Openlayers.
style.css Style-Definitionen (CSS), diese werden von
OpenLayers gebraucht (wird beim Installieren
von OpenLayers erzeugt)
css0.css Einige Style-Definitionen
Weitere Styles sind in theme/default/*
php.ini Eine Datei "php.ini" mit der einen Zeile
magic_quotes_gpc=Off
scheint für die erforderliche Einstellung zu
magic_quotes_gpc zu sorgen.
.htaccess (kann vorhanden sein)
Konfigurationsdaten, die der Web-Server
berücksichtigt, wenn er auf Daten in diesem
Directory zugreift; .htaccess kann die Zeile
php_flag magic_quotes_gpc Off
enthalten.
in ./img
Images, die von OpenLayers verwendet werden (im Download von
openlayers.org enthalten, wird beim Installieren von OpenLayers
erzeugt).
in ./theme/default
css und images (und anderes ?), die von OpenLayers verwendet
werden. Die Bilder und die css sind wichtig, sonst funktioniert
die Karte nicht richtig. Alles in diesem Directory ist von
openlayers.org, es entsteht beim Installieren von OpenLayers.
in ./[datendir] $datendir ist eine PHP-Variable und datendir
eine JavaScript-Variable. Beide enthalten den
Namen des Subdirectorys mit den Daten des
aktuellen Inhalts. Zum Beispiel enthält das
Subdirectory "rade" den Inhalt "Radfahren in
Eberswalde". Daher ist "rade" gewissermaßen
der Kurzname von "Radfahren in Eberswalde".
[datendir]info.html Also zum Beispiel "radeinfo.html"; enthält
spezielle Informationen zum Inhalt "datendir"
(optional).
categories.inc PHP-Include-Datei mit den Themen und einigen
Konfigurationsdaten zur Anzeige der Themen.
Die Themen erscheinen auf der Karte als Overlays
im Sinne von OpenLayers.
*.json Dateien mit den Features für je eine Kategorie
(ein Thema) in einem Inhalt. Die Kategorien
werden als je ein Overlay angezeigt. Die Daten
sind nicht direkt als GeoJSON nutzbar, sie
werden mit fc.php vorbereitet (zu einer
FeatureCollection gemacht).
fgid.inc PHP-Code mit einer Zahl, zur Erzeugung von
zufälligen, aber eindeutigen fgid-Werten (Feature
group id); wird nach jeder Verwendung neu
geschrieben. Die fgid identifizieren eindeutig
die Gruppen von Features, die bei jeweils einem
"Absenden" von Nutzerbeiträgen entstehen.
Jeder Inhalt hat eigene fgid-Werte.
textonly Enthält Nutzerbeiträge, die keinen Kartenbezug
haben (also ohne Features sind).
in ./[logdir] $logdir ist eine PHP-Variable, die den Namen des
log-Directorys für OME enthält. Für alle Inhalte,
also alle datendir, gilt dasselbe log-Directory,
aber jeder Inhalt hat seine eigene log-Datei.
[datendir]log datendir-Logdatei. Speichert alle von Nutzern
übermittelten Daten, sowie Datum und Uhrzeit
der Einträge. Wenn E-Mail beziehungsweise
Nutzername nicht angegeben ist, wird die IP-
gespeichert.
[datendir]log ist eine einfache Textdatei.
Für jeden Nutzerbeitrag werden gespeichert:
DatumZeit: Zeit in UTC
geometrie: Geometrie als GeoJSON; falls
vorhanden
problemtext: Beschreibung des Sachverhalts
subject: Thema (Kategorie)
short: Kurzbeschreibung (Überschrift)
fgid: Feature Group ID, ID für Eintrag
email: E-Mail-Adresse oder Name (falls
angegeben; sonst "null")
remoteaddress: IP-Adresse des/der Nutzer(s)(in);
wird gespeichert, wenn email leer ist,
sonst wird "null" gespeichert.
[datendir]log1, Alte Log-Dateien. Diese werden nicht automatisch
[datendir]log2, ... erzeugt, sondern durch manuelle Umbenennung.
Aus dem Internet
http://www.openstreetmap.org/openlayers/OpenStreetMap.js
Diese kleine Datei enthält JavaScript-Code für
die Verarbeitung der OpenStreetMap-Daten Kacheln
(Tiles) durch OpenLayers.
[tiles] Kacheln (Tiles) für den Hintergrund; von
OpenStreetMap. Diese werden automatisch von
OpenLayers.js oder OpenStreetMap.js geladen.
Die Tiles sind Rasterbilder, 256 x 256 Pixel
groß. Sie haben URLs der Art
http://b.tile.openstreetmap.org/15/17639/10699.png
Probleme:
========
Den Hinweis auf das Meta-Tag http-equiv="X-UA- ..." am Anfang der PHP-Dateien
mapewA.php5 und mapewAsend.php habe ich von Stack Overflow:
http://stackoverflow.com/questions/20540084/how-to-set-document-mode-to-edge-in-ie11-win8-1
Ohne dieses Tag verwendet der IE manchmal den document mode 7 (entspricht etwa
IE Version 7) und hat dann unter anderem sehr, sehr eingeschränkte
JavaScript-Fähigkeiten.
Auf Stack Overflow fand ich den Hinweis, dass der IE einen alten document
mode nimmt (nehmen kann?), wenn Server und Browser in demselben lokalen Netz
sind. Systematisch untersucht habe ich das nicht.
Das "X-UA-..." Meta-Tag muss offenbar nahe am Anfang der Datei sein; es
könnte sonst sein, dass der IE sich schon für den IE 7 mode entschieden hat,
wenn er das Tag sieht, und dann kann er nicht mehr umschalten. Es sollte das
erste Tag im <head> sein (?).
Dieses Meta-Tag, also http-equiv="X-UA-Compatible" ... wird von
validator.w3.org als Fehler in HTML5 angesehen. Dieser w3-Validator gilt
zwar zur Zeit (Juni 2014) als "experimental". Der
"http-equiv="X-UA-Compatible"-Tag ist aber vielleich wirklich kein
Bestandteil von HTML5?
Das Tag zum Einstellen von UTF-8:
" ... meta http-equiv="Content-Type" content="text/html; charset=utf-8" ... "
soll auch unter den ersten 1024 bytes des Dokuments sein. Siehe
http://www.w3.org/TR/html5/document-metadata.html
Letzte Aktualisierung: 04.07.2014; für Software-Version 0.48