X

Publier des rasters volumineux avec GeoServer

En Système d’Informations Géographiques (SIG), la manipulation de données rasters demande souvent des ressources informatiques importantes. Le poids d’une image raster augmente notamment avec sa résolution spatiale et sa couverture géographique. Mais la complexité de gestion de ce type de donnée géographique ne se limite pas aux propriétés des pixels ni aux limites spatiales. Ici, on ne s’attarde pas sur les traitements des fichiers rasters. Cet article montre comment publier des rasters volumineux dans GeoServer. En effet, la diffusion de fichiers rasters volumineux ou fichiers « lourds » de plusieurs Gigaoctets (Go) pose un souci de fluidité d’affichage sur les logiciels clients.

Le serveur cartographique GeoServer met à disposition un plugin permettant de gérer un fichier raster découpé en plusieurs images en fonction d’un niveau de zoom. On parle d’une pyramide d’images d’où le nom du plugin GeoServer Image Pyramid. Un tutoriel SIG sur l’utilisation de cette extension est mis à disposition sur le site de GeoServer. Avant de décrire les différentes étapes à suivre, un rappel sur la définition d’une couche raster s’impose.

I. Qu’est-ce qu’un fichier raster ? Définition et exemples de couches SIG

C’est quoi une image raster? C’est quoi une couche raster ?

Un raster est une donnée matricielle composée de pixels localisés dans l’espace. Aussi, on peut définir cette image comme un tableau de valeurs avec des lignes et des colonnes (figure 1).

Figure 1 : Illustration d’un raster défini comme une donnée matricielle.

Pourquoi stocker les données sous la forme d’un raster ?

Il est possible de créer des fichiers rasters et d’attribuer des informations à chaque pixel. On recense différents types de données rasters composées d’une bande unique ou de plusieurs bandes spectrales (ou canaux). Par exemple, un modèle numérique de terrain (MNT) ne possède qu’un seul canal avec une valeur unique pour chaque pixel. Pour une orthophoto, trois canaux composent le raster avec un encodage de la luminosité (valeur de 0 à 255) basés sur le système RGB : rouge, vert et bleu respectivement. Zéro représente « aucune luminosité » et 255 la valeur maximale « pleine luminosité ». Dans ce cas, chaque pixel possède plusieurs valeurs liées aux différentes bandes.

Pour les données satellitaires, plusieurs images avec différents canaux spectraux sont fournies pour une scène. Ainsi, chaque satellite embarque des capteurs enregistrant les informations d’objet dans différentes signatures spectrales. Ces dernières sont choisies en fonction de la thématique analysée (météorologie, occupation des sols, etc). Une bande d’une image satellite est caractérisée par sa résolution spatiale (taille du pixel), sa résolution temporelle (fréquence de capture d’un espace géographique) et de sa résolution spectrale (capture de la réflectance d’un objet sur des longueurs d’ondes définies). Enfin, plusieurs instituts scientifiques proposent de télécharger des images satellites librement.

Format de fichier raster pour la cartographie

Il existe de nombreux formats de fichier raster plus ou moins complexes à manipuler. Certaines applications de télédétection prennent en charge un large panel de formats de données raster. Par exemple, on peut citer l’outil GDAL dont la liste des formats de fichier raster est disponible via la ligne de commande :

gdalinfo --formats

Dans ce tutoriel SIG, on utilise une orthophoto au format GeoTiff de plus d’1 Go.

II. Installation du plugin GeoServer Image Pyramid

L’installation du plugin GeoServer Image Pyramid peut se décomposer en deux étapes : (i) le téléchargement du plugin puis (ii) la copie de l’archive Java correspondante dans le répertoire des librairies de GeoServer.

(i) Le téléchargement d’un plugin est possible sur le site de GeoServer. Comme le montre la figure 2, l’extension Image Pyramid est mise à disposition dans la partie Coverage Formats. Il est important de s’assurer de la version du plugin avec celle du serveur cartographique en service.

Figure 2 : Téléchargement du plugin GeoServer Image Pyramid.

(ii) Après téléchargement, on dézippe le répertoire puis on copie l’archive java (.jar) dans le répertoire des librairies de GeoServer WEB-INF\lib. Après redémarrage du serveur cartographique, la nouvelle source de données Image ImagePyramid apparaît dans la liste des entrepôts (figure 3).

Figure 3 : Source de données Image ImagePyramid dans la liste des entrepôts de GeoServer.

III. Tuilage de fichiers rasters volumineux

L’entrepôt ImagePyramid prend en charge des données images découpées en tuile. Pour « tuiler » des rasters volumineux, on utilise l’outil gdal_retile documenté sur le site de GDAL. Dans les options de gdal_retile, ici, on s’intéresse à :

  • -r : l’algorithme de rééchantillonage des pixels pour chaque nouvelle image créée. Les algorithmes de rééchantillonage disponibles sont : near, bilinear, cubic, cubicspline, lanczos.
  • -levels : le nombre de niveaux de pyramides construits. La figure 4 ci-dessous montre le découpage des images pour chaque niveau de pyramide.
Figure 4 : Carte des différents niveaux de pyramides d’images.
  • -ps : le nombre de pixels pris en compte en x et y pour chaque nouvelle image.
  • -co : correspond à des options spécifiques liées au format des images rasters créées en sortie. Par exemple pour le format GeoTiff, on peut utiliser les options de compressions COMPRESS et de tuilage TILED.
  • -targetDir : répertoire de destination des images nouvellement créées dans chaque niveau de pyramide. Dans cet exemple, le répertoire de destination (ici: donnee_pyramide) est placé directement dans le répertoire data situé dans le répertoire de données DATA_DIR de GeoServer.
  • -v : le mode verbeux décrit les opérations en cours de traitements.

Enfin, on ajoute les rasters volumineux en entrée dans la ligne de commande qui s’apparente donc à :

gdal_retile -v -r {algorithme de rééchantillonage} -levels {niveau des pyramides} -ps {dimensions de l'image créée} -co {options} -targetDir {chemin du répertoire de destination créé} {chemin du raster + nom du raster}

Dans notre exemple, on saisit :

gdal_retile -v -r bilinear -levels 4 -ps 2048 2048 -co "TILED=YES" -co "COMPRESS=JPEG" -targetDir C:\Tomcat 9.0\webapps\geoserver\data\data\donnee_pyramide C:\tutoriel\data\orto_br.tif

Le mode verbeux indique les traitements de création des images des pyramides en cours (figure 5).

Figure 5 : Construction de pyramides d’images raster avec gdal_retile.

IV. Publication des images rasters dans GeoServer

Les pyramides d’images sont publiées dans GeoServer. Après avoir sélectionné nouvel entrepôt > ImagePyramid, on édite la source de données Images (Figure 6). Dans un premier temps, on choisit l’espace de travail lié à la source de données éditée avec un nom et une description. Puis, le chemin du répertoire de destination des pyramides d’image correspond aux paramètres de connexion. Le chemin file:data indique le répertoire data dans le DATA_DIR de GeoServer, c’est-à-dire le répertoire data\data.

Figure 6 : Édition de la source de données ImagePyramid.

On sauvegarde la source de données images puis on publie la couche raster dans GeoServer (figure 7).

Figure 7 : Publication d’une couche raster ImagePyramid dans GeoServer.

Après publication des images rasters, le répertoire de destination définie comme source de données de GeoServer contient de nouveaux fichiers :

  • un fichier .prj et .properties indiquant les propriétés des pyramides d’images avec notamment les niveaux de pyramides et leurs répertoires, la fenêtre géographique.
Name=donnee_pyramide
Levels=0.4,0.4 0.8,0.8 1.6,1.6 3.2,3.2 6.4,6.4
LevelsNum=5
Envelope2D=80000.0,12500.0 92500.0,27500.0
LevelsDirs=0 1 2 3 4
  • Et pour chaque répertoire des niveaux des pyramides, un fichier shapefile est créé décrivant la fenêtre géographique de chaque tuile raster créée.

Enfin, depuis GeoServer, on prévisualise la couche raster publiée en WMS. En zoomant sur l’image, on s’aperçoit de la préservation de la qualité de l’image (figure 8).

Figure 8 : Prévisualisation d’une couche raster ImagePyramid en WMS.

En conclusion, ce tutoriel de blog SIG a montré comment publier des rasters volumineux avec GeoServer. L’utilisation de l’outil gdal_retile découpe le raster initial en plusieurs niveaux de pyramides d’images. Chaque donnée raster créée couvre une fenêtre géographique plus faible que la donnée originelle en gardant une résolution de pixel identique. Ainsi, pour chaque appel du protocole HTTP WMS issu de GeoServer à un niveau de zoom donné, seules quelques images rasters sont prises en charge. Au final, ce procédé garantit la fluidité d’affichage des images rasters.

Partager l'article
Florian Delahaye: Passionné de Géomatique

View Comments (2)

  • Bonjour super article comme d'habitude
    Je me posais justement la question sur la pertinence de geoserver dans les architectures web modernes puisque les données géographiques peuvent être transformer en geojson et être afficher sur un client comme leaflet directement.
    Je le trouve un peu lourd et pas trop utile quand on a quelques connaissances en programmation.

    Merci et j'ai hate de lire votre avis

    • Bonjour Goba Joseh,
      GeoServer évolue rapidement et il suit l'évolution des standards OGC. Il embarque de multiples outils comme la mise en mémoire et le tuilage des données avec GeoWebCache, la sécurisation des données et des protocoles HTTP. Les formats de données en sortie de ces services sont nombreux.
      Il existe certes d'autres serveurs cartographiques comme MapServer et QGIS Server mais GeoServer reste très performant.

      Cdlt,

      FD

Related Post