Pendant mon stage d'Espéranto, j'ai rencontré Patrick Ségur, fondateur de Geoloko, un nouveau système de localisation.
On a beaucoup discuté et je lui ai proposé de faire un article sur Geoloko sur mon blog.
Vous trouverez le principe complet illustré sur la page d'explication de Geoloko. (Note pour Patrick : la définition des images sur le site est vraiment pas top, je suggère d'utiliser des images PNG ou des JPG sans pertes)
Pour résumer, on remplace les coordonnées latitude/longitude par un seul code qui définit une région rectangulaire.
Pour faire son code Geoloko, on part du méridien de Greenwich qui coupe la terre en deux. À l'ouest, on mets un signe négatif (-), à l'est un signe positif (+).
Ensuite, on coupe la région en 9 (3x3), ce qui donne le premier chiffre. On coupe encore la région en 9, ce qui nous donne le deuxième chiffre, etc. Après le premier chiffre (signé), on mets un point, puis on mets un point à chaque groupe de 4, ce qui donne un code du type : -S.GHIJ.WXYZ .
Voici mon idée (accroche-toi, Patrick ! ;) ).
Geoloko est sûrement amené à aller sur des appareils sans beaucoup de
mémoire.
De plus, c'est un code qui doit être utilisé par des humains.
On doit donc faire un code le plus concis possible, mais aussi lisible.
Comment faire un code le plus concis possible ? Si on veut numéroter les plus de 5000 milliards de zones de bases, il est nécessaire de coder l'information sur 43 bits (2^42 < 5000 milliards < 2^43)
Malheureusement, le code obtenu n'est pas lisible du tout : c'est un chiffre entre 1 et 5000 milliards.
Le code Geoloko est fait pour être lu de gauche à droite. Au fur et à mesure de la lecture, le code est de plus en plus précis.
Dans le système Geoloko classique, à chaque nouveau caractère,
on «zoome» sur 1/9 de la surface restante.
Chaque caractère prend les valeur 1 à 9, ce qui doit être codé sur 4 bits (2^3 < 9 < 2^4).
On utilise donc 4 bits pour enlever 8/9 de la surface restante.
Le GOB optimise ce rapport.
En effet, au lieu de découper en 9, on découpe en 4 (Nord/Sud, Est/Ouest).
Avec 2 bits, on «zoome» sur 1/4 de la surface restante (on en enlève 3/4). Si on utilise 4 bits (découpage en 16), on enlève donc 15/16 de la carte. On numérote alors les zones de 0 à 9 et de A(=10) à F(=15). NONO = 0000 = 0, NONE = 0001 = 1, NOSO = 0010 = 2, ..., NENO = 0100 = 4, ..., SOSE = 1011 = B, ..., SESE = 1111 = F.
A chaque caractère, GOB divise la zone par 16. Le Geoloko traditionnel fait 5000 milliard de division en 13 caractères (+ 1 signe). GOB permet d'arriver au même degré de précision en 11 caractères. Pour un Geocode de 12 caractères, on peut même avoir un GOB de 10 caractères seulement.
GOB est optimal : à chaque bit d'information supplémentaire, une moitié de la surface restante est éliminée.
De plus, on peut moduler bit par bit : précision de 2 octets + 2 bits si on veut 2^12 = 4096 zones. Avec Geoloko, c'est soit 1458, soit 13122 zones.
Par rapport au code Geoloko, GOB utilise les lettres A à F pour coder plus d'informations par caractères sans pénaliser la place mémoire utilisée.
D'un naturel joyeux, positif et curieux, je m'intéresse à beaucoup de choses parmi lesquels la salsa, l'espéranto, la plongée mais surtout l'informatique, le web et Linux (Mandriva).
Même si j'aime programmer, je m'intéresse également aux aspects d'ergonomie, de design et de marketing.
Je suis actuellement développeur firmware chez Neotion. Pour savoir comment j'en suis arrivé là, il y a mon CV.
M'écrire : olivier+blog@faurax.fr
Retrouvez-moi sur Facebook, Friendfeed, Identi.ca et Twitter.
