Configuration du serveur ROK4

Structure du dossier d’installation

Le dossier d’installation de ROK4 contient les sous-dossiers suivants :

Fichiers de configuration de ROK4

La structure exacte des fichiers de configuration est présente dans les sources du projet sous forme de fichiers XSD. Les fichiers de configuration de ROK4 sont, eux, au format XML.

server.conf

Le fichier server.conf est le point d’entrée des fichiers de configuration de ROK4. Il doit se trouver par défaut dans le dossier /config de l’installation de ROK4. Il est néanmoins possible de lancer rok4 en lui précisant la localisation du fichier server.conf :

/opt/rok4/bin/rok4 -f /chemin/vers/fichier/server.conf

Le fichier server.conf contient par défaut les informations suivantes :

<div>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</div>
<div>&lt;serverConf&gt;</div>
<div></div>
<div>  &lt;!-- Sortie des logs (rolling_file|static_file|standard_output_stream_for_errors) --&gt;</div>
<div>  &lt;logOutput&gt;rolling_file&lt;/logOutput&gt;</div>
<div></div>
<div>  &lt;!-- Prefixe des fichiers de log --&gt;</div>
<div>  &lt;logFilePrefix&gt;/var/tmp/rok4&lt;/logFilePrefix&gt;</div>
<div></div>
<div>  &lt;!-- Periode de validite des fichiers de log (en secondes) --&gt;</div>
<div>  &lt;logFilePeriod&gt;3600&lt;/logFilePeriod&gt;</div>
<div></div>
<div>  &lt;!-- Nombre de thread de traitement des requêtes --&gt;</div>
<div>  &lt;nbThread&gt;2&lt;/nbThread&gt;</div>
<div></div>
<div>  &lt;!-- Niveau maximum des logs (fatal|error|warn|info|debug) --&gt;</div>
<div>  &lt;logLevel&gt;debug&lt;/logLevel&gt;</div>
<div></div>
<div>  &lt;!-- Capacite du serveur pour les reprojections --&gt;</div>
<div>  &lt;reprojectionCapability&gt;true&lt;/reprojectionCapability&gt;</div>
<div></div>
<div>  &lt;!-- Fichier contenant les parametres de service --&gt;</div>
<div>  &lt;servicesConfigFile&gt;../config/services.conf&lt;/servicesConfigFile&gt;</div>
<div></div>
<div>  &lt;!-- Repertoire contenant les confs des layers --&gt;</div>
<div>  &lt;layerDir&gt;../config/layers&lt;/layerDir&gt;</div>
<div></div>
<div>  &lt;!-- Repertoire contenant les confs des styles --&gt;</div>
<div>  &lt;styleDir&gt;../config/styles&lt;/styleDir&gt;</div>
<div></div>
<div>  &lt;!-- Répertoire contenant les confs des TMS --&gt;</div>
<div>  &lt;tileMatrixSetDir&gt;../config/tileMatrixSet&lt;/tileMatrixSetDir&gt;</div>
<div></div>
<div>  &lt;!-- Répertoire contenant les registres proj4 --&gt;</div>
<div>  &lt;projConfigDir&gt;../config/proj&lt;/projConfigDir&gt;</div>
<div></div>
<div>  &lt;!-- Chemin d'écoute du serveur FCGI dans le cas d'une socket UNIX "/var/run/rok4sock"</div>
<div>Ou (ip d'écoute) deux point suivi d'un numéro de port "127.0.0.1:9000" ou ":9000"</div>
<div>Doit être vide pour une utilisation avec Apache ou Spawn-Fcgi--&gt;</div>
<div>  &lt;serverPort&gt;&lt;/serverPort&gt;</div>
<div></div>
<div>  &lt;!-- Configuration de la socket FCGI, DOC : backlog is the listen queue depth used in the listen() call --&gt;</div>
<div>  &lt;serverBackLog&gt;0&lt;/serverBackLog&gt;</div>
<div></div>
<div> &lt;!-- Support du WMS. Si true alors ROK4 expose une interface WMS fonctionnelle --&gt;
&lt;WMSSupport&gt;true&lt;/WMSSupport&gt;</div>
<div></div>
<div>  &lt;!-- Support du WMTS. Si true alors ROK4 expose une interface WMTS fonctionnelle --&gt;
&lt;WMTSSupport&gt;true&lt;/WMTSSupport&gt;</div>
<div></div>
<div>&lt;/serverConf&gt;</div>

Un fichier server.conf.sample est présent par défaut dans le répertoire /config de l’installation de ROK4.

services.conf

Le fichier services.conf contient les informations et paramètres de configuration des services WMS et WMTS. L’emplacement de ce fichier est défini dans le fichier server.conf (balise <servicesConfigFile>).

L’ensemble de ces informations a vocation à apparaitre dans les GetCapabilities des services WMS et WMTS.

On fournit un exemple de fichier services.conf ci-dessous :

&lt;servicesConf&gt;
<div></div>
<div>&lt;!-- Paramètres communs WMS et WMTS --&gt;</div>
<div>  &lt;title&gt;Service de visualisation WMS/WMTS&lt;/title&gt;</div>
<div>  &lt;abstract&gt;Ce service permet la visulation de couches de données raster IGN au travers d'un flux WMS ou WMTS&lt;/abstract&gt;</div>
<div>  &lt;serviceProvider&gt;IGN&lt;/serviceProvider&gt;</div>
<div>  &lt;providerSite&gt;http://www.ign.fr&lt;/providerSite&gt;</div>
<div>  &lt;keywordList&gt;</div>
<div>    &lt;keyword&gt;WMS/WMTS&lt;/keyword&gt;</div>
<div>  &lt;/keywordList&gt;</div>
<div>  &lt;postMode&gt;false&lt;/postMode&gt;</div>
<div>  &lt;fee&gt;none&lt;/fee&gt;</div>
<div>  &lt;accessConstraint&gt;none&lt;/accessConstraint&gt;</div>
<div>  &lt;!--Contact Information--&gt;</div>
<div>  &lt;individualName&gt;Géoportail SAV&lt;/individualName&gt;</div>
<div>  &lt;individualPosition&gt;custodian&lt;/individualPosition&gt;</div>
<div>  &lt;voice&gt;&lt;/voice&gt;</div>
<div>  &lt;facsimile&gt;&lt;/facsimile&gt;</div>
<div>  &lt;addressType&gt;&lt;/addressType&gt;</div>
<div>  &lt;deliveryPoint&gt;73 avenue de Paris&lt;/deliveryPoint&gt;</div>
<div>  &lt;city&gt;Saint Mandé&lt;/city&gt;</div>
<div>  &lt;administrativeArea&gt;&lt;/administrativeArea&gt;</div>
<div>  &lt;postCode&gt;94160&lt;/postCode&gt;</div>
<div>  &lt;country&gt;France&lt;/country&gt;</div>
<div>  &lt;electronicMailAddress&gt;geop_services@geoportail.fr&lt;/electronicMailAddress&gt;</div>
<div></div>
<div>  &lt;!-- Paramètres spécifiques WMS --&gt;</div>
<div>  &lt;name&gt;WMS&lt;/name&gt;</div>
<div>  &lt;maxWidth&gt;10000&lt;/maxWidth&gt;</div>
<div>  &lt;maxHeight&gt;10000&lt;/maxHeight&gt;</div>
<div>  &lt;layerLimit&gt;1&lt;/layerLimit&gt;</div>
<div>  &lt;maxTileX&gt;256&lt;/maxTileX&gt;</div>
<div>  &lt;maxTileY&gt;256&lt;/maxTileY&gt;</div>
<div>  &lt;formatList&gt;</div>
<div>    &lt;format&gt;image/jpeg&lt;/format&gt;</div>
<div>    &lt;format&gt;image/png&lt;/format&gt;</div>
<div>    &lt;format&gt;image/tiff&lt;/format&gt;</div>
<div>    &lt;format&gt;image/x-bil;bits=32&lt;/format&gt;</div>
<div>  &lt;/formatList&gt;</div>
<div>  &lt;globalCRSList&gt;</div>
<div>    &lt;crs&gt;CRS:84&lt;/crs&gt;</div>
<div>    &lt;crs&gt;EPSG:3857&lt;/crs&gt;</div>
<div>  &lt;/globalCRSList&gt;</div>
<div>  &lt;fullStylingCapability&gt;false&lt;/fullStylingCapability&gt;</div>
<div></div>
<div>  &lt;!-- Paramètres spécifiques WMTS --&gt;</div>
<div>  &lt;serviceType&gt;OGC WMTS&lt;/serviceType&gt;</div>
<div>  &lt;serviceTypeVersion&gt;1.0.0&lt;/serviceTypeVersion&gt;</div>
<div></div>
<div>  &lt;!-- Paramètre INSPIRE --&gt;</div>
<div>  &lt;inspire&gt;false&lt;/inspire&gt;</div>
<div>  &lt;metadataWMS&gt;</div>
<div>    &lt;url&gt;http://foobar.com/IGNF_INSPIRE_WMS.xml&lt;/url&gt;</div>
<div>    &lt;mediaType&gt;application/vnd.ogc.csw.GetRecordByIdResponse_xml&lt;/mediaType&gt;</div>
<div>  &lt;/metadataWMS&gt;</div>
<div>  &lt;metadataWMTS&gt;</div>
<div>    &lt;url&gt;http://foobar.com/IGNF_INSPIRE_WMTS.xml&lt;/url&gt;</div>
<div>    &lt;mediaType&gt;application/vnd.ogc.csw.GetRecordByIdResponse_xml&lt;/mediaType&gt;</div>
<div>  &lt;/metadataWMTS&gt;</div>
<div></div>
<div>&lt;/servicesConf&gt;</div>

Un fichier services.conf.sample est présent par défaut dans le répertoire /config de l’installation de ROK4.

Ajout d’une nouvelle donnée de diffusion

Jeu test

Vous pouvez télécharger ici un jeu de données test prêt à être diffusé par ROK4.

Il s’agit d’un jeu de données issu du SCAN 1000® de l’IGN en projection Lambert 93 et compressé en JPEG. Ces données ne peuvent être utilisées pour un usage commercial.

L’archive fournie contient trois éléments :

Remarque : L’ensemble de ces éléments est le résultat du traitement des données sources de l’IGN par le logiciel BE4.

Déploiement du jeu test

Si vous avez utilisé le fichier server.conf détaillé plus haut vous devez donc vérifier la présence d’un répertoire /layers dans le dossier /config du dossier d’installation pour y héberger les fichiers de définition des layers.

Fichier Layer (.lay)

Copier le fichier SCAN1000_JPG_LAMB93_FXX.lay dans le dossier /layers.

<div>&lt;layer&gt;</div>
<div>  &lt;title&gt;SCAN1000_JPG_LAMB93_FXX&lt;/title&gt;</div>
<div>  &lt;abstract&gt;Couche utilisant le descripteur de pyramide SCAN1000_JPG_LAMB93_FXX.pyr&lt;/abstract&gt;</div>
<div>  &lt;keywordList&gt;</div>
<div>    &lt;keyword&gt;LAMB93_10cm&lt;/keyword&gt;</div>
<div>    &lt;keyword&gt;255,255,255&lt;/keyword&gt;</div>
<div>    &lt;keyword&gt;rgb&lt;/keyword&gt;</div>
<div>    &lt;keyword&gt;bicubic&lt;/keyword&gt;</div>
<div>    &lt;keyword&gt;TIFF_JPG_INT8&lt;/keyword&gt;</div>
<div>    &lt;keyword&gt;Samples per pixel: 3&lt;/keyword&gt;</div>
<div>    &lt;keyword&gt;Tiles per width: 16&lt;/keyword&gt;</div>
<div>    &lt;keyword&gt;Tiles per height: 16&lt;/keyword&gt;</div>
<div>    &lt;keyword&gt;Directory depth: 2&lt;/keyword&gt;</div>
<div>  &lt;/keywordList&gt;</div>
<div>  &lt;style&gt;normal&lt;/style&gt;</div>
<div>  &lt;EX_GeographicBoundingBox&gt;</div>
<div>    &lt;westBoundLongitude&gt;-4.9942572726974&lt;/westBoundLongitude&gt;</div>
<div>    &lt;eastBoundLongitude&gt;10.9803184076772&lt;/eastBoundLongitude&gt;</div>
<div>    &lt;southBoundLatitude&gt;41.0037193075078&lt;/southBoundLatitude&gt;</div>
<div>    &lt;northBoundLatitude&gt;51.1940240110352&lt;/northBoundLatitude&gt;</div>
<div>  &lt;/EX_GeographicBoundingBox&gt;</div>
<div>  &lt;WMSCRSList&gt;</div>
<div>    &lt;WMSCRS&gt;IGNF:LAMB93&lt;/WMSCRS&gt;</div>
<div>    &lt;WMSCRS&gt;CRS:84&lt;/WMSCRS&gt;</div>
<div>    &lt;WMSCRS&gt;IGNF:WGS84G&lt;/WMSCRS&gt;</div>
<div>    &lt;WMSCRS&gt;EPSG:3857&lt;/WMSCRS&gt;</div>
<div>    &lt;WMSCRS&gt;EPSG:4258&lt;/WMSCRS&gt;</div>
<div>  &lt;/WMSCRSList&gt;</div>
<div>  &lt;boundingBox CRS="IGNF:LAMB93" minx="26214.4" miny="6023116.8" maxx="1258291.2" maxy="7150336"/&gt;</div>
<div>  &lt;minRes&gt;102.4&lt;/minRes&gt;</div>
<div>  &lt;maxRes&gt;209715.2&lt;/maxRes&gt;</div>
<div>  &lt;opaque&gt;true&lt;/opaque&gt;</div>
<div>  &lt;authority&gt;IGNF&lt;/authority&gt;</div>
<div>  &lt;resampling&gt;lanczos_4&lt;/resampling&gt;</div>
<div>  &lt;pyramid&gt;CHEMIN_A_REMPLACER/SCAN1000_JPG_LAMB93_FXX.pyr&lt;/pyramid&gt;</div>
<div>&lt;/layer&gt;</div>
<div></div>
  1. Le fichier .lay contient la définition de la couche telle qu’elle sera diffusée par ROK4. Le formalisme de ce fichier est donc très proche des informations présentes dans un GetCapabilities.
  2. Le fichier .lay référence également l’emplacement du fichier .pyr décrivant les données constitutives de la couche
  3. Il est à noter que le nom du layer diffusé par ROK4 correspond toujours au nom du fichier .lay.

Fichier Pyramide (.pyr)

Par défaut le fichier .pyr et le dossier contenant les données de diffusion doivent se trouver dans le même repertoire.

Pour notre exemple nous allons remplacer dans le fichier .lay la valeur de la balise <pyramid> par /opt/rok4/data/SCAN1000_JPG_LAMB93_FXX.pyr

Nous créons ensuite le dossier /opt/rok4/data et y copions le dossier SCAN1000_JPG_LAMB93_FXX présent dans l’archive téléchargée ainsi que le fichier SCAN1000_JPG_LAMB93_FXX.pyr

Ci-dessous une version abrégée du fichier SCAN1000_JPG_LAMB93_FXX.pyr :

<div>&lt;Pyramid&gt;</div>
<div>    &lt;tileMatrixSet&gt;LAMB93_10cm&lt;/tileMatrixSet&gt;</div>
<div>    &lt;format&gt;TIFF_JPG_INT8&lt;/format&gt;</div>
<div>    &lt;channels&gt;3&lt;/channels&gt;</div>
<div>    &lt;nodataValue&gt;255,255,255&lt;/nodataValue&gt;</div>
<div>    &lt;interpolation&gt;bicubic&lt;/interpolation&gt;</div>
<div>    &lt;photometric&gt;rgb&lt;/photometric&gt;</div>
<div>    &lt;level&gt;</div>
<div>        &lt;tileMatrix&gt;0&lt;/tileMatrix&gt;</div>
<div>        &lt;baseDir&gt;SCAN1000_JPG_LAMB93_FXX/IMAGE/0&lt;/baseDir&gt;</div>
<div>        &lt;tilesPerWidth&gt;16&lt;/tilesPerWidth&gt;</div>
<div>        &lt;tilesPerHeight&gt;16&lt;/tilesPerHeight&gt;</div>
<div>        &lt;pathDepth&gt;2&lt;/pathDepth&gt;</div>
<div>        &lt;nodata&gt;</div>
<div>            &lt;filePath&gt;SCAN1000_JPG_LAMB93_FXX/NODATA/0/nd.tif&lt;/filePath&gt;</div>
<div>        &lt;/nodata&gt;</div>
<div>        &lt;TMSLimits&gt;</div>
<div>            &lt;minTileRow&gt;0&lt;/minTileRow&gt;</div>
<div>            &lt;maxTileRow&gt;0&lt;/maxTileRow&gt;</div>
<div>            &lt;minTileCol&gt;0&lt;/minTileCol&gt;</div>
<div>            &lt;maxTileCol&gt;0&lt;/maxTileCol&gt;</div>
<div>        &lt;/TMSLimits&gt;</div>
<div>    &lt;/level&gt;
&lt;level&gt;</div>
<div>       &lt;tileMatrix&gt;1&lt;/tileMatrix&gt;</div>
<div>       ...
&lt;level&gt;</div>
<div>     ...</div>
<div>&lt;/Pyramid&gt;</div>
  1. Le fichier .pyr décrit le format des données sources et les méthodes d’interpolation à appliquer sur ces données. Le <tileMatrixSet> défini dans le fichier .pyr correspond à un des tilesMatrixSet défini dans /config/tileMatrixSet.
  2. Le fichier .pyr décrit les différents niveaux (<level>) de la pyramide de données de diffusion
  3. Le fichier .pyr référence l’emplacement des images sources composant la pyramide (<filePath>)

 

Il ne reste plus désormais qu’à déployer ROK4 pour rendre disponible ce jeu de données de test. C’est l’objet de la partie de documentation suivante.