Commit 0772060b by Werner Westerkamp

Merge branch 'master' of ssh://git.breab.org:2222/kai/bachlorarbeit

Conflicts: Ausarbeitung/chapter2.tex
parents 299cf9eb d2693dc5
...@@ -5,18 +5,23 @@ ...@@ -5,18 +5,23 @@
Der erste Schritt eines Bildauswerters ist das Laden der benötigten Daten, insbesondere das zur Auswertung vorgesehene Bild und die dazugehörigen Informationen aus der Umgebung. Das Bild wird häufig durch den CSD-Server zur Verfügung gestellt und sollte deshalb leicht in den SBA geladen werden können. Außerdem ist es bei georeferenzierten Daten vorteilhaft, wenn die Geokoordinaten auf der Karte des Goeviewers dargestellt werden. Im Entwurf und in der Imlementierung beschränken wir uns bei der Kartendarstellung auf einige wichtige Datentypen der CSD, insbesondere Bilder und Videos. Der erste Schritt eines Bildauswerters ist das Laden der benötigten Daten, insbesondere das zur Auswertung vorgesehene Bild und die dazugehörigen Informationen aus der Umgebung. Das Bild wird häufig durch den CSD-Server zur Verfügung gestellt und sollte deshalb leicht in den SBA geladen werden können. Außerdem ist es bei georeferenzierten Daten vorteilhaft, wenn die Geokoordinaten auf der Karte des Goeviewers dargestellt werden. Im Entwurf und in der Imlementierung beschränken wir uns bei der Kartendarstellung auf einige wichtige Datentypen der CSD, insbesondere Bilder und Videos.
<<<<<<< HEAD
\subsection{CSD-Task erstellen} \subsection{CSD-Task erstellen}
Um den Bildauswertern die Arbeit zu vereinfachen, soll eine wiedererkennbare % Was meinst du mit wiedererkennbar? Gibt es einen besseren Fachbegriff? Um den Bildauswertern die Arbeit zu vereinfachen, soll eine wiedererkennbare % Was meinst du mit wiedererkennbar? Gibt es einen besseren Fachbegriff?
Nutzeroberfläche zur Verfügung stehen, um Daten aus der CSD auszulesen (siehe Abbildung \ref{figure:requestUI}). % Das Fenster ist halb englisch - halb deutsch beschriftet. Einheitlich englisch fände ich konsistenter. Bei anderen Screenshots ist das auch so Nutzeroberfläche zur Verfügung stehen, um Daten aus der CSD auszulesen (siehe Abbildung \ref{figure:requestUI}). % Das Fenster ist halb englisch - halb deutsch beschriftet. Einheitlich englisch fände ich konsistenter. Bei anderen Screenshots ist das auch so
Die Benutzeroberfläche ermöglicht das Suchen nach vielen Kriterien, wie zum Beispiel dem Namen der Mission, des Erstellers und der Erstellungszeit. Die Benutzeroberfläche ermöglicht das Suchen nach vielen Kriterien, wie zum Beispiel dem Namen der Mission, des Erstellers und der Erstellungszeit.
=======
\subsection{CSD Task erstellen}
Um den Bildauswertern die Arbeit zu vereinfachen, soll in allen Programmen die gleiche Nutzeroberfläche zur Verfügung stehen, um Daten aus der CSD auszulesen (siehe Abbildung \ref{figure:requestUI}).
Die Benutzeroberfläche ermöglicht das Suchen nach vielen Kriterien, wie zum Beispiel dem Namen der Mission, des Erstellers und der Erstellzeit.
>>>>>>> d2693dc548512654b42755d195d1caca434816d8
Die Auswahl einer Region soll auch möglich sein, um die Daten auf diesen Bereich der Karte zu beschränken. Der Geoviewer bietet hierfür eine einfache Möglichkeit. Der Nutzer kann durch eine einfach Einzeichnung auf der Karte den Suchbereich selektieren und die Suche einschränken. Auf dem SBA ist dieses nicht % oder ``noch nicht''? Wird daraus eine Anforderung an dein Projekt? Die Auswahl einer Region soll auch möglich sein, um die Daten auf diesen Bereich der Karte zu beschränken. Der Geoviewer bietet hierfür eine einfache Möglichkeit. Der Nutzer kann durch eine einfach Einzeichnung auf der Karte den Suchbereich selektieren und die Suche einschränken. Auf dem SBA gibt s keine einfache Möglichkeit den Bereich zu selektieren. Ume eine einfache Eingabe zur verfügung zu stellen wurde die Verbindung vom SBA zum Geoviewer um eine Regionsauswahl erweitert.
so einfach möglich. Hierfür wurde eine Verbindung zum Geoviewer implementiert. % durch dich oder vorher schon? Ist der SBA mit dem Backend des Geoviewers verbunden und Geoviewer gestartet, so aktiviert sich der Regionsauswahl des Bildauswerters. Die Auswahl der Region erfolgt genau so wie auf dem Geoviewer und das Ergebniss wird zurück an den SBA gesendet. Die Auswahl erfolgt also nicht direkt im SBA sondern im Geoviwer.
Ist der SBA mit dem Backend des Geoviewers verbunden und Geoviewer gestartet, so aktiviert sich der Regionsauswahl des Bildauswerters. Die Auswahl der Region erfolgt für den SBA auf dem Geoviewer und das Ergebniss wird zurück an den SBA gesendet. % Ich habe nicht verstanden, was anders ist als bei der schon vorhandenen o.g. Auswahl der Region auf dem Geoviwer.
Die Nutzeroberfläche kann durch ein Preset vorkonfiguriert werden. Die Konfiguration wird aus einem Konfigurationsdatei gelesen und ermöglicht eine einfachere Bedienung. Zum Beispiel kann man so mögliche CSD-Server vorgeben. Der Nutzer muss dann keine URL eingeben, sondern kann die Server aus einer Combobox auswählen. Die Nutzeroberfläche kann durch ein Preset vorkonfiguriert werden. Die Konfiguration wird aus einem Konfigurationsdatei gelesen und ermöglicht eine einfachere Bedienung. Zum Beispiel kann man so mögliche CSD-Server vorgeben. Der Nutzer muss dann keine URL eingeben, sondern kann die Server aus einer Combobox auswählen.
Der Sourcecode der Nutzeroberfläche wurde in eine separate Bibliothek ausgelagert, damit sie wiederverwendet werden kann. Die Bibliothek wurde CSD-Commons genannt. % Darfst du im Design-Kapitel so formulieren? Musst du die Auslagerung nicht als Anforderung schreiben? Hier sthet schon, was du implementiert hast. Um die Nutzeroberfläche wiederverwendbar zu gestallten soll sie in eine CSDCommns Bibliothek integriert werden.
\begin{figure} \begin{figure}
\centering \centering
...@@ -28,17 +33,16 @@ Der Sourcecode der Nutzeroberfläche wurde in eine separate Bibliothek ausgelage ...@@ -28,17 +33,16 @@ Der Sourcecode der Nutzeroberfläche wurde in eine separate Bibliothek ausgelage
\subsection{Task ausführen} \subsection{Task ausführen}
Nachdem der Nutzer einen Task Request erstellt hat, muss dieser ausgeführt werden. Die Eingaben des Nutzers müssen in einen CSD-Abfrage umgewandelt werden und eine Verbindung aufgebaut werden. Nachdem der Nutzer einen Task Request erstellt hat, muss dieser ausgeführt werden. Die Eingaben des Nutzers müssen in einen CSD-Abfrage umgewandelt werden und eine Verbindung aufgebaut werden.
Der Geoviewer sendet den Task Request zur Verarbeitung an den CSD-Adapter. Der Adapter baut mit Hilfe der Isaac.lib (TODO ref) eine Verbindung zum CSD-Server auf und generiert die zugehörige Query. Der SBA verarbeitet den Task direkt. Die Schritte sind sehr ähnlich % womit ähnlich? Hier ist nicht klar, wo Reuse möglich ist. %TODO ref auf Isaac.lib
und sind deshalb ebenfalls in die CSD-Common Bibliothek integriert worden (Siehe Abbildungen \ref{figure:strukturViewer} und \ref{figure:strukturSBA}. Die grün markierten Komponenten sind gleich). Zur Verbindung mit der CSD wird die Isaac.lib verwendet. Der Geoviewer sendet den Task Request zur Verarbeitung an den CSD-Adapter. Der Adapter baut mit Hilfe der Isaac.lib (TODO ref) eine Verbindung zum CSD-Server auf und generiert die zugehörige Query. Der SBA verarbeitet den Task direkt. Die Vorgehensweise bei einer CSD Abfrage ist im SBA und im CSD Adapter sehr ähnlich. Es wurde versucht möglichst viel gemeinsamkeiten in die CSD-Common Bibliothek zu integriert (Siehe Abbildungen \ref{figure:strukturViewer} und \ref{figure:strukturSBA}. Die grün markierten Komponenten sind gleich). Zur Verbindung mit der CSD wird die Isaac.lib verwendet.
\subsection{Ergebnis auswerten} \subsection{Ergebnis auswerten}
Der Isaac.lib kann bei einer Abfrage ein Result Handler übergeben werden. Findet die Bibliothek ein Ergebnis wird diese dem Result Handler übergeben. %Was meinst du mit der Formulierung ``Ereignis finden''? 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 Ergebniss 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 heruasgelesen werden. Anschließend folgt die genauere Verarbeitung.
Für den SBA und den CSD Adapter müssen zunächst alle generellen Informationen aus dem MetaDaten-XML-Dokument ausgelesen werden. Anschließend folgt die genauere Verarbeitung der einzelnen Ergebnisse. % Was sind das für Ergebnisse?
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 ein Bild zum Laden auswählen (Bild \ref{figure:resultUI}). 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 ein Bild zum Laden auswählen (Bild \ref{figure:resultUI}).
Der CSD-Adapter teilt die Ergebnisse erst nach Typ aus, sodass zum Beispiel Bilder und Videos anders verarbeitet werden. % Was meinst du mit ``austeilen''? Der CSD-Adapter trennt die Ergebnisse erst nach ihrem Typ, sodass zum Beispiel Bilder und Videos anders verarbeitet werden.
Im den meisten Fällen wird zuerst das eigentliche Objekt heruntergeladen und für den Lagetisch aufbereitet. Bei Bildern wird überprüft, ob das Bild direkt als 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 dann dargestellt und können verwendet werden, um die Metadaten im Metadaten Display anzuzeigen. Im den meisten Fällen wird zuerst das eigentliche Objekt heruntergeladen und für den Lagetisch aufbereitet. Bei Bildern wird überprüft, ob das Bild direkt als 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 dann dargestellt und können verwendet werden, um die Metadaten im Metadaten Display anzuzeigen.
\begin{figure} \begin{figure}
...@@ -65,8 +69,7 @@ Im den meisten Fällen wird zuerst das eigentliche Objekt heruntergeladen und fà ...@@ -65,8 +69,7 @@ Im den meisten Fällen wird zuerst das eigentliche Objekt heruntergeladen und fÃ
\section{Ausgewertete Daten des SBA speichern} \section{Ausgewertete Daten des SBA speichern}
\subsection{Export in \rec} \subsection{Export in \rec}
Eine Funktion der Erkennungsassistenz \rec ist das Hinzufügen von bisher unbekannten Fahrzeugen. Sind zum Beispiel Piraten mit ihrem modifizierten Bot % Was ist das? Eine Funktion der Erkennungsassistenz \rec ist das Hinzufügen von bisher unbekannten Fahrzeugen. Sind zum Beispiel Piraten mit ihrem selbstgebauten Bot unterwegs, ist diese höchst warscheinlcih nicht im System.In so einem Fall kann man Bilder hinzufügen, sodass das System dieses in Zukunft vorgeschlagen kann. In dem SBA wurde eine Funktion eingebaut, die das Exportieren eines Bildes für den \rec vereinfacht. Durch einen Knopf wird das Bild gerendert und in einen definierten Ordner abgespeichert. In diesem Ordner findet der \rec das Bild und bietet eine Import an.
unterwegs, so kann man Bilder hinzufügen, sodass das System dieses in Zukunft vorgeschlagen kann. In dem SBA wurde eine Funktion eingebaut, die das Exportieren eines Bildes für den \rec vereinfacht. Durch einen Knopf wird das Bild gerendert und in einen definierten Ordner abgespeichert. In diesem Ordner findet der \rec das Bild und bietet eine Import an.
\subsection{Export in CSD} \subsection{Export in CSD}
Nach einer erfolgreichen Auswertung soll das annotierte Bild auch wieder 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 bedeuten, dass gewisse Felder notwendig sind und dass einige Felder eine maximale Länge haben. Zur einfacheren Benutzung wurden Knöpfe zur einfacheren Datumsauswahl und zum Generieren von zufälligen IDs hinzugefügt. Nach einer erfolgreichen Auswertung soll das annotierte Bild auch wieder 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 bedeuten, dass gewisse Felder notwendig sind und dass einige Felder eine maximale Länge haben. Zur einfacheren Benutzung wurden Knöpfe zur einfacheren Datumsauswahl und zum Generieren von zufälligen IDs hinzugefügt.
......
...@@ -4,24 +4,50 @@ ...@@ -4,24 +4,50 @@
\section{Laden von Daten} \section{Laden von Daten}
\subsection{CSD-Task erstellen} \subsection{CSD-Task erstellen}
Um eine wiederverwendbare Oberfläche einzubinden, wird eine gemeinsame Schnittstelle angelegt (Siehe Bild \ref{figure:klassenRequest}). Die Schnittstelle dient zum einen zum Absenden des Task-Requests und zur Auswahl einer Region. Um eine wiederverwendbare Oberfläche einzubinden wird eine Schnittstelle angelegt (Siehe Bild \ref{figure:klassenRequest}). Die Schnittstelle wird aufgerufen, sobald der Nutzer einen Task absendet und bei der Auswahl einer Region Das CSD Plugin des Geoviewers implementiert diese Schnittstelle. Region Anfragen werden direkt bearbeitet und der Task request wird an den CSDAdapter gesendet. Im SBA wird das Interface von der CSDRequestAction implementiert. Der Regionsaufruf wird falls möglich an das CSDPlugin über ein DirectRequest weitergeleitet. Die Antwort darauf erhält der SBA erneut über einen DirectRequest. Eine DirectMessage ist im System des Backends nicht vorhanden und wird deshalb an dieser Stelle über zu Request gelöst. Wir können nicht einen einzigen Request verwenden, da der Nutzer beliebig lange zum Einzeichnen brauchen kann. Nutzt man einen einzigen DirectRequest so müsste die Antwort der Plugins innerhalb des Timeouts von 5 Sekunden erfolgen.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.7]{../UML/Klassen RequestDialogue.png} \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Klassen RequestDialogue.png}
\caption{Das Generieren von Tasks hat eine einheitliche Schnittstelle} \caption{Das Generieren von Tasks hat eine einheitliche Schnittstelle}
\label{figure:klassenRequest} \label{figure:klassenRequest}
\end{figure} \end{figure}
\subsection{CSD-Task}
\subsection{Task erstellen}
\subsubsection{Area Selection of SBA}
\subsection{Task ausführen} \subsection{Task ausführen}
\subsubsection{CSD-Adapter} Die Isaac.lib unterstützt 2 Arten von Anfragen an die CSD. Ein CSD Request ist eine einmalige Abfrage des Servers und übergibt alle Treffer an einen mit übergebenen ResultHandler und ist dann beendet. Eine Subskription liefert auch nach dem abfrage Zeitpunkt Ergebnisse. Wird zum Beispiel ein neuer Datensatz hinzugefügt der auf die Abfrage passt, so wird dieser auch an den ResultHandler übergeben. Beide Abfragen unterscheiden sich bei der Erstellung nur in der eigentlichen Abfrage. Deshalb wurde die Abstrakte Klasse CSDTask angelegt (siehe Abbildung \ref{figure:klassenTask}). Die Methode startRequest startet einen neuen Thread. Zuerst wird die abstrakte Methode beforeTask aufgerufen um Vorbereitungen zu treffen, zum Beispiel Ergebnisse von einem alten Task zu löschen. TODO local Request??.
\subsubsection{SBA} Die Ausfürhung der CSD Abfrage erfolgt in 3 Schritten. Erst wird der CSD Querry String generiert. Anschließend folgt eine Abfrage über die Anzahl der erwarteten Ergebnisse. Die Methode isValidTaskSize überprüft nun ob der Task ausgeführt werden soll oder ob das Ergebnis zu lange brauchen würde. Die Standard Implementierung vergleicht die erwarteten Ergebnisse mit einem Wert aus der Konfigurationsdatei. Ist der Task nicht zu groß wird die Methode querryCSD aufgerufen.
\subsection{Result Hadling} Die Methode wir den beiden Klassen CSDRequst und CSDSubscription, die vom CSDTask erben, implementiert. In dieser Methode wird die Verbindung zur CSD aufgebaut und durchsucht. Die Ergebnisse der Abfrage werden alle an den übergeben Result Handler weitergeleitet.
\begin{figure}
\centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Klassen CSDTask.png}
\caption{Vererbungs Hirachie des CSDTasks}
\label{figure:klassenTask}
\end{figure}
\subsection{ResultHandling}
Die Ergebnisse aus einer CSD Abfrage werden als Liste aus XML Dokumenten an die Methode newResults(List<Documents>) übergeben. Diese ist ein Teil des Interfaces isaac.lib.ResultHandler. Für den SBA und den CSDAdapter müssen zunächst einige allgemeine Informationen aus dem XML Dokument ausgelesen werden. Deshalb wurde die abstrakte Klasse ResultHandler in der CSDCommon Bibliothek angelegt (siehe Abbildung \ref{figure:klassenResult}. Für jedes neue Ergebnis wird zunächst alle allgemeinen Felder ausgelesen und anschließend die Methode newResult aufgerufen um das Ergebnis genau zu verarbeiten. Außerdem wird jeder Fehler der Bei der Auswertung passieren könnte abgefangen. Bricht die Verarbeitung eines Ergebnisses ab, so wird die Methode storeErrorProduct aufgerufen. In der Standard Implementierung wird das XML Dokument in einem Ordner abgelegt.
Ist ein Ergebnis verarbeitet wird im zugehörigen Task die Methode resultFinished aufgerufen. So kann der Task sobald alle Ergebnis ausgewertet sind die Methode afterTask aufrufen um einen eventuelle Nachbearbeitung durchzuführen.
\begin{figure}
\centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Klassen ResultHandler.png}
\caption{Vererbungs Hirachie der Result Handler}
\label{figure:klassenResult}
\end{figure}
\subsection{CSDAdapter}
Im CSD Adapter wird ein CSDRequest genutzt. Die Methoden beforeTask wird verwendet um alte Daten zu löschen. Außerdem wird wie auch in beforeTask und resultFinished eine Nachricht an den Goeviewer gesendet um ein Visuelles Feedback an den Nutzer zu geben, wie weit die Bearbeitung des Tasks vorangeschritten ist.
Zur Kommunikation implementiert der CSDAdapter einen ConnectionServer und der Geoviwer einen ConnectionManager aus den MiddlewareTools. Das heißt die Kommunikation über neue Tasks und den Fortschritt läuft nicht über das Backend sondern direkt zwischen den Programmen. Im Gegensatz dazu werden alle erstellten Datenobjekte zusätzlich an das backen gesendet, sodass diese im System sind und alle angeschlossenen Programme die Daten darstellen könnten.
Die Verarbeitung der Ergebnisse im ResultHandler wird zunächst aufgeteilt. Der MainResultHandler erhält alle Ergebnisse und gibt diese je nach Typ des Ergebnisses an einen genaueren ResultHandler weiter. Sowohl der MainResultHandler als auch die spezifischen Handler erben von der allgemeinen Implementierung in der CSDCommons Bibliothek. In MainResultHandler wird die Methode newResults überschrieben um die Ergebnisse weiterzureichen.
\subsection{SBA}
Im SBA ist zunächst die Auswahl-Oberfläche auf nur Bilder eingeschränkt. Andere Datentypen können nicht verarbeitet werden und sind deshalb auch nicht abfragbar.
\section{Daten auswerten} \section{Daten auswerten}
\section{Ausgewertete Daten speichern} Weglassen?
\section{Asugewertete Daten speichern}
\subsection{Export in RecceMan} \subsection{Export in RecceMan}
\subsection{Export in CSD} \subsection{Export in CSD}
......
...@@ -109,9 +109,7 @@ ...@@ -109,9 +109,7 @@
%% ------------------------ %% ------------------------
% Only files listed here will be included! % Only files listed here will be included!
% Userful command for partially translating the document (for bug-fixing e.g.) % Userful command for partially translating the document (for bug-fixing e.g.)
%%\includeonly{% \includeonly{chapter3}
%%chapter1,
%%}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
No preview for this file type
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment