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@946: \item By requesting a map in the GNV-WebClient, the artifact-server writes a ESRI hans@946: shapefile with (clipped) geometries, attribute data, projection hans@947: information and a special file storing meta information (\texttt{ hans@946: meta.xml}) for this artifact in the a corresponding directory in the hans@947: \texttt{shapefile-directory}. hans@946: hans@947: \item After that the so called \texttt{map-generator} hans@947: is triggered. The map-generator searches the \texttt{shape-directory} hans@947: and its subfolders with all existing \texttt{meta.xml} files and hans@947: generates a central configuration file for the mapserver at \texttt{ hans@946: map-generator/mapfile@path}. Each shapefile will be published as a WMS hans@946: layer. \\ hans@947: The generated mapfile is constructed out of a base template from hans@947: \texttt{ hans@946: map-generator/templates/maptemplate} and a parameter-/layer-specific hans@947: part generated from \texttt{map-generator/templates/path}. The hans@946: selection of the correct file-based templates is extracted out of hans@947: the \texttt{meta.xml}-file. hans@946: hans@946: \item The matching between the generated geograpic data and the corresponding hans@946: 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@946: horizontalcrosssection\_\$NAME-OF-PARAMETER}; for layer-orientated hans@947: FIS like 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@947: {\em Function}: Templating language used in the maptemplates at \texttt{ hans@946: 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@946: \item {\tt logfile}: Setting the path to write log files. hans@947: Preconfigured to \texttt{/var/log/artifacts/velocity.log}. {\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}