Les composants logiciels d’une fonctionnalité de cartographie vectorielle
- Posted by LivingObjects
Les composants logiciels d’une fonctionnalité de cartographie vectorielle
Un dessin vaut 1000 mots aurait dit Confucius. Mais savait-il qu’en passant la souris sur le dessin, il s’enrichissait de nouvelles informations ? Les images vectorielles permettent ce prodige.
Une carte nous est bien utile pour planifier notre prochain week-end à la campagne, mais c’est aussi un outil ultra efficace pour étudier un problème. La carte n’est pas la lente immersion proustienne dans la sensation du temps qui s’écoule. Elle éclaire rapidement un problème qui se pose.
C’est également le cas en analyse de performance de réseaux d’opérateurs. Voici quelques exemples issus de notre quotidien :
- La propagation des signaux radio 2G/3G/4G/5G est contrainte par l’environnement (relief et densité de l’habitat) et la bande de fréquence utilisée : Un signal se propage moins bien en milieu dense urbain et un signal 1800 se propage moins loin qu’un signal 900. La carte est le meilleure outil pour visualiser, comprendre et optimiser un réseau radio.
- Sur un réseau d’opérateur, la donnée est transportée par un réseau de transmission en cascade. Lors d’incidents majeurs liés à des conditions climatiques extrêmes, la visualisation des nœuds sur une carte permet de prioriser les interventions sur le terrain en rétablissant les nœuds les plus importants.
- La consolidation des plaintes clients sur une carte permet de challenger le modèle de propagation théorique et de prioriser les actions d’optimisation du réseau.
Une fois ca dit, le problème technique qui se pose est le stockage et la manipulation de ressources rapidement volumineuses en terme d’octets et de capacité de traitement.
Les conditions du format vectoriel
L’image captée et rendue par un appareil numérique est une matrice de points (bitmap en anglais) portant chacun une couleur. Chaque point coloré est appelé pixel pour Picture Element. Si la grille est suffisamment fine, l’œil n’arrive pas à les distinguer. Il capte uniquement la synthèse de leurs couleurs.
C’est la juxtaposition (et non la superposition) de leurs couleurs, chacune issue d’une palette finie, qui donne à chaque zone une nuance particulière.
C’est un procédé connu depuis plusieurs siècles et que les peintres impressionnistes ou pointillistes ont utilisé pour produire leurs plus belles œuvres.
La qualité de l’image perçue par notre œil dépend donc de la densité de points sur l’image, en fonction de la distance d’observation. Cette propriété a entraîné une course aux résolutions de plus en plus grande. On en connaît la conséquence : le poids de chaque image est de plus en plus lourd, jusqu’à 4 MO pour les images HD.
Or, il n’est pas toujours nécessaire de définir, stocker et manipuler une image en utilisant une matrice de points. Par exemple si l’image est constituée d’un fond blanc et d’une ligne rouge traversant l’écran, il suffit de stocker les coordonnées du premier et du dernier point de la ligne et d’en définir sa largeur.
C’est le principe de l’image vectorielle : les composants de l’image sont pour la plupart réductibles à des lignes et polygones, et quand ce n’est vraiment pas possible, il reste les points.
Tous les composants de l’image sont stockées et manipulées en base de données sous ces formes géométriques unitaires. L’image ne sera transformée en format bitmap qu’au dernier moment pour la rendre exploitable par la carte graphique. Cette transformation est réalisée par les logiciels natifs de dessin industriel ou par le navigateur dans le cas d’une web-app.
Les avantages du format vectoriel
Pour notre usage, le format vectoriel s’est naturellement imposé dans la conception de nos fonctionnalités car les objets manipulés sont réductibles à des formes géométriques. Les gains en rapidité de calcul et confort visuel ont été spectaculaires.
Côté confort d’utilisation :
- Dans le cas du format vectoriel, le serveur transmet un ensemble de polygones élémentaires que le navigateur utilise pour fabriquer à la volée une image. La conséquence est immédiate : l’image s’adapte à la résolution d’affichage et reste nette quel que soit le niveau de zoom : une ligne reste une ligne et non pas un objet rectiligne au contour flou.
Au contraire, si la source de données est une image bitmap d’une résolution correcte de 72 dpi (72 pixels par pouce), et que vous zoomez à 300%, la source de données ne produira plus que 24 (72/3) points par pouce. Si l’écran a une résolution de 100 dpi, 4 points contigus (100/24) de même couleur seront utilisés pour représenter un seul point de l’image, d’où cet effet de « pixellisation ».
- L’autre avantage du format vectoriel est de pouvoir associer une forme élémentaire à des attributs. Ces attributs seront rendus disponibles à l’utilisateur au survol de la forme (le nom d’une ville, le type d’équipement, son état de fonctionnement) ou seront proposés pour personnaliser la visualisation (par exemple un rendu plus sombre pour des écrans de supervision 3X8).
Côté traitement :
- La composition de l’image étant basée sur des formes simples, le stockage sera dans l’énorme majorité des cas beaucoup plus léger. Cela réduit la bande passante nécessaire pour transférer les données et le téléchargement est plus rapide côté utilisateur.
- Les données ne sont plus stockées sous forme de fichiers indépendants, mais en base de données. Lorsqu’il s’agit de résoudre des questions métiers comme « Quelles sont les zones d’interférences radio sur ma zone de responsabilité », il ne s’agit plus d’ouvrir quelques centaines de fichiers shape, d’analyser leur contenu grâce à des scripts, puis de faire tourner l’algorithme souhaité. Le traitement est réalisé dans un unique lieu de stockage. La manipulation des polygones est rapide et autorise des traitements complexes à la volée sans une puissance machine astronomique.
Les limites du format vectoriel
Lorsqu’on utilise le format vectoriel pour réaliser des fonctionnalités cartographiques, la visualisation par couches successives, est le même procédé que celui utilisé pour les cartes stockées en mode matriciel (format Raster). On constate ce fonctionnement analogue lorsqu’on zoome sur Google-Maps en version plan (vectoriel) ou satellite (raster), avec un temps de latence plus important pour le format satellite.
La carte est découpée en zones, appelées tuiles. Les tuiles peuvent être mises en cache, et permettent de naviguer dans des cartes très grandes, avec fluidité. Chaque tuile correspond à un niveau de zoom. Dans le cas du format raster, il permet de limiter l’effet pixellisation lorsqu’on zoome sur l’image en chargeant une nouvelle tuile. Dans le cas du format vectoriel, il permet de rajouter des détails lorsque ils sont disponibles et nécessaires.
Il existe cependant deux limitations à l’utilisation du format vectoriel :
- Il ne peut s’appliquer à des images nécessitant un effet de matière. Les terrains herbeux ou les effets de roches et de neige en montagne en sont des exemples. On a tous connu le basculement sur « vision satellite » une fois localisé le gite de nos rêves, pour se rendre compte de la végétation aux alentours.
- La génération de l’image se faisant côté utilisateur, elle n’a été possible qu’avec l’évolution des navigateurs depuis 4/5 ans. En clair, si vous souhaitez une appli carto un peu évoluée, oubliez IE9. Et si vos calculs commencent à devenir lourd du coté client, mieux vaut envisager des prétraitements coté serveur.
Exemple d’architecture
Les composants logiciels pour réaliser une web-app de cartographie sont :
- La base de données pour stocker les éléments unitaires composant les tuiles (formes et attributs).
- Le webserver en intermédiaire entre la base de données et le client navigateur.
- Le plugin qui permet le rendu cartographique dans un navigateur (gestion des tuiles, rotation, zoom, style, affichage des attributs, …).
Nos choix de librairies :
- Post GIS comme base de données car elle contient nativement les fonctions élémentaires de manipulation des polygones, comme la vérification d’intégrité (Est ce que la forme élémentaire est bien un polygone ?), les intersection ou les jointures entre les formes. L’implémentation des algorithmes liés à notre spécificité métier. Par conséquent, l’implémentation est moins complexe.
- T-Rex pour sa performance, notamment dans les fonctionnalités de gestion de graphes. Il reçoit du navigateur les demandes de visualisation de zones caractérisées par des coordonnées (x, y, z), sélectionne les tuiles adaptées et renvoie la réponse après les traitements métiers adéquates.
- MapBoxGL pour la richesse de sa librairie de style et pour la fluidité lors de l’affichage.
Il est souvent nécessaire d’utiliser une boite à outil pour homogénéiser les couches de tuiles disponibles pour réaliser différents fonds de cartes (geojson, shape ou vectoriel). La suite d’outil GDAL le permet simplement.
Une fois l’architecture mise en place, d’autres subtilités surgissent. Il faut notamment maîtriser les translations d’un système de projection à un autre. Ces systèmes ne sont pas homogènes d’une source de données à l’autre, et MapBoxGL contraint à produire des coordonnées en projection Mercator….
… mais ça fera l’objet d’un autre post !!
Références :
Outil de conversion des formats de données cartographiques : https://gdal.org/programs/ogr2ogr.html
Serveur de tuile vectorielle open-source : https://t-rex.tileserver.ch/
Et pour se donner une idée du fonctionnement des tuiles : https://www.maptiler.com/google-maps-coordinates-tile-bounds-projection
0 comments on Les composants logiciels d’une fonctionnalité de cartographie vectorielle