OpenSeaMap-dev:Hafen-DB

Aus OpenSeaMap-dev
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Grundlagen

Die Idee ist es Einträge neuer Häfen des SkipperGuide direkt in OpenSeaMap/JOSM vorzunehmen und dazu eine Extension im SkipperGuide zu implementieren, die OpenSeaMap/JOSM aufruft und später die Ergebnisse direkt in die SkipperGuide-Seite einfügt.

Mögliche Richtungen der Synchronisation

  • SkipperGuide>OpenSeaMap: OpenSeaMap holt bei SkipperGuide die aktuellen Marina-Koordinaten und synchronisiert diese mit der DB
  • OpenSeaMap->SkipperGuide: Änderungen aus OpenSeaMap werden an SkipperGuide gesendet.

Aktuelle Situation

Die Häfen werden im SkipperGuide eingetragen und über ein Import-Skript in die OpenSeaMap-Hafen-Datenbank importiert:

                  [Karte Häfen-POI-Layer]
                           |
                    [Hafen-DatenBank]---
                           |           |
                     [OSeaM-Import]  [WPI]
                           |
                         <XML>
                           |
[SG Mediawiki]       [OSeaM-Export]
        |                  |
[SkipperGuide Mediawiki-Datenbank]

Aktuelle OSM Einbindung von OpenSeaMap

         -------------PC---------
         |            |         |
     [Browser]     [JOSM] [Export-Batches]
         |            |         |
   [Online-Editor]    |         |
         |            |         |
         ------[OSM-Datenbank]---

Workflow

  • OpenSeaMap->SkipperGuide:
  1. Karte im Edit-Modus laden
  2. Hafen-Position per Klick in Karte eintragen
  3. Hafendaten in Hafen-Editor eintragen
  4. Daten in Hafen-DB speichern
  5. automatisch SG-Wiki-Seite erzeugen und dort eine Infobox (Template) mit den neuen Daten aus der Hafen-DB füllen (zu klären!)
  6. SG-Wiki-Seite öffnen zum Editieren (Hafenbeschreibung, Bilder, etc) Wenn Daten der Infobox editiert werden sollen, dann erfolgt das über die Karte mit dem Hafen-Editor direkt in die Hafen-DB.
  7. per Klick auf die Infobox im SG-Wiki kommt man (wie bisher per Klick auf die Koordinate) auf die Karte zur Hafenposition. Dort können die Daten editiert werden. Sie werden dierekt in die Hafen-DB geschrieben. Aus der Hafen-DB werden sie dann wieder automatisch in die Infobox im SG-Wiki geschrieben.

Mögliches Vorgehen

  • SkipperGuide->OpenSeaMap
    • Der bestehende Import in OpenSeaMap sollte automatisiert werden.
    • wenn es aus universitären Gründen erforderlich ist, diese Schnittstelle Online-Fähig zu machen, könnte man eine solche Online-Schnittstelle bauen. Der Aufruf sollte dann aber nicht durch SG-Mediawiki Direkt, sondern über einen Zwischenlayer erfolgen, welcher ein DIFF über die XML-Exportdatei macht und jede Änderung in einen Online-Call wandelt.
  • OpenSeaMap->SkipperGuide
    • Änderungen am SkipperGuide-relevanten Datenbestand in OpenSeaMap müssen in irgendeiner Form erkannt werden.
    • eine Änderungsschnittstelle muss in SkipperGuide implementiert werden. Diese Schnittstelle muss Änderungen aus OpenSeaMap entgegen nehmen und als Mediawiki-BOT die Daten im !Content! von SkipperGuide modifizieren.

Quellcode

Serverseitige Skripte

Source SVN: http://openseamap.svn.sourceforge.net/viewvc/openseamap/database/harbour/

Dieser Ordner enthält alle für die Kommunikation SkipperGuide<->OpenSeaMap benötigten Skripte.

OnlineEditor

Source SVN: http://openseamap.svn.sourceforge.net/viewvc/openseamap/website/

Am einfachsten ist es den kompletten "website" Ordner in ein vom Webserver aus zugängliches Verzeichnis auszuchecken. Der Online-Editor befindet sich unter http://127.0.0.1/[SVN-Verzeichnis]/map/map_edit.php . Von dort aus wird ein weiterer Dialog aufgerufen (wird von mir noch bearbeitet), der seine Ergebnisse zurück an die function editHarbourOk in Zeile 388 liefert. Von hier aus sollte entweder direkt in die DB geschrieben werden oder eine noch zu erstellende function aufgerufen werden, die dieses handhabt.

Eventuelle Probleme

  • der SkipperGuide-Server befindet sich schon teilweise an seiner Last-Grenze, insbesondere kann die Latenzzeit für die Kommunikation mit OpenSeaMap zu Problemen führen, so dass schlechtesten falls die Datenstände der Systeme auseinander laufen.