MapFish Print - sous le capot
Andreas Jobst
Dans le dernier article de notre série sur l'impression de cartes en ligne, nous souhaitons faire la lumière sur l'état actuel de l'outil open source MapFish Print et donner un aperçu de ses fonctionnalités et des technologies qui font tourner l'application.
Écrit en Java, MapFish Print est une solution backend pour divers cas d'utilisation, allant de l'impression de cartes individuelles à la génération de rapports complexes. MapFish Print, dans sa version actuelle, 3.28.1, constitue l'une des solutions d'impression les plus complètes sur le web pouvant facilement être intégrée dans la plupart des WebSIG. Cette version 3.28.1 de MapFish Print, qui a fait l'objet de plusieurs corrections de bogues, s'appuie sur GeoTools pour l'intégration et le style des géodonnées, et sur JasperReports comme moteur de rapports. Le framework Spring facilite l’intégration de l’application et la rend facilement extensible pour de nouvelles fonctionnalités, tandis que GeoTools permet d'inclure des types de données supplémentaires, si nécessaire.
Pour s'assurer que MapFish Print puisse être exécuté de la meilleure manière, nous fournissons quatre façons différentes de déployer MapFish Print. À des fins de test, nous recommandons l’usage en ligne de commande, car elle est facile et rapide à utiliser. Pour l'exploitation, MapFish Print est généralement déployé sous forme de fichier war, ce qui permet un déploiement stable dans les environnements de servlets Java (par exemple, Tomcat). Nous proposons également des images docker pour intégrer MapFish Print à un environnement cloud (par exemple Kubernetes), particulièrement utile pour une meilleure scalabilité. Enfin, MapFish Print peut également être intégré dans un projet au niveau du code source, en tant que bibliothèque Java.
Afin de configurer la mise en page d'un rapport personnalisé, MapFish Print offre une flexibilité maximale via le fichier jrxml du rapport jasper (emplacement précis de tous les éléments cartographiques dans le rapport) et grâce aux paramètres (par exemple, largeur, hauteur, DPI, etc.) définis dans un fichier yaml stocké sur le serveur d'application. La demande d'impression est ensuite générée par le client sous la forme d'un objet JSON, et envoyée au serveur qui assure le rendu du PDF ou du PNG.
Le style des géodonnées est géré par GeoTools et utilise le format SLD (Styled Layer Descriptor), le schéma XML officiel pour le style des géodonnées publié par l'Open Geospatial Consortium (OGC).
L’utilisation d’un style JSON personnalisé, comparable au style utilisé par OpenLayers, est une autre option de style offerte par MapFish Print. Pour ces styles JSON, le formatage conditionnel est disponible, ce qui permet à l'utilisateur d'implémenter rapidement des règles pour styler différemment certaines parties des données.
En ce qui concerne les types de données, MapFish Print prend en charge un nombre croissant de types de données et de services de données couramment utilisés, couvrant à la fois les données vectorielles (GML, GeoJSON, WFS) et raster (tuiles XYZ telles que OSM, WMS, WMTS et GeoTIFF). Toute géodonnée qui se présente sous la forme d'un service cartographique (WFS ou WMS) peut être simplement intégrée dans le canevas cartographique du rapport en indiquant le service à consommer. Grâce à l'intégration de JasperReports Engine, il est également possible d'inclure des ensembles de données externes provenant d’autres bases de données.
Cette série sur l'impression de cartes sur le Web touche à sa fin et nous pouvons conclure en disant que MapFish Print est une solution complète pour générer des impressions de cartes simples ou des rapports complexes. Elle prend en charge la plupart des types de données géographiques couramment utilisés et offre un haut niveau de personnalisation.
Enfin, nous vous invitons à consulter la documentation (http://mapfish.github.io/mapfish-print-doc/) et le dépôt de code de MapFish Print, qui est également disponible publiquement sur Github (https://github.com/mapfish/mapfish-print).
Carrière
Vous souhaitez travailler dans un environnement inspirant et rejoindre nos équipes motivées et multiculturelles ?