4.8.1 Définition du tuilage

Un moteur de tuilage est un composant permettant d’accélérer l’affichage d’une image sur un client cartographique par la prégénération de tuiles qui sont de petits bouts de l'image globale. Plutôt que de calculer l'image sur l'emprise demandée, le système va calculer les images sur une grille de manière à pouvoir les resservir plus tard. Geoserver ne gère pas directement le tuilage mais le délègue à un module préinstallé : GeoWebCache. (Note : l'équivalent pour MapServer est TileCache.)

4.8.2 Configuration du tuilage de la couche courdo

Nous allons constater les bénéfices du tuilage sur la couche courdo que nous avons configurée :

  1. Aller dans Layer preview (Prévisualisation) et sélectionner la couche courdo, vous pouvez constater qu'elle met plusieurs secondes à s'afficher.
  2. Zoomer sur la couche (bouton "+") et constater que l'image est affinée encore une fois au bout de quelques secondes
  3. Zoomer encore et se déplacer sur les parties non visibles, l'affichage est toujours très lent Note : au fur et à mesure que l'on zoome, l'affichage est plus rapide car il y a moins de lignes à afficher
  4. Revenir au zoom d'origine et cliquer sur "..." en haut à gauche afin de faire apparaître des options d'affichage, et changer l'option Tiling qui est positionnée à Single tile à Tiled. Constater que l'image est générée à nouveau, cela prend encore le même temps voire un peu plus.
  5. En zoomant, on s'aperçoit que l'affichage se fait par morceaux (les tuiles)
  6. Constater qu'en dézoomant/rezoomant sur ces deux niveaux de zoom, l'affichage est cette fois immédiat.
  7. En zoomant plus puis en se déplaçant, on constate que les tuiles de zoom plus grossier sont affichées le temps que les tuiles du niveau de zoom soient calculées puis envoyées.

Dans cette démonstration, le tuilage se fait en mémoire et au niveau de la session de prévisualisation (côté client). Si vous fermez la fenêtre, que vous revenez sur la prévisualisation de la couche et que vous sélectionnez à nouveau Tiling = Tiled, vous constaterez que les tuiles sont calculées à nouveau.

Pour que les couches soient cachées de manière globale et permanente, il faut aller dans la section Tile Caching > Tile Layers (Cache de tuile > Couches cachées) et vérifier que les couches sont bien cachées (colonne Enabled (Activer)).

4.8.3 Activation des services de tuilage

Comme nous l'avons dit, les tuiles sont générées par GeoWebCache qui a son propre point d'entrée : http://GEOSERVER_URL/gwc/service/wms?..., soit en l'occurence : http://localhost:8080/gwc/service/wms?.... Il peut être interrogé à travers différentes protocoles : WMTS, WMS-C, TMS.

L'activation de ces services se fait dans la section Caching Defaults (Paramètres GeoWebCache). Un service supplémentaire permet d'intégrer ce service dans le service WMS de Geoserver de manière transparente. Ce service n'est pas activé par défaut mais nous allons le faire. Il est intéressant, car WMS est mieux implémenté au niveau des clients SIG que WMTS et qu'il est plus simple d'utilisation.

Pour cela cocher la case Enable direct integration with GeoServer WMS (Activer l'intégration directe WMS). De cette manière toute requête WMS envoyée à Geoserver, du moment qu'elle contient le paramètre tiled=true, sera servie à travers GeoWebCache et le service renverra des tuiles plutôt qu'une seule image. Les clients OpenLayer Leaflet permettent de passer cet argument.

4.8.4 Requêtes tuilées de la couche courdo

Nous allons utiliser un exemple qui illustre l'utilisation des tuiles avec la couche courdo. Pour visualiser l'espace occupé par la génération des tuiles de cette couche taper dans un terminal :

watch -n1 'du -sh /tmp/tomcat8-tomcat8-tmp/geowebcache/anfsist_courdo/*'

La commande doit afficher :

Every 1.0s: du -sh /tmp/tomcat8-tomcat8-tmp/geowebcache/anfsist_courdo/*                                                        Thu Nov  2 16:15:24 2017

du: cannot access ‘du -sh /tmp/tomcat8-tomcat8-tmp/geowebcache/anfsist_courdo/*’: No such file or directory

Ce qui montre qu'aunce tuile n'a encore été générée pour cette couche. Cela est normal car même si l'option de cache est activée pour cette couche elle n'a encore jamais été interrogée en mode tuilée (WMTS ou WMS + tiled=true).

Dans un navigateur, ouvrir la page http://localhost:10080/tp_geoserver/anf_geoserver_wms_tiled.html. Attendre un petit moment car la page est longue à être générée. NB : nous avons recours à une page dédiée car la prévisualisation OpenLayers intégrée à Geoserver n'utilise pas les tuiles de Geoserver. La page Tile Layers (Couches Cachées) permet cependant de visualiser les couches cachées, mais vous devrez sélectionner un couple SRC / format d'image.

Vous pouvez ensuite zoomer et vous déplacer sur la carte. Vous constaterez la création des tuiles dans le terminal et qu'à force de naviguer dans la couche, son affichage va devenir de plus en plus rapide et fluide.

Au fur et à mesure que les tuiles seront crées vous aller voir les répertoires grossir, par exemple :

Every 1.0s: du -sh du -sh /tmp/tomcat8-tomcat8-tmp/geowebcache/anfsist_courdo/*                                                         Thu Nov  2 14:54:22 2017

76K     du -sh /tmp/tomcat8-tomcat8-tmp/geowebcache/anfsist_courdo/EPSG_900913_05
300K    du -sh /tmp/tomcat8-tomcat8-tmp/geowebcache/anfsist_courdo/EPSG_900913_06
1.2M    du -sh /tmp/tomcat8-tomcat8-tmp/geowebcache/anfsist_courdo/EPSG_900913_07

Les tuiles sont rangées par projection et par niveau de zoom, mais les formats d'images (PNG, JPEG, ...), qu'il est possible de préciser dans une requête WMS, ne sont pas dissociés.

Pour des raison de performances et de sécurité, il est aussi conseillé de limiter l'espace généré par les tuiles. Pour cela aller dans Disk quota (Espace en disque) pour régler l'espace maximal authorisé (par défaut à 500 Mo). Pour vérifier que cette limite fonctionne correctement, fixez la à une valeur volontairement basse (par ex : 10Mo) et constatez dans le terminal que certaines tuiles vont être supprimées.