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