Aller au contenu

Open Location Code

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 16 août 2020 à 15:14 et modifiée en dernier par DC2 (discuter | contributions) (Spécifications : orthographe). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
Open Location Code
Description de l'image Plus Codes Logo.svg.

Informations
Dépôt github.com/google/open-location-codeVoir et modifier les données sur Wikidata
Langues Pas de contenu linguistique (en)Voir et modifier les données sur Wikidata
Type Algorithme
Caractéristique technique (d)
Geocode system (d)Voir et modifier les données sur Wikidata
Licence Licence Apache 2.0Voir et modifier les données sur Wikidata
Site web plus.codesVoir et modifier les données sur Wikidata

L'Open Location Code est un système de géocodage permettant d'identifier une zone n'importe où sur Terre à l'aide d'un code alphanumérique de la forme :

AA BB CC DD + EE F G H ...[1]

Chaque doublet du début fonctionne comme les coordonnées d'une grille de bataille navale et désigne une zone particulière de coordonnées géographiques. À chaque ajout d'un doublet, on améliore la précision en dessinant une nouvelle grille 20 fois plus petite à l'intérieur de la case précédente. Si une précision plus grande est désirée, on peut alors ajouté des caractères un à un selon une autre découpe.

La grille la plus large désigne des blocs de près de 2 000 km de côté en seulement 2 caractères. Tandis qu'un code de 10 caractères désigne une zone d'environ 13 mètres de côté (permettant de localiser une maison).

Aperçu

Disposition des blocs à 2 caractères

La grille la plus large couvre le monde entier (un seul doublet). En contrepartie, sa précision est faible : les mailles de la grille couvre des zones de 20° de large (soit près de 2 000 km).[2]


L'origine de la grille (le premier carré) débute au Sud-Ouest et augmente en allant vers le Nord-Est (du coin en bas à gauche vers la droite et le haut). Ainsi, l'origine des coordonnées géographiques (longitude 0°; latitude 0°) correspond au milieu des zones 6C et 6F.

Origine

Ce codage OLC a été développé au bureau d'ingénierie de Google à Zurich, et a été publié fin . Il est donc connu en détails. Les codes qu'il génère sont appelés "codes plus" par Google.

Le code d'emplacement ouvert (ou OLC) est un moyen plus facile à utiliser que des coordonnées numériques habituelles, dites GPS, sous forme de latitude et de longitude. Les codes Plus sont conçus pour remplacer des adresses et sont particulièrement utiles dans les endroits où il n'y a pas de système formel d'identification des bâtiments ou des rues (il n'y a pas partout un numéro de maison et un codes postal).

Les codes Plus sont dérivés, via un algorithme, des coordonnées GPS, ils existent donc déjà partout. Ils sont de longueur similaire à un numéro de téléphone (849VCWC8+R9 par exemple). Les emplacements proches les uns des autres ont des codes similaires. Ils peuvent être encodés ou décodés facilement sans base de données et sans internet.

Le jeu de caractères évite les risques d'erreur en éliminant les caractères similaires, pour réduire toute confusion. On supprime aussi les voyelles pour rendre improbable qu'un code épelle des mots existants. Les codes Plus ne sont pas sensibles à la casse et peuvent donc être facilement échangés par téléphone.

Depuis , Google Maps prend en charge les codes plus dans son moteur de recherche.

L'algorithme de codage/décodage est sous licence Apache License 2.0 et disponible sur GitHub.

Google déclare que les codes Plus sont acceptés comme adresses postales au Cap-Vert, dans certaines parties de Calcutta et par la nation Navajo.

Spécifications

Le système Open Location Code est basé sur des coordonnées WGS 84. Chaque code décrit une zone délimitée par deux parallèles et deux méridiens dans une grille fixe, identifiée par la position de son coin sud-ouest et sa taille. La plus grande grille a des carrés de 20 degrés par 20 degrés (9 lignes et 18 colonnes pour couvrir les 180° et 360° du globe). On peut diviser jusqu'à quatre fois de suite un des carrés en une nouvelle grille plus petite de 20×20 sous-blocs. Puis à partir de ce niveau, la division se fait autrement, par une nouvelle grille de 5 lignes et 4 colonnes mais autant de fois que nécessaire, sans limite absolue.

La taille réelle de chaque carré dépend de l'endroit où il se situe sur le globe (puisqu'on découpe des angles et non des distances la largeur d'un bloc diminue en s'éloignant de l'équateur). Le tableau suivant montre la taille maximale (donc près de l'équateur) de chaque niveau de précision. Ce tableau permet aussi en sens inverse de convertir un code Plus vers des coordonnées GPS.

Nombre de doublets 1 2 3 4 + 5 +1car
nombre de caractères 2 4 6 8 + 10 11
Dimension du bloc 20 ° 1 ° 0,05 ° (3′) 0,0025 ° (9″) 0,000125 ° (0,45″)
Approximativement 2200 km 110 km 5,5 km 275 m 14 m 3,5 m

La grille OLC a pour origine le pôle Sud (–90°) et l'antiméridien (–180°). L'alphabet utilise 20 caractères ce qui revient à utiliser une numération mathématique en base 20. Pour éviter de mal orthographier une adresse voici l'alphabet retenu, excluant les voyelles et les symboles proches :

Valeur décimale 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Code en base20 2 3 4 5 6 7 8 9 C F G H J M P Q R V W X

Un code OLC commence par des paires de caractères, jusqu'à 5 paires maximum. Chacune composée d'un caractère représentant la latitude et un second représentant la longitude.

Juste après le 8e caractère, un signe plus "+" est inséré dans le code comme délimiteur pour faciliter l'analyse visuelle. Il est optionnel d'ajouter d'autres caractères par la suite. Du moins si on souhaite continuer à détailler et gagner en précision. Mais on peut n'ajouter qu'un dernier doublet. Comme déjà dit, la grille change par la suite...

Au delà de 10 caractères (ou 11 en comptant le symbole "+"), chaque nouvelle subdivision est codée sur un seul caractère, un simplet, définissant une position dans une nouvelle grille 5×4 comme suit :

longitude →
latitude R V W X
J M P Q
C F G H
6 7 8 9
2 3 4 5


Si au contraire on ne souhaite pas être aussi précis, mais qu'on désire ne définir qu'une zone large sur le globe, c'est à dire en utilisant moins de 8 caractères, on doit compléter par des zéros jusqu'au symbole plus "+" (et ne rien mettre après). Ce qui permet dans tous les cas de comprendre que l'on a bien un code Plus. Exemple, au lieu de 849VCWC8+R9 (qui désigne une zone précise, un amphithéâtre sur le campus de Google) on peut indiquer 84000000+ (une zone très large, toute la côte ouest américaine et une bonne partie de l'océan). Ou disons juste une région : 849V0000+ ... allant de San Francisco à San José.

Quand le code est utilisé dans les environs immédiats, on peut le raccourcir en précisant la ville. Exemple "CWC8+R9 Mountain View" au lieu de "849VCWC8+R9" en retirant donc ici les 4 premiers caractères. Mieux vaut éviter ce genre de raccourci à l'international. Par exemple il existe une ville Paris aux États-Unis (au Texas), mais la plus célèbre est la capitale de France. On peut donc désigner la (vraie) tour Eiffel par V75V+9Q Paris si on n'habite pas au Texas, aussi bien qu'avec le code complet 8FW4V75V+9Q.

Exemple

Le tableau ci-dessous détaille les étapes de calcul permettant de passer de coordonnées géographiques (latitude et longitude) au code open location, d'une maille à la suivante.

Exemple : Latitude 48,85892 N, Longitude 2,29411 E (un banc au bas de la tour Eiffel)

N° de paire N° de car. taille maille N-1 limite sud ou ouest limite nord ou est Lat. ou Lon. (zéro décalé) Taille maille N mailles à parcourir (division) Partie entière caractère associé Reste à diviser code Code Plus Aperçu
1 1 Monde -90° +90° 138,85892° 20° 6,942946 6 8 0,942946 8F000000+
2 Monde -180° +180° 182,29411° 20° 9,114706 9 F 0,114705
2 3 20° 30° 50° 18,85892° 18,85892 18 W 0,858920 8FW40000+
4 20° 20° 2,29411° 2,29411 2 4 0,294110
3 5 48° 49° 0,85892° 1/20e ° 17,1784 17 V 0,178400 8FW4V700+
6 0,29411° 1/20e ° 5,8822 5 7 0,882200
4 7 1/20e ° 48,85° 48,90° 0,00892° 1/400e ° 3,568 3 5 0,568000 8FW4V75V+
8 1/20e ° 2,25° 2,30° 0,04411° 1/400e ° 17,644 17 V 0,644000
5 9 1/400e ° 48,8575° 48,8600° 0,00142° 1/8000e ° 11,36 11 H 0,360000 8FW4V75V+HJ
10 1/400e ° 2,2925° 2,2950° 0,00161° 1/8000e ° 12,88 12 J 0,880000

fin des doublets, par la suite des caractères uniques (simplets)...

× 11 1/8000e ° 48,858875° 48,859° 0,000045° 1/40000e ° 1,80 1 8FW4V75V+HJ9
1/8000e ° 2,294000° 2,294125° 0,000110° 1/32000e ° 3,52 3 9

À ce niveau de résolution (11 caractères pour 2,8 × 3,5 m), il est donc possible de distinguer un simple banc.

Autre méthode

Plutôt que de procéder étape par étape, comme on le ferait à la main, il est bien sûr plus rapide de calculer directement les éléments du code pour un algorithme. De plus chaque découpe se fait en 20 éléments, qui correspond à une conversion en base 20.

Pour le même exemple que ci-dessus :

Latitude 48,85892 N Longitude 2,29411 E

On exprime ces valeurs par rapport à l'origine Sud (-90) et Ouest (-180) :

Latitude 138,85892 Longitude 182,29411

et on les convertit en 1/8000e de degré (la précision du 5e doublet de caractères) :

Latitude 1110871,36 Longitude 1458352,88

Reste à convertir ces valeurs en base 20[3], en respectant l'alphabet du protocole (23456789CFGHJMPQRVWX)

Latitude 8WV5H.96 Longitude F47VJ.VJ

Le code final s'obtient en intercalant les parties entières des codes de latitude et longitude, soit :

8F W4 V7 5V HJ

noté "8FW4V75V+HJ" dans la forme adoptée par Google.

Références

  1. « How it works », sur plus.codes (consulté le )
  2. « Plus Code Grid Service », sur grid.plus.codes (consulté le )
  3. Utiliser par exemple le convertisseur, « Base converter »