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}