Rendu GPU @ jawg
Cela fait quelques mois maintenant que nous avons sorti les hillshades (reliefs) et landcovers (couverture du sol) via le jawg lab. Cependant, les hillshades étaient disponibles uniquement sur vos styles vectoriels. Maintenant ils le sont également dans vos styles raster !
Grâce au jawg lab, quand vous créez un style, il est disponible en raster et vectoriels. Cependant, nous avons eu quelques restrictions technologiques qui nous ont empêchées de fournir certaines fonctionnalités comme les hillshades dans nos styles raster. Dans cet article, je vais vous montrer ce que nous avons fait en réalité pour vous fournir vos cartes depuis le commencement.
La carte Jawg depuis le commencement
Jawg existe depuis 2016, nous avions commencé à fournir des cartes raster uniquement avec une liste réduite de styles (streets
, sunny
, light
, dark
...). Ces styles n'étaient pas configurables. Si nous avions un client qui voulait avoir son propre style, nous devions le développer puis mettre en ligne son style. Ces styles étaient produits en utilisant le langage MapCSS. Après avoir subi une transformation le style était exploité par mapnik un outil cartographique qui permet de générer de la donnée au format pdf
(un format vectoriel non stylisé) ou des images png
.
Quand nous avons sorti le lab en 2017, nous travaillions encore avec mapnik pour les tuiles png
et nous avions créé les styles vectoriels correspondants pour mapbox GL. Pour avoir une bonne concordance entre les styles vectoriels et styles rasters générés par le lab nous avions dû passer du temps pour générer les styles sous les deux formats en vérifiant qu'ils soient identiques.
Une grande limite de mapnik s'est faite sentir quand nous avons sorti les hillshades en 2018. Il était impossible pour nous d'intégrer les hillshades dans nos tuiles raster. Ceci a donc créé une différence notable pour les clients qui ajoutaient les hillshades à leurs styles et qui voulaient les utiliser en raster.
Le cas Liberty Rider
C'était typiquement le cas d'un de nos clients Liberty Rider (une application GPS qui détecte les accidents en deux-roues). Ils affichent des cartes statiques pour montrer des balades à moto. Dans leurs cas d'utilisation, l'affichage des reliefs rend les trajets plus intéressants et jolis.
Cette différence ajoutée à la charge de travail non négligeable pour la maintenance et les évolutions des styles raster et vectoriels, nous avons décidé de changer cela. C'est la raison pour laquelle nous avons travaillé sur l'intégration d'un nouvel outil open-source pour générer nos tuiles raster via un style vectoriel. Cet outil est basé sur le rendu GPU et utilise OpenGL.
Le GPU au service de la carte
Le rendu GPU effectue le même travail que fait votre ordinateur quand vous utilisez un style vectoriel. Vous téléchargez votre style, puis les tuiles pour faire votre carte. Ensuite, votre librairie va habiller ces tuiles pour les afficher sur votre page (et votre écran d'ordinateur).
Dans notre cas, tout se fait côté serveur. On va récupérer un style, puis la tuile vectorielle qu'on doit rendre, ensuite on habille cette tuile sur un écran virtuel avec le même mécanisme de votre librairie (qui utilise OpenGL et le GPU).
Cela a mis quelques mois de développement et d'optimisations avant de le mettre en place. Nous avons finalement réussi et il est enfin disponible !
Dans le but d'harmoniser notre offre, nous avons également décidé de remplacer nos anciens styles (streets
, sunny
...) par nos nouveaux qui sont gérés par le lab (jawg-streets
, jawg-sunny
...). Nos premiers clients ont donc eu la joie de voir nos nouveaux styles et les améliorations qu'on a pu faire. Bien entendu, les hillshades sont maintenant disponibles en raster également via le style jawg-terrain
!
Le rendu GPU nous ouvre les portes à pleins de possibilités. Nous avons encore plein d'idées pour toujours mieux vous servir et vous faciliter la vie dans le monde de la cartographie.
À bientôt sur le lab.