Guides

Normaliser des adresses mal saisies avant de les géocoder

Les champs d'adresse en texte libre recueillent toutes sortes d'habitudes de formatage : espaces superflus, majuscules incohérentes, abréviations développées de manière inégale et, parfois, un caractère parasite collé depuis ailleurs. Rien de tout cela ne fait nécessairement échouer une requête de géocodage, mais nettoyer la saisie au préalable améliore généralement la qualité des correspondances.

Ce qu'il faut nettoyer avant l'envoi

Supprimez les espaces en début et en fin de chaîne et réduisez les espaces répétés à un seul. Retirez les caractères de contrôle et la ponctuation parasite qui n'a manifestement rien à faire dans une adresse. Ne touchez pas au contenu réel de l'adresse, car l'endpoint de géocodage direct est conçu pour analyser du texte libre et n'a pas besoin que vous le découpiez vous-même en champs distincts de rue, de ville et de code postal.

GET /v1/forward?q=221b   baker st,  london&limit=1

L'endpoint résoudra généralement quand même une saisie peu formatée comme celle-ci, car il est conçu pour traiter du texte d'adresse réel plutôt qu'un modèle rigide, mais une chaîne plus propre réduit les risques de correspondance ambiguë ou de faible confiance sur des données réellement désordonnées.

Deuxième exemple : des abréviations laissées telles quelles

Une requête qui utilise des abréviations courantes, comme « St » pour « Street » ou « Ave » pour « Avenue », n'a pas besoin d'être développée avant l'envoi.

GET /v1/forward?q=500 5th Ave, New York&limit=1

Développer vous-même chaque abréviation avant d'envoyer la requête représente un travail supplémentaire qui change rarement le résultat, car l'endpoint gère déjà les abréviations standard lors de l'analyse d'un texte d'adresse ordinaire. Concentrez vos efforts de nettoyage sur les saisies réellement défectueuses, comme les sauts de ligne collés ou les artefacts d'encodage, plutôt que de réécrire des abréviations qui n'ont jamais posé problème.

Utiliser le paramètre countries pour affiner les résultats

Si vous savez déjà dans quel pays une adresse devrait se trouver, grâce à une adresse de facturation enregistrée ou à l'orientation régionale d'un site, transmettez-le avec le paramètre countries pour limiter les correspondances ambiguës avec des lieux portant un nom similaire ailleurs dans le monde.

GET /v1/forward?q=Springfield Main Street&countries=US&limit=3

Une erreur à éviter

Trop nettoyer une adresse en supprimant tout ce qui semble inhabituel peut retirer des informations dont le géocodeur avait réellement besoin. Un numéro d'appartement ou de logement, une indication d'étage ou un nom de bâtiment accolé à une adresse postale est un contenu significatif et non du bruit, même s'il ne ressemble pas au reste de l'adresse. Limitez votre nettoyage aux espaces, à l'encodage et aux caractères manifestement parasites, et laissez intact tout ce qui pourrait plausiblement faire partie de l'adresse.

Vérifier la confiance après coup

La normalisation réduit les mauvaises correspondances, elle ne les élimine pas entièrement. Vérifiez toujours le champ de confiance du résultat plutôt que de supposer qu'un résultat renvoyé est automatiquement correct simplement parce que la requête a abouti.

Le coût de la requête reste le même

Nettoyer la chaîne saisie avant de l'envoyer ne change pas le nombre de requêtes que coûte la recherche : c'est toujours une requête par adresse. Ce qui change, ce sont les chances que la requête envoyée renvoie un résultat utile, plutôt que de nécessiter une seconde tentative corrigée qui coûterait une seconde requête.

Bien normaliser dès le départ signifie moins de recherches gaspillées et des données plus propres en aval. Consultez la documentation du géocodage direct pour l'ensemble des paramètres pris en charge, y compris countries et limit.