Transmission de données pour la Web-carto : Google 4 fois plus rapide…

Pour transmettre des données géographiques, il existe le format WKT (Well know text)  ou son équivalent binaire WKB.

Le WKB consomme moins de bande passante que le WKT car les données transmises réduites, mais est incompréhensible pour le commun des mortels

Google et ses API n’utilisent pas ces formats, mais a créé un algorithme pour diminuer la taille des données transmises entre le serveurs et le client pour les types des polygones et lignes.

Ceci peut poser quelques problèmes… Par exemple, j’ai voulu utiliser l’API  rest ‘direction‘ afin de pouvoir intégrer un modeste calculateur d’itinéraire sur une application n’utilisant pas l’API google Maps pour l’affichage.  Je me suis donc retrouvé avec une géométrie ressemblant à ça:

qhivGyno\cKSa@iNgHb@oFNcDK

… ok… Je me suis donc renseigné un peu plus sur ce fameux algorithme destiné à réduire au minimum le volume des chaines de contenant  la géométrie.  Celui-ci est très bien documenté : https://developers.google.com/maps/documentation/utilities/polylinealgorithm?hl=fr

Il existe de nombreux scripts qui permettent de faire le chemin inverse. J’en ai d’ailleurs adapté un en AS3 générant un WKT bien plus lisible pour les autres logiciels et API…

Comparons donc ces différents formats pour un itinéraire Grenoble-Lyon

http://maps.googleapis.com/maps/api/directions/xml?origin=lyon&destination=paris&sensor=false

En WKT : 5124 octets

LINESTRING(5.72469 45.18838,5.72561 

WKB : 9778 octets en texte hexadécimal, mais (4915 octets en BLOB dans la bdd)

010200000031010000f5f3a62215e61640399cf

Encodage Google 1278 octets:

qhivGyno\cKSa@iNgHb@oFNcDK{So@

Ici, le format encodé à la façon google de ma polyligne est 4 fois plus petite que mon WKT. Moins de place sur les serveurs, moins de données transmises et plus rapidement !

A l’heure où les technologies du web permettent d’afficher de plus en plus de données vectorielles à travers un navigateur internet (webGL, canvas) et donc que le ‘dessin ‘ s’accélère  il serait peut être bon de prendre exemple sur google en ce qui concerne les méthodes d’encodage des données transmises pour de la web carto plus réactive…

Exemple d’un calculateur d’itinéraire  avec l’API Google : Format encodé à la Google vers du  WKT pour être affiché sous Openscales

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *