chapter2.tex 12.1 KB
Newer Older
Kai Westerkamp committed
1 2
\chapter{Design}
\label{chapter:design}
Kai Westerkamp committed
3
\section{Übersicht über die bestehende Struktur}
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Der Bildauswerteplatz der Zukunft besteht aus mehreren Komponenten (siehe Abbildung \ref{figure:backend}). 
Insbesondere der Geoviewer benötigt mehrere Komponenten im Hintergrund. 
Die zentrale Komponente ist dabei das Backend. 
Dieses speichert alle Szenarien, Layer und Datenobjekte, die auf dem Geoviewer angezeigt werden. 
Die Kommunikation zwischen dem Backend und anderen verbundenen Komponenten läuft über die Middleware. 
Der Geoviewer bezieht das Kartenmaterial von einem Geoserver. 
Neben dem Geoviewer ist die Metadaten-Anzeige an das Backend angeschlossen. 
Diese Anzeige kann durch eine Webseite erreicht werden. % Durch eine Webseite oder meinst du durch eine URL bzw Webservice?
Durch Nachrichten an die Anzeige kann die aktuell angezeigte Information verändert und neue Informationen zur Anzeige hinzugefügt werden. 
Die Bedienung des Displays erfolgt meistens durch Auswahl auf dem Geoviewer, der die Anzeige dementsprechend verändert.
Der Stereo-Bildauswerter ist auch an das Backend angeschlossen. 
Bisher wird diese Verbindung nur beim Laden eines Bildes genutzt. 
Der SBA sendet die Koordinaten an den Geoviewer, der dann den zu diesen  Koordinaten zoomt. % Was willst du sagen?
Der CSD-Adapter implementiert eine Verbindung zur CSD. 
Mit Hilfe der isaac.lib (Siehe \cite[Clients für Datenzugriff]{CSD}) wird auf die Datenbank zugegriffen und die benötigten Datenobjekte für das Backend werden erstellt.

Ein Ziel dieser Arbeit ist es, die Verbindung des CSD-Adapter zu verbessern, für andere Projekte wiederverwendbar zu machen und alle Bibliotheken zu aktualisieren. 
Außerdem soll der SBA an die CSD angebunden werden. 
Aktuell muss der Bildauswerter jedes Bild einzeln aus dem Dateisystem laden, was ineffizient und langwierig ist. 
Der Bildauswerter soll die Daten direkt aus der CSD laden können und seine ausgewerteten Ergebnisse dort abspeichern.
Eine weitere Anforderung an den SBA ist, dass dieser auch ohne die Verbindung zur Middleware bzw. dem Backend funktionieren soll.  % Zur Verbesserung der Robustheit.
Kai Westerkamp committed
25 26 27 28 29 30 31 32

\begin{figure}
\centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Backend.png}
\caption{Die Eingabe eines CSD-Requests im SBA. Der Request ist auf Bilder eingeschränkt, da der SBA nur Bilder unterstützt}
\label{figure:backend}
\end{figure}

Kai Westerkamp committed
33
\section{Laden von Daten}
34 35 36 37 38 39 40
Der erste Arbeitsschritt eines Bildauswerters ist das Laden der benötigten Daten, insbesondere das zur Auswertung vorgesehene Bild und die dazugehörigen Informationen aus der Umgebung. 
Bisher war das Importieren von Bildern nur aus dem Dateisystem möglich. 
Das Bild wird häufig durch den CSD-Server zur Verfügung gestellt und soll deshalb leicht in den SBA geladen werden können. 
Eine Schwierigkeit ist dabei, dass die CSD Bilder nur im NSIF-Format abspeichert und bereitstellt.
Der Geoviewer beschränkt sich beim Laden der Daten von dem Server auf einige wichtige Datentypen, insbesondere Bilder, Videos und Berichte, die sofern sie georeferenziert sind, an der richtigen Stelle auf die Karte angezeigt werden.
Der Ablauf einer CSD-Abfrage soll auf dem SBA und dem Geoviewer ähnlich ablaufen. Der Nutzer erstellt eine Anfrage für einen CSD-Task. 
Dieser Task wird dann ausgeführt und die Ergebnisse für die jeweiligen Anwendungsfälle werden verarbeitet. % klingt fast zu allgemein.
Kai Westerkamp committed
41

Kai Westerkamp committed
42 43

\subsection{CSD Task erstellen}
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
Um den Bildauswertern die Arbeit zu vereinfachen, soll zum Auslesen der CSD in allen Programmen dieselbe Nutzeroberfläche zur Verfügung stehen (siehe Abbildung \ref{figure:requestUI}). 
Die Benutzeroberfläche ermöglicht das Suchen nach vielen Kriterien, wie z.B. den Namen der Mission, des Erstellers sowie der Erdstellungszeit. 
Die Eingabeoberfläche war im CSD-Plugin des Geoviewers vorhanden, musste aber angepasst werden, damit sie wiederverwendbar wird. 
Um das zu gewährleisten, wurde die Nutzeroberfläche außerdem in die CSDCommon-Bibliothek verschoben. 

Eine wichtige Funktion zur Einschränkung der Suchergebnisse ist das Auswählen einer Region. 
Der Geoviewer bietet hierfür eine einfache Möglichkeit. 
Der Nutzer kann durch eine Einzeichnung auf der Karte den Suchbereich selektieren und damit die Suche einschränken, um nur die für ihn interessanten Ergebnisse zu erhalten. 
Da die Verarbeitung vieler Ergebnisse merklich Zeit verbraucht, führt die Einschränkung der Region auch zu einer flüssigeren Bedienbarkeit.
Auf dem SBA gibt es keine einfache Möglichkeit einen Bereich zu selektieren. 
Um eine alternative einfache Eingabe zur Verfügung zu stellen, wurde die Verbindung vom SBA zum Geoviewer um eine Regionsauswahl erweitert.
Ist der SBA mit dem Geoviewer über das Backend verbunden und der Geoviewer gestartet, so aktiviert sich die Regionsauswahl für den Bildauswerter. 
Die Auswahl der Region für den SBA erfolgt auf dem Geoviewer und das Ergebnis wird an den SBA gesendet. 
In Abbildung \ref{figure:strukturSBA} ist diese Verbindung über das Backend an das CSD-Plugin eingezeichnet.

Die Nutzeroberfläche verfügt über einige Comboboxen, die eine einfache Auswahl von Feldern ermöglichen. 
Diese Boxen sind durch ein Preset konfigurierbar, das einfach aus einer Konfigurationsfile erstellt werden kann. 
Für den Nutzer hat das den Vorteil, dass er nicht alle Informationen von Hand eingeben muss. 
Das ist z.B. für die URLs der CSD-Server sinnvoll. 

Um die Nutzeroberfläche wiederverwendbar zu gestalten, soll sie in eine CSDCommons-Bibliothek integriert werden. %Gibt es mehrere CSDCommons-Bibliotheken?
In den  Abbildungen \ref{figure:strukturViewer} und \ref{figure:strukturSBA} ist diese Oberfläche in grün eingezeichnet und als RequestUI  bezeichnet.
Das Laden des Presets erfolgt auf dem SBA direkt und beim Geoviewer wird dieses vom CSD-Adapter geladen.
Kai Westerkamp committed
67 68 69

\begin{figure}
\centering
Kai Westerkamp committed
70
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{RequestUI.png}
71 72
\caption{Die Eingabe eines CSD-Requests im SBA. 
Der Request ist auf Bilder eingeschränkt, da der SBA nur Bilder unterstützt.}
Kai Westerkamp committed
73
\label{figure:requestUI}
Kai Westerkamp committed
74 75
\end{figure}

Kai Westerkamp committed
76
\subsection{Task ausführen}
77 78
Nachdem der Nutzer einen Task erstellt hat, muss dieser ausgeführt werden. 
Die Eingaben des Nutzers müssen in eine CSD-Query umgewandelt und die Verbindung zum Server hergestellt werden.
Kai Westerkamp committed
79

80 81 82 83 84
Der Geoviewer sendet die Task zur Verarbeitung an den CSD-Adapter. 
Der SBA verarbeitet den Task direkt. 
Bei beiden Zugriffen auf die CSD wird zunächst der Task gestartet und anschließend mit dem CSDReadingClient der Isaac.lib auf den Server zugegriffen. % Warum sprichst du von 2 Zugriffen?
In den Abbildungen \ref{figure:strukturViewer} und \ref{figure:strukturSBA} ist dieser Teil grün markiert. 
Die Verarbeitung eines Tasks und der Zugriff auf den CSD-Server ist in beiden Komponenten ähnlich und wurde deshalb auch in die CSDCommons-Bibliothek ausgelagert.
Kai Westerkamp committed
85 86

\subsection{Ergebnis auswerten}
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
Der Isaac.lib kann bei einer Abfrage ein Result Handler übergeben werden. 
Gibt es zu einer Abfrage ein Ergebnis, wird dieses dem Result Handler übergeben. 
Ein Ergebnis besteht aus einem MetaDaten-XML-Dokument. Für den SBA und den CSD-Adapter müssen zunächst alle generellen Informationen aus diesem XML-Dokument herausgelesen werden. 
Anschließend folgt die typspezifische Verarbeitung.

Beim SBA wird anschließend ein CSD-Data-Objekt mit allen nötigen Informationen erstellt und dieses Objekt dem CSD-DataStore hinzugefügt. 
Das Ergebnis der Anfrage wird anschließend in einer Tabelle dargestellt und der Nutzer kann daraus ein Bild zum Laden auswählen. 
In Abbildung \ref{figure:strukturSBA} ist der SBAResultHandler, der die Ergebnisverarbeitung übernimmt und der CSD-Data-Store eingezeichnet. 
Die ResultUI ist das Oberfläche zur Auswahl eines Ergebnisses.
Ein Screenshot der UI  ist in Abbildung \ref{figure:resultUI}) zu sehen.

Der CSD-Adapter trennt die Ergebnisse erst nach ihrem Typ, sodass zum Beispiel Bilder und Videos anders verarbeitet werden. 
In Abbildung \ref{figure:strukturViewer} ist die Aufspaltung der Verarbeitung durch den MainResultHandler und mehrere spezielle ResultHandler dargestellt. 
Im den meisten Fällen wird zuerst das eigentliche Objekt heruntergeladen und für den Geoviwer aufbereitet. 
Bei Bildern wird dies erst heruntergeladen und überprüft, ob das Bild direkt in das Kartenmaterial eingebunden werden kann. 
Aus dem Metadaten-XML-File wird eine Metadaten-Anzeige erstellt. 
Außerdem wird ein Data Objekt erstellt und an das Backend gesendet, sodass das Ergebnis auf der Karte visualisiert werden kann. 
Im Geoviewer werden diese Objekt dargestellt und können verwendet werden, um die Metadaten im Metadaten-Display anzuzeigen.
Kai Westerkamp committed
105

106
\begin{landscape} 
Kai Westerkamp committed
107
\begin{figure*}
Kai Westerkamp committed
108
\includegraphics[scale=0.9]{../UML/Struktur Viewer.png}
Kai Westerkamp committed
109
\caption{Struktur der Anbindung an die CSD für den Geoviewer.}
Kai Westerkamp committed
110 111
\label{figure:strukturViewer}
\end{figure*}
Kai Westerkamp committed
112

Kai Westerkamp committed
113
\begin{figure*}
Kai Westerkamp committed
114
\includegraphics[scale=1]{../UML/Struktur SBA.png}
115 116
\caption{Struktur der Anbindung an die CSD im Stereo-Bildauswerter. 
In Gelb sind die Swing-Actions eingezeichnet, die der Nutzer aufrufen kann.}
Kai Westerkamp committed
117 118
\label{figure:strukturSBA}
\end{figure*}
Kai Westerkamp committed
119
\end{landscape} 
Kai Westerkamp committed
120

Kai Westerkamp committed
121 122 123
\begin{figure}
\centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{ResultUI.png}
124 125
\caption{Die Anzeige aller Ergebnisse im SBA. Die Tabelle ist sortierbar und es lassen sich beliebige Spalten ein- und ausblenden. 
Falls ein Vorschaubild verfügbar ist, wird dieses an der Seite zusammen mit dem Kommentar des Bildes angezeigt.}
Kai Westerkamp committed
126 127 128
\label{figure:resultUI}
\end{figure}

Kai Westerkamp committed
129

Kai Westerkamp committed
130
\section{Ausgewertete Daten des SBA speichern}
Kai Westerkamp committed
131
\subsection{Export in \rec}
132 133 134 135 136
Eine Funktion der Erkennungsassistenz \rec  ist das Hinzufügen von bisher unbekannten Fahrzeugen. Sind zum Beispiel Piraten mit einem selbstgebauten Boot unterwegs, ist dieses höchstwahrscheinlich nicht im System. 
\rec unterstützt das Hinzufügen von neuen Objekten und Bildern. 
In dem SBA wurde eine Funktion eingebaut, die das Exportieren eines Bildes für den \rec vereinfacht. 
Durch einen Button wird der Render-Vorgang des Bildes gestartet und in einen definierten Ordner abgespeichert. 
Diesem Ordner durchsucht  \rec  regelmäßig und bietet einen Import an.
Kai Westerkamp committed
137 138


Kai Westerkamp committed
139
\subsection{Export in CSD}
140 141 142 143 144 145 146 147 148 149 150 151 152
Nach einer erfolgreichen Auswertung soll das annotierte Bild zu den CSD hinzugefügt werden. 
Hierfür wurde in den SBA ein schreibender Zugriff auf den Server implementiert. 
Zunächst kann der Nutzer die nötigen und bei Bedarf auch einige optionale Meta-Informationen eingeben. 
Hierfür wurde eine Oberfläche angelegt (siehe Abbildung \ref{figure:metaUI}). 
Falls das Bild aus der CSD geladen wurde, so wird das UI mit den Werten des geladenen Bildes gefüllt. 
Die Oberfläche überprüft, ob alle zwingenden Richtlinien eingehalten wurden. 
Das kann zum Beispiel die Prüfung von Pflichteingaben oder der maximalen Zeichenzahl für bestimmte Felder bedeuten.
Zur einfacheren Benutzung wurden Buttons zur schnellen Datumsauswahl und zum Generieren von zufälligen IDs hinzugefügt.
Nachdem der Nutzer alle Informationen eingetragen hat, beginnt der eigentliche Schreibvorgang. 
Zunächst wird das Bild gerendert und mit Hilfe des NSIF-Creators in ein NSIF-Bild umgewandelt. 
Das ist notwendig, da in der CSD nur NSIF Bilder gespeichert werden können. 
Das Metadaten-XML-File wird mit Hilfe des CSD-WritingClients der Isaac.lib an die CSD gesendet. 
Das Bild wird durch einem HTTP-Server der Isaac.lib zur Verfügung gestellt, sodass der CSD-Server das Bild herunterladen kann. % gehört der HTTP Server zur isaac.lib? Das ``der Isaac.lib'' kann man auf 2 Arten lesen (Genetiv  ODER Dativ-Objekt zum Verb ``zur Verfügung stellen''
Kai Westerkamp committed
153 154 155 156

\begin{figure}
\centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{MetaDataUI.png}
157 158
\caption{Die Anzeige aller Ergebnisse im SBA. Die Tabelle ist sortierbar und es lassen sich beliebige Spalten ein- und ausblenden. 
Falls ein Vorschaubild verfügbar ist, wird es an der Seite zusammen mit dem Kommentar des Bildes angezeigt.}
Kai Westerkamp committed
159 160 161 162 163 164
\label{figure:metaUI}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Struktur Writing.png}
165
\caption{Die Nutzereingabe zur Eingabe der Metadaten }
Kai Westerkamp committed
166 167
\label{figure:StrukturWriting}
\end{figure}