ROK4 est un projet open-source (sous licence CeCILL-C) développé par les équipes du projet Géoportail de l’Institut National de l’Information Géographique et Forestière. Il contient un serveur (ROK4SERVER), écrit en C++, permettant la diffusion de données images géo-référencées, et une suite d'outils (ROK4GENERATION) permettant de préparer les données utilisées par le serveur.
Le serveur implémente les standards ouverts de l’Open Geospatial Consortium (OGC) WMS 1.3.0 et WMTS 1.0.0, ainsi que le TMS (Tile Map Service). Il est utilisé pour l’intégralité de la diffusion des flux images et vecteur tuilé de la dernière version du Géoportail. Répondant aux besoins de diffusion image de l’IGN, ROK4SERVER vise deux objectifs principaux :
- L’utilisation d’un cache de données raster unique permettant de servir indifféremment des flux WMS, WMTS et TMS
- Des performances de traitement d’image et de diffusion accrues
- La diffusion de tuiles vecteur telles qu'elles sont stockées, sans transformation (TMS uniquement)
- La présentation en WMTS d'une pyramide non calculée, à partir d'autres pyramides ou de services WMS.
ROK4GENERATION est un ensemble de scripts de traitement permettant la préparation et la transformation de données géo-référencées vers le format de pyramide raster (potentiellement à la demande) et vecteur utilisé par ROK4.
ROK4 Version : 3.7.2
Les données dans la pyramide sont tuilées selon un quadrillage défini dans le TileMatrixSet (plusieurs sont fournis dans le projet).
La pyramide produite par les outils ROK4GENERATION est décrite à travers un fichier, le descripteur de pyramide, qui va préciser le TMS utilisé pour découper les données, les caractéristiques des données images ou vecteur, les sources pour une pyramide à la demande, les différents niveaux de résolutions.
Pour que cette pyramide soit diffusée par ROK4SERVER, on va créer un descripteur de couche, qui va contenir à la fois des informations propres au serveur (nom, titre et résumé de la couche, styles...) mais aussi référencer le descripteur de la pyramide à diffuser.
- Pour avoir des précisions sur la partie ROK4GENERATION
- Pour avoir des précisions sur la partie ROK4SERVER, son déploiement et son utilisation
- Pour avoir les spécifications d'une PYRAMIDE
La compilation du projet n’a pour le moment été validée que sous GNU/Linux (Debian 9 et 10 et Centos 7). Le projet utilise des pthreads (threads POSIX).
Afin de connaître les paquets et librairies à installer, référez vous aux Dockerfiles :
-
Compilation du serveur ROK4 :
-
Compilation des outils de génération ROK4 :
Les outils suivant sont nécessaires aux outils de génération :
- wget (be4)
- ogr2ogr (4alamo)
- tippecanoe (4alamo) : https://github.com/mapbox/tippecanoe.git
Pour la documentation du code source C++ : sudo apt install doxygen graphviz
Pour la documentation du code source Perl : sudo apt install naturaldocs
mkdir build
cd build
cmake .. [-DOPTION1 -DOPTION2]
make
[make doc]
[make test]
make [install|package]`
CMAKE_INSTALL_PREFIX (PATH)
: Dossier d'installation de ROK4. Valeur par défaut : /usr/local
DEP_PATH (PATH)
: Path to compiled and installed ROK4 dependencies. Valeur par défaut : ./target
BUILD_DEPENDENCIES (BOOL)
: Compilation des dépendances manquantes de ROK4. Elles sont installées avec ROK4. Valeur par défaut : TRUE
BUILD_ROK4 (BOOL)
: Compilation de la partie ROK4SERVER. Valeur par défaut : TRUE
BUILD_BE4 (BOOL)
: Compilation de la partie ROK4GENERATION Valeur par défaut : TRUE
BUILD_DOC (BOOL)
: Compilation de la documentation automatique (Doxygen et Naturaldocs). Crée la cible de compilation make doc
à faire avant make install
. Valeur par défaut : TRUE
UNITTEST (BOOL)
: Compilation des tests unitaires. Crée la cible de compilation make test
. Valeur par défaut : FALSE
DEBUG_BUILD (BOOL)
: Compilation en mode debug. Valeur par défaut : FALSE
BUILD_OBJECT (BOOL)
: Il est possible de stocker les pyramides d'images dans des systèmes de stockage objet. Sont gérés CEPH, S3 et SWIFT. Cela implique d'avoir préalablement installé la librairie librados. Ne pas mettre TRUE mais 1
pour que ce soit bien interprété lors de la compilation dans le code. Valeur par défaut : 0
Kakadu est une librairie propriétaire de manipulation d'images JPEG2000. Par défaut c'est OpenJpeg, libre, qui est utilisé.
KDU_USE (BOOL)
: Active l'utilisation de Kakadu pour la lecture du JPEG2000. Ne pas mettre TRUE mais 1
pour que ce soit bien interprété lors de la compilation dans le code. Valeur par défaut : 0
KDU_LIBRARY_PATH (STRING)
: Si kakadu est utilisé, il est possible de fournir le chemin d'un dossier où chercher la librairie (les fichiers libkdu.a et libkdu_aux.a). Les headers sont embarqués dans le projet ROK4 . Valeur par défaut : /usr/kakadu-6.4
KDU_THREADING (STRING)
: Nombre de threads utilisés par Kakadu. 0 => pas de thread, 1 => un seul thread, 2+ => multi-thread. Valeur par défaut : 0
RPM_PACKAGE (BOOL)
: Crée un paquet RPM au lieu d'un paquet tarball : make package
. Valeur par défaut : FALSE
DEB_PACKAGE (BOOL)
: Crée un paquet DEBIAN au lieu d'un paquet tarball : make package
. Valeur par défaut : FALSE
USE_SYSTEM_LIB (BOOL)
: Permet de forcer l'utilisation des librairies système plutôt que celles embarquées dans le projet. Concerne les librairies IMAGE, LZW, CPPUNIT, PKB, LOGGER et FCGI. Valeur par défaut : FALSE
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/rok4 -DBUILD_DOC=TRUE -DUNITTEST=TRUE ..
make
make doc
make test
sudo make install
Le projet propose les Dockerfile permettant la compilation et l'utilisation du serveur et des outils de génération au sein d'un conteneur. Des configurations pour docker-compose permettent de télécharger des jeux de données conteneurisés et de tester le serveur. Tous les détails sont ici.