Open Map Eberswalde

Kurze Dokumentation zur Software

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