Openseamap/DE:Seamap-Editor

From OpenStreetMap Wiki
Jump to: navigation, search
Seamap-Editor.jpg

Die Objekteigenschaften auf der Seekarte werden konform zur IHO-S-57 beschrieben. Dadurch ergibt sich für die Datenbank ein ziemlich kompliziertes Attribute-Schema, das selbst erfahrene Seeleute nicht kennen und nicht verstehen. Damit die Benutzer sich nicht damit auseinandersetzen müssen, trennen wir strikt in ein Frontend und ein Backend.

Geplant sind ein Online-Editor und ein Offline-Editor:

  • Seamap-Editor, direkt auf der Karte (online) [1]
  • JOSM-Editor "sea and coast", JOSM-Plugin für Seamap (offline)

Ein komfortabler Editor (GUI-Frontend) soll den Benutzer bei der Datenerfassung unterstützen. Übersichtliche Eingabemasken, eine intelligente Benutzerführung und integrierte Eingabeprüfung sollen die Datenerfassung simpel machen und schon bei der Eingabe für möglichst valide Daten sorgen.

Die erfassten Daten (Backend) werden automatisch in das Format S-57 überführt. Diese werden im XML-Format in die OSM-Datenbank gespeichert.

JOSM-Editor

Der JOSM-Editor ist als Plugin gestaltet. Ergänzend zu den JOSM-Vorlagen ermöglicht es komplexe regelbasierte Eingaben und Eingabeprüfungen.

Exemplarisch wird das Editor-Konzept am Beispiel "sea and coast" umgesetzt. Die dabei erzielten Ergebnisse und gemachten Erfahrungen können natürlich auch für JOSM als Ganzes genutzt und auf weitere Anwendungen übertragen werden.

Siehe auch Ticket 2327

Aufbau

Plugin (Grundgerüst)
Tags von JOSM-Objekten holen
Eingabemaske anzeigen
Eingaben entgegennehmen
Eingabeprüfung
alles zusammenführen und nach Regeln ergänzen und wieder in JOSM laden

Ideen zum Grundgerüst, Ideen zur JOSM-Schnittstelle, Mailingliste für Entwicklerfragen zu JOSM

Aufgaben

1. Aufrufbar über einen Menü-Eintrag, beispielsweise als Eintrag „Seezeichen“ in den Vorlagen.
2. Liste von Seezeichen als Icon. Der Benutzer soll mit dem Icon ein Objekt wählen.
3. Je nach gewähltem Objekt öffnet eine Eingabemaske, die nur objektrelevante Einträge zulässt

Eingabemöglichkeiten sind: Icons, CheckBox, Radiobuttons, Listenfeld, Zahlen, Text
sowie eingabespezifisch weitere Icons und Felder zur verzweigten Auswahl.
Nur objektkonforme Einträge werden angeboten/zugelassen.

4. Alle Eingaben werden nach Regeln geprüft (Wertebereich, etc)

Fehler verlangen Korrektur
Freitext nur in den Feldern „Name“ und „Bemerkung“

5. Die Daten werden je nach Objekt nach Regeln automatisch mit weiteren Daten ergänzt:

a) durch spezifische Verzweigungen und weitere manuelle Eingaben
b) beim Hochladen automatisch zu einem S-57-konformen Datensatz

6. Der komplette Datensatz wird in die DB hochgeladen

Weitere Ideen:
7. Für alle Eingabefelder gibt es eine kontextsensitive Mouseover-Hilfe,

und generelle Links zu den passenden Wiki-Seiten,
damit auch Nicht-Seeleute damit umgehen können.

8. Regeln werden aus einer Regel-DB entnommen.
9. Begriffe, Hilfetexte, Übersetzungen der Begriffe und Hilfetexte

werden aus einer Übersetzungs-DB entnommen.

Masken-Elemente

Alle Eingabeelemente können mit einem Standardwert vorbelegt sein. Dieser kann auch "unbekannt" lauten.

Icon
Lateral Green Conical Lighted.svg
Wo immer möglich werden intuitiv-eindeutige Icons verwendet.
Beispielsweise zur Auswahl der Seezeichen (Tonnen, Baken, etc.)
Sie können auch der Steuerung des Editors dienen.
Listenfeld
Listenfelder enthalten eine festgelegte Werteliste.
Die Werte werden immer in Landessprache angezeigt.
Damit sie sprachübergreifend eindeutig sind, werden die Übersetzungen aus einer zentralen DB entnommen.
Um Klicks zu sparen, ist die Liste erst ausgeklappt, nach Auswahl eines Wertes klappt sie zu einer Dropdown-Liste zusammen und lässt sich wie eine solche wieder öffnen.
Checkbox
Mehrere Checkboxen können zu einer Gruppe zusammengefasst werden.
0..n Checkboxen können in einer Gruppe ausgewählt sein.
Sie können auch der Steuerung des Editors dienen.
Gruppe von Radiobuttons
Mehrere Radiobuttons sind zu einer Gruppe zusammengefasst.
Nur einer aus der Gruppe kann ausgewählt sein.
Textfeld
Textfelder können in der Zeichenzahl begrenzt werden.
Über Masken kann die Eingabe zusätzlich eingeschränkt werden.
Fliesskommazahl
Fliesskommazahlen werden mit einem Wertebereich begrenzt.
Über Masken kann die Eingabe zusätzlich eingeschränkt werden.
Als Komma ist auch der Punkt zugelassen.
Notizfeld
Zu jedem Objekt gibt es ein Notizfeld für detaillierte Bemerkungen.
Darin sind mindestens Zeilenumbrüche möglich.
Schlüssel
Schlüssel werden aus der S-57 entnommen.
In OSM werden sie hierarchisch gebildet, beginnend mit "seamap", getrennt durch Doppelpunkt ":"
Array's werden hilfsweise hierarchisch mit einer im Schlüssel enthaltenen Indexzahl abgebildet.
Werte, Wertelisten
Werte werden immer in Landessprache angezeigt.
Damit sie sprachübergreifend eindeutig sind, werden die Übersetzungen aus einer zentralen DB entnommen.
Bezeichner
Bezeichner und Überschriften werden immer in Landessprache angezeigt.
Damit sie sprachübergreifend eindeutig sind, werden die Übersetzungen aus einer zentralen DB entnommen.
MouseOver
Zu jedem Element der Eingabemaske existiert ein Hilfetext, der bei MouseOver angezeigt wird.
Hilfetexte werden immer in Landessprache angezeigt.
Damit sie sprachübergreifend eindeutig sind, werden die Übersetzungen aus einer zentralen DB entnommen.

Eingabeprüfung

Um den Benutzer bestmöglich zu unterstützen und um logische Fehler und Tippfehler zu vermeiden, werden die Eingaben unmittelbar einer Prüfung unterzogen.

Regeln
Damit die Regeln eindeutig sind, werden sie aus einer zentralen DB entnommen.
Hinweistexte
Hinweistexte werden immer in Landessprache angezeigt.
Damit sie sprachübergreifend eindeutig sind, werden die Übersetzungen aus einer zentralen DB entnommen.

Beispiel zu „erklärende Grafik“

Übersicht

Die vier Kardinaltonnen sind rund um eine Untiefe gruppiert.
Jede Tonne ist klickbar und verzweigt zum entsprechenden Child-Eingabeformular.
Klickbar ist grossräumig der jeweilige Quadrant als Fläche.

Seezeichen

Jedes Seezeichen wird aus den Elementen Tonnenkörper, Topzeichen, Lichtkegel zusammengesetzt. Entsprechend der Auswahl in den Auswahlfeldern wird das Ergebnis gleich grafisch in der Eingabemaske dargestellt:

Eingabemasken

In Vorlage

Deutsch:  „Seezeichen“
				(öffnet das Plugin)
Englisch: „Seamark“

Darunter und darüber ein Trennstrich.

Bei Auswahl eines Seezeichens

Wenn der Cursor im Auswahl-Modus auf ein Seezeichen (seamark=...) gesetzt wird, öffnet automatisch das Plugin, liest die Attribute aus und zeigt diese in der passenden Maske und im Änderungsmodus an.

Übersicht Seezeichen

Übersicht

Dies ist die Eltern-Maske aller Seezeichen. Hier werden die Seezeichen in Gruppen zur Auswahl angeboten. Besonders häufige Seezeichen werden bereits auf dieser Ebene als Icon angeboten. Dabei werden die Icons erklärend in einer Grafik gezeigt.

In einer ersten Ausbaustufe sind dies:

Untiefentonne
   Untiefentonne Nord
   Untiefentonne Ost
   Untiefentonne Süd
   Untiefentonne West
Einzelgefahr
Fahrwassertonne
   Fahrwassertonne grün	
   Fahrwassertonne rot
Ansteuertonne
Weitere Fahrwassertonnen
Sonderzeichen
Leuchtfeuer

Vorerst reicht eine klickbare Liste mit „Icon und Bezeichnung“.

Beispiel zu „erklärende Grafik“
CardinalMarks.png
Die vier Kardinaltonnen sind rund um eine Untiefe gruppiert.
Jede Tonne ist klickbar und verzweigt zum entsprechenden Child-Eingabeformular.
Klickbar ist grossräumig der jeweilige Quadrant als Fläche.
Mouseover-Hilfe für
Weitere Fahrwassertonnen
Sonderzeichen
Kardinalzeichen

Je nach Auswahl in der Eltern-Maske „Übersicht Seezeichen“ wird angezeigt:

Beispiel f. Untiefe Nord
Bei „Untiefentonne Nord“
Cardinal Pillar North.svg
Erklärende Grafik, Untiefentonne Nord hervorgehoben
Checkbox „befeuert“ (ja | nein)
Ok | Zurück
Bei „Untiefentonne Ost“
Erklärende Grafik, Untiefentonne Ost hervorgehoben
Checkbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück
Bei „Untiefentonne Süd“
Cardinal Pillar South.svg
Erklärende Grafik, Untiefentonne Süd hervorgehoben
Checkbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück
Bei „Untiefentonne West“
Cardinal Pillar West.svg
Erklärende Grafik, Untiefentonne West hervorgehoben
Checkbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück
Bei „Einzelgefahrentonne“
Cardinal Pillar Single.svg
Erklärende Grafik, Einzelgefahrentonne
Checkbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück

Vorerst reicht anstelle der Grafik ein Icon plus die Bezeichnung „Untiefentonne XXX“.
bzw. Icon plus „Einzelgefahrentonne“.

Automatische Erweiterung des Formulars
Bei „Checkbox befeuert=ja:
die zugehörige Kennung wird angezeigt,
und (ausser bei der Einzelgefahr) die Wiederkehr erfragt (Radiobutton).
Wiederkehr=(Schnelles Funkellicht (SFkl) | Funkellicht (Fkl), Standard: Fkl)
Bei „Checkbox befeuert=ja plus Untiefentonne Nord“:
Anzeigefeld „Kennung“: Fkl ; Bild der Kennung
Bei „Checkbox befeuert=ja plus Untiefentonne West“:
Anzeigefeld „Kennung“: Fkl (3) ; Bild der Kennung
Bei „Checkbox befeuert=ja plus Untiefentonne Süd“:
Anzeigefeld „Kennung“: Fkl (6) + Blk ; Bild der Kennung
Bei „Checkbox befeuert=ja plus Untiefentonne Nord“:
Anzeigefeld „Kennung“: Fkl (9) ; Bild der Kennung
Bei „Checkbox befeuert=ja plus Einzelgefahrenstelle“:
Anzeigefeld „Kennung“: Blz (2) ; Bild der Kennung

Lateralzeichen

IALA-System A/B
Wird automatisch anhand der Koordinaten bestimmt.
Vorerst reicht anstelle der Automatik die Auswahl per Radiobutton:
Radiobutton „IALA“ (A | B, Standard: A)

Je nach Auswahl in der Eltern-Maske „Übersicht Seezeichen“ wird angezeigt:

Beispiel: Lateralltonne backbord, IALA-A
Bei „Fahrwassertonne grün“
Erklärende Grafik, je nach IALA A/B entsprechende Tonne hervorgehoben
Dropdown „Tonnenform“ (laut S-57, Standard: unbekannt)
Checkbox „Radarreflektor“ (ja | nein, Standard: nein)
SteuerCheckbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück
Bei „Fahrwassertonne rot“
Erklärende Grafik, je nach IALA A/B entsprechende Tonne hervorgehoben
Dropdown „Tonnenform“ (laut S-57, Standard: unbekannt)
Checkbox „Radarreflektor“ (ja | nein, Standard: nein)
SteuerCheckbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück
Bei „Ansteuerungstonne“
Erklärende Grafik, Ansteuerungstonne hervorgehoben
Dropdown „Tonnenform“ (laut S-57, Standard: unbekannt)
Droptown „Heultonne“ (unbekannt | nein | Horn | Glocke | Morse, Standard: unbekannt)
wenn "Morse": Eingabefeld "Buchstabe" (A..Z)
Checkbox „Radarreflektor“ (ja | nein, Standard: nein)
Checkbox „RACON“ (ja | nein, Standard: nein)
SteuerCheckbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück
Bei „Abzweigungstonne backbord“
Erklärende Grafik, je nach IALA A/B entsprechende Tonne hervorgehoben, backbord/steuerbord
Checkbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück
Bei „Abzweigungstonne steuerbord“
Erklärende Grafik, je nach IALA A/B entsprechende Tonne hervorgehoben, backbord/steuerbord
Checkbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück

Vorerst reicht anstelle der Grafik die Bezeichnung „Icon plus XX-Tonne XXX“.

Mouseover-Hilfe für
Tonnenform
IALA
Bei „Checkbox befeuert=ja“
wird das Formular „Befeuerung“ als Kind neben dem Elternformular geöffnet.

Sonderzeichen

Tonne Sonderzeichen
Erklärende Grafik
Dropdown „Tonnenform“ (laut S-57, Standard: unbekannt)
Ausgabefeld „Tonnenfarbe“ (gelb)
Dropdown „Topzeichen“ (laut S-57, Standard: unbekannt)
wenn Toppzeichen != ohne oder != unbekannt: Dropdown „Topzeichenfarbe“ (gelb|rot, Sandard: unbekannt)
Checkbox „Radarreflektor“ (ja | nein, Standard: nein)
SteuerCheckbox „befeuert“ (ja | nein, Standard: nein)
Ok | Zurück
Bei „Checkbox befeuert=ja“
Feuer auf Tonnen
wird das Formular „Befeuerung“ als Kind neben dem Elternformular geöffnet.


Leuchtturm / Leuchtbake

Leuchtturm (Feuerträger)

Leuchtfeuer bestehen aus dem physischen Feuerträger, plus dem Feuer mit Kennung.
In der Maske „Leuchtfeuer“ wird en Leuchtturm als Feuerträger erfasst.

Textfeld „Name“ (landesspezifische Bezeichnung)
Textfeld „Name (englisch)“ (englische Bezeichnung)
Feld „Internationale Leuchtfeuer-Nr“ (X-#####, Standard: leer)
Feld „LAT“ (##,######); Feld „N/S“ (N | S, Standard: leer)
Feld „LON“ (###,######); Feld „E/W ( E | W, Standard: leer)
Enthält die genaue Koordinate, als Sicherung gegen ungewolltes Verschieben.
wenn „Lat|LON“: Dropin „Koordinatensystem“ (WGS-84 | … | … | … , Standard: „bitte wählen“)
Feld „ALT“ (####,# [m WGS-84] , Standard: leer)
Feld „Höhe Feuer über Meer“ (####,# [m])
wenn „Alt|HüM“: Dropin „Höhenbezugsystem“ (LAT | LLSW | MW, Standard: „bitte wählen“)
Feld „Höhe Turm“ (###,# [m])
Dropdown „Form“ ( rund | eckig | Gittermast | Stab/Säule, Standard: leer )
Dropdown „Material“ ( Holz | Granit | gemauert | Beton | …, Standard: leer )
Dropdown „Farbe“ ( weiss | grau | braun | rot | grün | gelb | …, Standard: leer )
Checkbox „bewohnt“ (ja | nein, Standard: nein)
Feld „gebaut“ (YYYY, Standard: leer)
Textfeld „Beschreibung“ (Fliesstext)
Dropin „aktiv“ (dauernd | unsicher | ausser Betrieb, Standard: „bitte wählen“ )
SteuerCheckbox „befeuert“ (ja | nein, Standard: ja)
Ok | Zurück
Bei „Checkbox befeuert=ja“

wird das Formular „Befeuerung“ als Kind neben dem Elternformular geöffnet.


Leuchtfeuer

Feuer als Seefeuer

Abhängig von Eltern-Formular:

Tonnen haben keine Sektoren
Kardinalzeichen sind bereits definiert
Dropin „Charakteristik“ ( F | Oc | Iso | Fl | LFl | Q | IQ | IVQ | UQ | Mo(*) | FFl | AI.**, Standard: leer)
wenn „Mo“: Feld „Buchstabe“ (aa..zz, muss); Feld „Wiederkehr“
wenn „Iso“: Feld „Wiederkehr“ (## [Sekunden], Standard: „bitte ausfüllen“)
Steuerfeld „S-Gruppen“ (ja | nein, Standard: nein))
Wenn „S-Gruppen=ja“:
Dropin „Gruppen“ (2 | 3 | 4 | 5 | 6 | 9 | 2+1 | 2+3 | 3+1 )
Feld „Wiederkehr“ (## [Sekunden], Standard: „bitte ausfüllen“)
Steuerfeld „weitere Kennung“ (ja | nein, Standard: nein)
wenn „ja“: 1x Wiederholung von „Charakteristik“ und „Gruppen“
Tabelle "Sektoren"
Sektoren als Tabelle
Feld "Nr" (##)
Feld „Beginn“ (### [° rechtsweisend, von See her gesehen])
Feld „Ende“ (### [° rechtsweisend, von See her gesehen])
Feld „Sektorfarbe“ ( weiss | rot | grün | nicht sichtbar, Standard: weiss)
Feld „Nenntragweite“ (## [nm])
Schaltfläche "weiterere Sektor" ( Klick )
wenn Klick: neue Tabellenzeile
Ausgabefeld: „Kennung“ (String)
Ok | Zurück

Tips und Ideen

Dialogfenster mit JAVA

Dirk schreibt:

Ist nicht besonders schwer. Im WMS-Client sind für die Prefs auch Beispiele drin. In JOSM ist die add()-Funktion des PropertiesDialogs ein gutes Beispiel. Die Struktur ist generell:

p = new JPanel();
x = new JTextField();
... x.setText(wert); ...
p.add(x);
l = Jlabel(text);
p.add(l);
...
p.createDialog(Main.parent, tr("xxx")).setVisible(true);
val = x.getText();

Also:

  • Panel anlegen
  • Elemente anlegen (TextField, Label, ...)
  • Elemente mit add dem Panel hinzufügen
  • Dialog erstellen
  • Nachher Werte auslesen

Denk daran, dass es sich in die bestehende Struktur einfügen muss. Das ganze dann aufhübschen, ausrichten, mit Auswahllisten statt Textfeldern versehen, ... macht gern einer von uns wenn die Funktionalität steht. Wenn Du als Dialog-Unkundiger ein Design machst, wo Du ein Label erstellst mit "Gib einen der folgenden Werte 'a', 'b', 'c' im folgenden Feld ein" reicht das erstmal aus.

SeaMap-Online-Editor