Aller au contenu

Servir du WMS caché avec MapProxy - partie 2#

📆 Date de publication initiale : 30 avril 2026

Logo MapProxy

Voici la deuxième partie de l'article sur MapProxy, suite du premier lors duquel nous avons installé une instance qui sert quelques couches en WMS.

Voyons maintenant comment l'utiliser et l'optimiser !

Tester dans QGIS#

Ouvrons maintenant le logiciel Desktop numero uno, et créons une nouvelle connexion WMS, avec l'URL https://DOMAIN/mapproxy/service :

Écran de création d'une nouvelle connexion WMS dans QGIS

Les 4 couches définies sont listées une fois que nous sommes connecté/es :

Écran avec liste des couches WMS fournies par notre connexion WMS dans QGIS

Ouvrons la couche des Buildings de la Géoplateforme, tada 🎉 :

Affichage d'une couche de buildings de la Géoplateforme dans QGIS

Pré-cacher les zones configurées#

Comme tout bon serveur de cache tuilé, MapProxy vient avec un utilitaire, qui permet de pré-générer les tuiles dans le cache.

Pour cela, on a (encore) besoin de configurer un fichier seeds.yaml, qu'on dépose au même endroit que le mapproxy.yaml - dans le dossier config monté dans le container docker :

Contenu de config/seeds.yaml
seeds:
  paris19osm_seed:
    caches:
      - paris19osm_cache
    coverages:
      - paris19_coverage
    grids:
      - osm_grid
    levels:
      from: 8
      to: 18
    refresh_before:
      weeks: 4

cleanups:
  paris19osm_cleanup:
    caches:
      - paris19osm_cache
    levels:
      from: 0
      to: 20
    remove_before:
      weeks: 4

coverages:
  paris19_coverage:
    bbox:
      - 2.3646858891194782
      - 48.8720621793437502
      - 2.4108388540828618
      - 48.9021619064262865
    srs: EPSG:4326

Pour le seed paris19osm_seed, les tuiles correspondantes au niveaux de zoom de 8 à 18 seront générées avec une telle config. Aussi, toutes les tuiles mise en cache il y a plus de 4 semaines seront régénérées (clé remove_before). La doc montre toutes les options et configurations possibles.

Pour lancer une opération de seeding, voici la commande qui spécifie avec l'option --seed=x,y quel(s) seed(s) pré-générer :

$ docker compose exec -it mapproxy mapproxy-seed -s /mapproxy/seeds.yaml -f /mapproxy/mapproxy.yaml --seed=paris19osm_seed

========== Seeding tasks ==========
Start seeding process (1 task)
  paris19osm_seed:
    Seeding cache 'paris19osm_cache' with grid 'osm_grid' in EPSG:3857
    Limited to coverage in: 2.36469, 48.87206, 2.41084, 48.90216 (EPSG:4326)
    Levels: [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
    Overwriting: tiles older than 2025-11-03 11:51:25
[11:51:25]  8   0.00% 263235.62906, 6253180.83813, 268373.35362, 6258276.59247 (0 tiles)
[11:51:28] 17  18.75% 263235.62906, 6256829.38731, 263554.87353, 6257440.88354 (59 tiles)
[11:51:29] 17  21.88% 263554.87353, 6256829.38731, 264166.36975, 6257440.88354 (76 tiles)
[11:51:30] 17  29.69% 263554.87353, 6255606.39486, 264166.36975, 6256217.89109 (155 tiles)
[11:51:31] 17  35.94% 263554.87353, 6254383.40241, 264166.36975, 6254994.89863 (232 tiles)
[11:51:32] 17  46.88% 263554.87353, 6253180.83813, 264166.36975, 6253771.90618 (310 tiles)
[11:51:33] 16  56.25% 264166.36975, 6256829.38731, 265389.36221, 6258052.37976 (381 tiles)
[11:51:35] 17  58.59% 264777.86598, 6256829.38731, 265389.36221, 6257440.88354 (444 tiles)
[11:51:36] 17  61.72% 266000.85843, 6256829.38731, 266612.35466, 6257440.88354 (529 tiles)
[11:51:37] 17  69.53% 267223.85088, 6257440.88354, 267835.34711, 6258052.37976 (608 tiles)
[11:51:38] 16  71.88% 267835.34711, 6256829.38731, 268373.35362, 6258052.37976 (672 tiles)
[11:51:39] 17  75.78% 264166.36975, 6255606.39486, 264777.86598, 6256217.89109 (759 tiles)
[11:51:43] 17  76.95% 266000.85843, 6256217.89109, 266612.35466, 6256829.38731 (823 tiles)
[11:51:45] 17  78.52% 264777.86598, 6254994.89863, 265389.36221, 6255606.39486 (908 tiles)
[11:51:46] 16  79.69% 265389.36221, 6254383.40241, 266612.35466, 6255606.39486 (972 tiles)
[11:51:47] 17  80.86% 266000.85843, 6254383.40241, 266612.35466, 6254994.89863 (1035 tiles)
[11:51:48] 17  82.03% 266612.35466, 6255606.39486, 267223.85088, 6256217.89109 (1100 tiles)
[11:51:50] 17  82.42% 267223.85088, 6255606.39486, 267835.34711, 6256217.89109 (1121 tiles)
[11:51:51] 17  84.77% 267223.85088, 6254994.89863, 267835.34711, 6255606.39486 (1207 tiles)
[11:51:52] 17  86.72% 267835.34711, 6254383.40241, 268373.35362, 6254994.89863 (1292 tiles)
[11:51:53] 17  89.84% 264777.86598, 6253180.83813, 265389.36221, 6253771.90618 (1378 tiles)
[11:51:55] 17  92.97% 266000.85843, 6253180.83813, 266612.35466, 6253771.90618 (1463 tiles)
[11:51:56] 17  96.09% 267223.85088, 6253180.83813, 267835.34711, 6253771.90618 (1549 tiles)
[11:51:57]  8 100.00% 263235.62906, 6253180.83813, 268373.35362, 6258276.59247 (1621 tiles)

Une fois l'opération terminée, on se retrouve avec nos différents niveaux de zoom mis en cache, dans le dossier cache :

$ ls -l cache/paris19osm_cache_EPSG3857/

total 44
drwxr-xr-x 3 root root 4096 Dec 29 12:51 08
drwxr-xr-x 3 root root 4096 Dec 29 12:51 09
drwxr-xr-x 3 root root 4096 Dec 29 12:51 10
drwxr-xr-x 3 root root 4096 Dec 29 12:51 11
drwxr-xr-x 3 root root 4096 Dec 29 12:51 12
drwxr-xr-x 3 root root 4096 Dec 29 12:51 13
drwxr-xr-x 3 root root 4096 Dec 29 12:51 14
drwxr-xr-x 3 root root 4096 Dec 29 12:51 15
drwxr-xr-x 3 root root 4096 Dec 29 12:51 16
drwxr-xr-x 3 root root 4096 Dec 29 12:51 17
drwxr-xr-x 3 root root 4096 Dec 29 12:51 18

Info

L'utilitaire mapproxy-seed permet également de supprimer des tuiles du cache, déclarés via la clé cleanups dans le fichier seeds.yaml, et à supprimer via l'option --cleanup=x,y de l'outil mapproxy-seed.

Conclusion#

En conclusion, nous avons vu comment instancier un serveur MapProxy, qui comme son nom l'indique permet de jouer au proxy et mettre en cache des tuiles en provenance de un ou plusieurs serveurs cartographiques, et à destination de clients consommateurs de WMS.

J'attire l'attention sur l'utilisation des datasources qu'on peut être amenés à configurer et servir via MapProxy : important de lire etde s'informer des conditions d'utilisation avant de se lancer.

Et nous avons ici réalisé un setup rudimentaire, sans implémenter les requêtes WMS GetFeature et autres. Et généralement, en production il est toujours judicieux de décrire les flux servis avec des métadonnées.

À l'heure où éclosent des formats optimisés pour le cloud, comme COG, Zarr, etc. Et à une époque où les tuiles vectorielles prennent véritablement leur essor - d'ailleurs OpenStreetMap en sert maintenant sur son site principal, le format et les flux WMS ont-ils toujours leur place ? Ou la cèderont-ils à ces nouveaux formats, plus optimisés et moins ressourcivores en terme de stockage et bande passante ? J'imagine que l'avenir nous le dira.

Auteur·ice#

Guilhem ALLAMAN#

Portrait Guilhem Allaman

Je suis ingénieur informaticien. J'aime les ordinateurs. Mais ce que j'aime par-dessus tout (oh oui !), c'est itérer, et ce de manière agile, transverse et langoureuse, de bon matin, dès l'aube, à l'heure où blanchit le dashboard du sprint backlog.

Basé à Paris, j'ai commencé par le développement Java avant de découvrir les joies des SIG et de m'y spécialiser. Mon parcours m'a amené à travailler un certain temps dans les télécommunications au sens large, et avec des boîtes comme Oslandia, une filiale de Canal+ Afrique et OPENGIS.ch avec qui j'évolue désormais.

Je participe à Geotribu depuis début 2024, et mes contributions ici n'engagent que moi, me, myself and I.

Licence #

Ce contenu est sous licence Creative Commons International 4.0 BY-NC-SA, avec attribution et partage dans les mêmes conditions, sauf dans le cadre d'une utilisation commerciale.
Les médias d'illustration sont potentiellement soumis à d'autres conditions d'utilisation.

Réutiliser, citer l'article

Vous êtes autorisé(e) à :

  • Partager : copier, distribuer et communiquer le matériel par tous moyens et sous tous formats
  • Adapter : remixer, transformer et créer à partir du matériel pour toute utilisation, exceptée commerciale.

Citer cet article :

"Servir du WMS caché avec MapProxy - partie 2" publié par Guilhem ALLAMAN sur Geotribu PREVIEW - PR 1462 sous CC BY-NC-SA - Source : https://preview-pullrequest-1462--geotribu-preprod.netlify.app/articles/2026/2026-04-30_cacher_wms_avec_mapproxy_2/

Partager sur :

Commentaires

Afin de favoriser les échanges constructifs, merci de préférer le pseudonymat à l'anonymat. Pour rappel, l'adresse mail n'est pas exposée publiquement et sert principalement aux notifications de réponse. Les commentaires sont automatiquement republiés sur nos réseaux sociaux pour favoriser la discussion. Consulter la page sur la confidentialité et les données personnelles.
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.

Ce contenu est sous licence Beerware Pictogramme BeerWare