Pyramide avec GDAL et GEOSERVER

le

Retour d’expériences
Pyramide tuilé avec GDAL
Suite à un travail faite sur l’optimisation d’ortho photos de Rennes Métropole, je partage avec vous mon expérience sur la valorisation et la production d’images tuilées avec des overview et la mise en place d’une structure pyramidale d’image tuilées
Pour plus de documentation complète je vous renvoie à Geoserver Stéroide
Pour commencer télécharger gdal
Il y a un bug dans la version du script gdal_retile.py dans FWTOOLS 2.4.7.
Si vous rencontrer cette erreur
File "C:\PROGRA~1\FWTOOL~1.7\bin\gdal_retile.py", line 273
print("Building internal Index for %d tile(s) ..." % len(inputTiles), end=' ')
^
SyntaxError: invalid syntax

Remplacer la ligne 273 par
print "Building internal Index for %d tile(s) ..." % len(inputTiles)
Test GDAL avec FWTOOLS : 1329_7218.tif
Je ferais mes tests à partir une dalle geotiff : 1329_7218.tif
Dans un premier temps nous allons consulter l’information de base contenue dans notre image.
Pour ce faire nous allons utiliser la commande :
Gdalinfo 1329_7218.tif
gdal_info
Comme vous pouvez le constater nous avons en gros une Geotiff avec une projection en Lambert93, des block de 5000*5000
Pour optimiser les données, la bibliographie conseil d’utiliser des des blocks de 256*256 avec des overview internes ou externes.
Pour créer des blocks vous devez utiliser Gdal_translate qui est l’outil de transformation de GDAL (to translate = transformer, convertir), il sert principalement à changer le format, mais aussi à extraire une dalle à partir d’un raster existant.
gdal_translate -co "TILED=YES" -co "BLOCKXSIZE=256" -co "BLOCKYSIZE=256" "C:\Documents and Settings\a.diouck\Bureau\GDAL\ortho_15cm\assemblage\beton\depart\20cm.tif" "C:\Documents and Settings\a.diouck\Bureau\GDAL\ortho_15cm\assemblage\beton\depart\20cmblock256.tif"
gdaltranslate
Pour vérifier la transformation vous faites
Gdalinfo 1329_7218.tif
gdalinfo2
Maintenant avec notre image nous avons à la fois des block de 256*256 mais aussi des overview internes que l’on peut directement utiliser dans un serveur cartographique pour créer des tuiles performantes.
Mais avant cela je vais vous montrer quelque chose de pratique c’est-à-dire la reprojection des données avec la commande gdalwarp, utile si on veut changer de coordonnées.
Gdalwarp est l’outil de « déformation » de GDAL (to warp = déformer), il sert principalement à reprojeter, mais aussi à modifier les pixels de l’image.
* -of pour préciser le format (ex : -of ECW)
* -co pour appeler une option de création et en préciser la valeur (ex : -co TARGET=90)
* -projwin dans gdal_translate, pour extraire une dalle d’un raster (ex : -projwin 575000 325000 576000 322000)
* -s_srs dans gdalwarp, pour spécifier la projection du fichier source (ex: -s_srs EPSG:27562)
* -t_srs dans gdalwarp, pour spécifier la projection du fichier en sortie (ex: -s_srs EPSG:3948)
Example passage de rgf 93 par defaut de notre image source vers le CC48 utilisée par Rennes Métropole
gdalwarp -t_srs EPSG:3948 1329_7218.tif 1329_7218_3948.tif
gdalinfo 3
Visualisation avec Qgis
qgis gdal
Structure pyramidal
Maintenant que vous savez comment manipuler gdal pour optimizer vos tuiles, je vais vous montrer une autre facon plus traditionnelle de creation de tuiles .
Gdal nous permet de créer des pyramides d’apres mon expériance encore plus performant que ce qu’on vient de voir.
Pour ce faire j’ai regroupé les commande de tout à l’heure plus gdal_retile pour générer une pyramide avec une reéchantillonnage bilineaire, sur 4 niveau, des dalles de 2048*2048 , des block de 256*256 dans un dossier bmpyramid
gdal_retile.py -v -r bilinear -levels 4 -ps 2048 2048 -co « TILED=YES » -co « COMPRESS=JPEG » -co « BLOCKXSIZE=256 » -co « BLOCKYSIZE=256 » -targetDir bmpyramid 1329_7218_3948.tif
gdal_retile
Comme vous pouvez le constater nous avons 4 niveaux et le reste c est le niveau “0”
pyramide
Construction d’un pyramide avec Geoserver
Un autre example
gdal_retile -v -ps 500 500 -s_srs EPSG:3948 -levels 7 -tileIndex 20cm_optimise.shp -tileIndexField tilename -targetDir « C:\FWTools2.4.7\geotif\pyramide\arrivee » « C:\FWTools2.4.7\geotif\pyramide\depart\20cm.tif »
gdal_retile 2
Tous les images en dehors des dossiers sont le niveau « 0 » . En important le dossier depuis Geoserver avec « imagepyramid » Geoserver va créer un dossier “0” pour regrouper ltous les images en dehors des dossiers.pyramide
pyramide 2
Il crée également des indexes spatiales et fichiers de projection pour chaque dossier.
Et enfin à la racine il crée un fichier de propriété qui fera le lien entre chaque dossier.
geoserver

4 commentaires Ajouter un commentaire

  1. catherine morales dit :

    super!! Abdou ça me sert cette année pour l’ortho2014 !
    Catherine

    1. ABDOU DIOUCK dit :

      Salut Catherine ca fait un bail je viens ts juste de déménager sur Nantes pour arrêter le train 🚃 . Un grand bonjour pour tout le monde. C était une sacré experience dans votre service.

  2. Catherin eMOrales dit :

    Salut Abdou,
    Te rappelles tu comment tu avais généré les dalles de l’ortho 2011 ? Es tu passé par l’assemblage de toutes les dalles avant le gdal_retile.py ?
    En effet en utilisant juste « gdal retile » sur des dalles de 10 000 * 10 000 pixels (originales) et en les redécoupant en blocs de 256*256 pixels j’ai des traits noirs qui apparaissent sur certains niveaux de la pyramide.
    Dis moi si on peut échanger par téléphone ou donne- moi une adresse mail. Si tu t’en souviens …
    Bon déménagement alors !A +
    Catherine

    1. ABDOU DIOUCK dit :

      Salut
      J’ai plus tout en tête mais j’avais assemblé les dalles en créant un fichier .vrt avant de construire la pyramide. Sinon j’avais aussi créer un document technique pour décrire les différentes étapes.
      Voici mon numéro à l’AURAN: 0240841418

Laisser un commentaire