
hans@938: \subsection{Generating Maps-- Background Information and Configuration}
hans@938: 
hans@946: The artifact-server is able to process geographic data and provide them
hans@946: for a WMS service rendering maps via a HTTP-based interface. The
hans@946: following process chains are covered. For generating horizontal-cross sections, 
hans@946: the following steps have to be processed:
hans@938: 
hans@946: \begin{enumerate}
hans@946: %% FIXME: When do we clip? Sequence will influence the interpolation
hans@946:     \item Selecting the data from datawarehouse
hans@946:     \item Clipping the datasets along the passed polygon
hans@946:     \item Calculating interpolation in the plane
hans@946:     \item Generating contour lines
hans@946:     \item Matching processed parameter data to the corresponding style
hans@946:     \item Rendering requested map
hans@946: \end{enumerate}
hans@946: 
hans@946: For generating maps from object-based datamodels like CONTIS, NAUTHIS
hans@946: and Marine Features, just the following steps are needed:
hans@946: 
hans@946: \begin{enumerate}
hans@946:     \item Selecting the data from datawarehouse
hans@946:     \item Clipping the datasets along the passed polygon
hans@946:     \item Matching processed object data to the corresponding style
hans@946:     \item Rendering requested map
hans@946: \end{enumerate}
hans@946: 
hans@946: In order to understand the configuration facilities for generating maps
hans@946: in more detail, the internal
hans@946: interaction of the artifact-server and the mapserver is described below
hans@946: for the use case when a user parameterizes a horizontal-cross-section
hans@946: profile and visualizes it as a map (without regarding the caching
hans@946: facilities)
hans@946: 
hans@946: \begin{enumerate}
hans@946:     \item After finishing the parameterization, the artifact-server
hans@946:     requests the data from the database-backend and processes the data
hans@946:     (see above).    
hans@946:     
hans@948:     \item By requesting a map in the GNV-WebClient, the artifact-server writes
hans@948:     a ESRI shapefile with (clipped) geometries, attribute data, projection
hans@948:     information and a special file storing meta information (\texttt{meta.xml})
hans@948:     for this artifact in the a corresponding directory in the
hans@947:     \texttt{shapefile-directory}.
hans@946:     
hans@948:     \item After that the so called \texttt{map-generator} is triggered. The
hans@948:     map-generator searches the \texttt{shape-directory} and its subfolders with
hans@948:     all existing \texttt{meta.xml} files and generates a central configuration
hans@948:     file for the mapserver at \texttt{ map-generator/mapfile@path}. Each
hans@948:     shapefile will be published as a WMS layer. \\
hans@948:     The generated mapfile is constructed out of a base template from \texttt{
hans@948:     map-generator/templates/maptemplate} and a parameter-/layer-specific part
hans@948:     generated from \texttt{map-generator/templates/path}. The selection of the
hans@948:     correct file-based templates is extracted out of the
hans@948:     \texttt{meta.xml}-file.
hans@946:     
hans@948:     \item The matching between the generated geograpic data and the
hans@948:     corresponding style files is been done by the artifact-server, constructing
hans@946:     filenames of maptemplates out of parameter-information. For
hans@947:     horizontal-cross-sections the schema looks like this \texttt{
hans@948:     horizontalcrosssection\_\$NAME-OF-PARAMETER}; for layer-orientated FIS like
hans@948:     e.g. NAUTHIS and CONTIS like this \texttt{
hans@946:     layer\_\$ID\_MAPSERVICE\_\$ID\_LAYER}  e.g.
hans@947:     \texttt{layer\_BSH\_IMS\_CONTIS\_Resources\_2}.
hans@946:     %% FIXME@TE: Marine Feature? Name of WMS?
hans@946:     In order to set at least title, geometry-type and path to the
hans@946:     corresponding shapefile dynamically a templating language, called
hans@947:     \texttt{velocity} is used.
hans@946: 
hans@947:     \item The corresponding subfolder of an artifact in \texttt{
hans@946:     shape-directory} with their shapefiles
hans@947:     and \texttt{meta.xml}-document will be deleted after the time of
hans@947:     expiry. By triggering the \texttt{map-generator} the next time, the
hans@946:     geographic data and the central configuration of the mapserver will
hans@946:     be updated.
hans@946: 
hans@946: \end{enumerate}
hans@946: 
hans@946: The coupling of the artifact-server and mapserver is free of
hans@946: maintenance. The artifact-server as master cares about deleting and
hans@946: updating the configuration of the mapserver.
hans@938: 
hans@938: \begin{lstlisting}
hans@938: artifact-database
hans@938: |-- gnv # charts, palettes, interpolation parameters
hans@938: |   |-- map-generator 
hans@938: |   |-- shapefile-directory
hans@938: |   `-- horizontal-cross-section
hans@938: |-- mapserver
hans@938: `-- velocity
hans@938: \end{lstlisting}
hans@938: 
hans@946: \paragraph*{mapserver}
hans@946: {\em Function}: URL of the mapserver where request can be send to. The
hans@946: URL will be used for displaying the location e.g. in the GNV-WebClient and in
hans@946: the {\tt meta.xml}-file.
hans@938: 
hans@938: \begin{itemize}
hans@946:     \item {\tt server}: URL of the mapserver where request can send to.
hans@938: \end{itemize}
hans@938: 
hans@946: \paragraph*{velocity}
hans@948: {\em Function}: Templating language used in the maptemplates at 
hans@948: \texttt{map-generator/templates/path} for accessing the parameters from
hans@947: dynamically generated \texttt{meta.xml}-configuration of artifacts.
hans@938: 
hans@938: \begin{itemize}
hans@948:     \item {\tt logfile}: Setting the path to write log files. \\
hans@948:     Preconfigured to \texttt{/var/log/artifacts/velocity.log}. 
hans@948:     {\bf Just
hans@946:     absolute pathes are allowed here!}
hans@938: \end{itemize}
hans@938: 
hans@946: \paragraph*{map-generator}
hans@946: {\em Function}: Mechanism for generating configuration for the {\tt
hans@946: mapserver} dynamically. For background information about the interaction
hans@946: between artifact-server and mapserver, see above.
hans@938: 
hans@938: \begin{itemize}
hans@946:     \item {\tt mapfile}: path to the mapfile accessed by the WMS wrapper
hans@946:     {\tt gnv-wms}
hans@946:     \item {\tt templates}: \\ {\tt path} to the directory where
hans@946:     parameter-specific mapconfiguartions (as *.vm) are stored. 
hans@946:     \\ {\tt
hans@946:     maptemplate} containing the WMS instance-specific configurations and
hans@946:     metadata, like overall boundingbox, spatial reference systems and
hans@946:     contact data.
hans@946:     \end{itemize}
hans@946: 
hans@946: \paragraph*{shapefile-directory}
hans@946: {\em Function}: Pointer where shapefiles for map-generation are stored 
hans@946: 
hans@946: \begin{itemize}
hans@946:     \item {\tt path}: path to the directory where shapefiles are stored
hans@946:     and accessed by {\tt mapserver}
hans@938: \end{itemize}
hans@938: 
hans@946: \paragraph*{horizontal-cross-section}
hans@946: {\em Function}: Parameterization for the interpolation algorithm for
hans@946: horizontal-cross-sections (maps).
hans@946:   
hans@938: 
hans@938: \begin{itemize}
hans@946:     \item {\tt sample}: The attribute {\tt number} sets the number of
hans@946:     steps for the interpolation grid.
hans@946:     \item {\tt ground}: {\tt interpolation} method for calculating the
hans@946:     interpolation from the last measured value in meshes against the seafloor.
hans@946:     Available methods are {\tt nearest-neighbor | bilinear | bicubic}.
hans@938: \end{itemize}




