Stratégies de géocodage avec l’API Google Maps

J’ai eu besoin, récemment, d’identifier les différentes manières d’utiliser l’API Google Maps pour effectuer des géocodages. Je n’ai rien trouvé à ce sujet en français, aussi ce qui suit est une adaptation rapide et très elliptique de la page Geocoding Strategies écrite en juin 2010 par Mano Marks membre de la Google Geo APIs Team.

Introduction

Le géocodage est l’opération qui consiste à convertir une adresse en coordonnées géographiques. L’API Google Maps permet de réaliser cette opération de deux façons :

  • depuis le poste client, suite à une action de sa part (par exemple, renseigner un formulaire d’adresse et le soumettre pour afficher la carte correspondante)
  • directement depuis le serveur
Flux de réponse (JSON)

La requête qui permet de générer le flux capturé ci-dessus http://maps.googleapis.com/maps/api/geocode/xml?address=place+bastille+paris&sensor=false.

Les quotas

Dans sa version gratuite, et directement appelée depuis le serveur l’API autorise 2500 géocodages par jour et par adresse IP. Par ailleurs, une fréquence d’appels trop élevée peut conduire à un blocage.

Dans le cas où elle est appelée depuis le poste client elle est limitée en nombre par session. Choisir cette option revient à distribuer la charge sur l’ensemble des utilisateurs, et supprime virtuellement toute limite puisqu’elle croît avec le nombre d’utilisateurs.

Pour bénéficier de quotas plus élevés, rattachés à votre identifiant client, ainsi que d’un engagement sur la qualité de service, il est nécessaire de souscrire un abonnement au service Maps Premier API.

Le cache

Il est possible de conserver en cache des coordonnées géographiques. Cela a du sens si la même adresse est fréquemment utilisée. Cela dit, il y a tout de même deux restrictions :

  • Les ToS de l’API n’autorisent la réutilisation de ces coordonnées que sur Google Maps ou Google Earth.
  • La précision des données s’améliore constamment, aussi il est recommandé par Google de rafraichir le cache périodiquement pour bénéficier de ce gain de qualité.

Dans quel cas utiliser le géocodage depuis le poste client ?

La réponse de base est « presque toujours ». Cela permet de contourner la limitation de 2 500 géocodages par jour : étant donné que les appels sont répartis sur les IP des clients et qu’il est relativement improbable qu’un client seul atteigne cette limite.

Attention, il n’est pas rare que sur les réseaux mobiles l’adresse IP soit partagée par de nombreux téléphones. Cela peut poser problème en cas de géocodage côté client.

Dans quel cas utiliser le géocodage depuis le serveur ?

Le géocodage depuis le serveur est recommandé dans le cas où il n’y a pas de saisie par le client. Cela est souvent le cas lorsque vous devez géocoder une base de données d’adresses, ou un ensemble délimité, fini, d’éléments.
Attention tout de même, dans certains cas une IP unique peut être partagée par plusieurs utilisateurs : c’est le cas en général des mobiles, et des applications hébergées dans le nuage.

Conclusion

Implémenter le géocodage depuis le poste client ainsi qu’un mécanisme de cache devrait répondre à tous vos besoins. Attention dans le cas d’une implémentation du géocodage exclusivement depuis le serveur, le risque d’atteindre des problèmes de quota est grand. Dans ce cas, il faut considérer une licence API Premier.

Avez-vous des conseils ou un retour d’expérience à donner à ce sujet ?

Laisser un commentaire

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

Notifiez-moi les commentaires à venir via email. Vous pouvez aussi vous abonner sans commenter.