Comparación entre la validación de direcciones y la geocodificación

Objetivo

A menudo, necesitas validar la ubicación de un lugar. Hay algunos servicios diferentes en Google Maps Platform que pueden ayudarte con este caso de uso. Este documento te ayuda a elegir entre los dos servicios principales de validación de ubicaciones: la API de Address Validation y la API de Geocoding.

La API de Address Validation es una oferta de Google Maps Platform que ayuda a los clientes a validar si una dirección es precisa o no.

La geocodificación con la API de Geocoding es el proceso que convierte direcciones en coordenadas geográficas, que puedes usar para colocar marcadores en un mapa o una posición en el mapa.

Aquí puedes encontrar una descripción general de las diferencias entre la API de Address Validation y la API de Geocoding.

Cuándo elegir la API de Address Validation en lugar de la API de Geocoding

Address-Validation-vs-Geocoding

Notas sobre el diagrama de flujo anterior:

  • El caso de uso de interacción del usuario se refiere a cuando un usuario está presente para interactuar con los resultados.
  • Places Autocomplete es una API de JavaScript, por lo que es adecuada para integrarla con interfaces de usuario.
  • Es posible que conozcas los problemas de calidad de los datos en tus direcciones existentes. Por lo tanto, aunque solo quieras geocódigos, es recomendable que ejecutes esas ubicaciones a través de la API de Address Validation para corregir los conjuntos de datos.

Existen muchas situaciones en las que, según el árbol de decisión anterior, podrías elegir un producto en lugar de otro. Sin embargo, en otras situaciones, es posible que debas usar ambos productos para alcanzar tus objetivos.

Puedes optar por usar la API de Address Validation en lugar de la API de Geocoding en los siguientes casos:

  • Hay una alta probabilidad de que los datos sean cuestionables o de que obtener una dirección incorrecta tenga un impacto negativo en el futuro. Esto se debe a que la API de Address Validation proporciona más comentarios sobre por qué una entrada no recibió un resultado de alta precisión.
  • Debes corregir las entradas del usuario (p.ej., errores ortográficos o campos faltantes), lo que aumenta la probabilidad de obtener un resultado preciso en el resultado.
  • Tu región de destino devuelve más metadatos de la API de Address Validation en comparación con la API de Geocoding, como la clasificación del tipo de edificio como residencial o comercial.

Puedes optar por usar Geocoding en lugar de la API de Address Validation en los siguientes casos:

  • Tu objetivo principal es recuperar la ubicación de una dirección, y la exactitud de las direcciones individuales puede no ser fundamental.
    • Por ejemplo, es posible que quieras generar un mapa de calor a partir de un conjunto de datos grande.
  • Necesitas detalles de destinos hiperlocales, como entradas de edificios, contornos de edificios o puntos de navegación de retiro y entrega (disponibles con el método SearchDestinations en la versión 4 de la API de Geocoding).
  • Necesitas una solución global y la API de Address Validation no está disponible en todas las regiones de destino.

A continuación, se muestran algunos ejemplos que demuestran las capacidades de la API de Address Validation en comparación con la API de Geocoding.

Ejemplo de dirección no válida

1 Fake St, Mountain View, CA 94043, EE.UU.

La API de Address Validation desglosa esta entrada en sus componentes de dirección individuales (calle, ciudad, estado, etcétera). También puede proporcionar comentarios detallados sobre por qué la dirección no es válida hasta un nivel de PREMISE.

Fake St no existe en Mountain View, California, y la API de Address Validation lo refleja en los detalles que se muestran a nivel de componente:

{
  "componentName": {
    "text": "Fake St",
    "languageCode": "en"
   },
   "componentType": "route",
   "confirmationLevel":"UNCONFIRMED_BUT_PLAUSIBLE"
 }

La propiedad importante que se debe inspeccionar en este caso es confirmationLevel. Cuando devuelve UNCONFIRMED_BUT_PLAUSIBLE para Fake St, la API determina que es posible que una calle tenga ese nombre, pero no puede vincularlo con los datos de dirección de respaldo.

Si se usa el resultado de la API como comentario, se puede deducir que el componente de la calle de esta entrada (Fake St) es el que tiene el error.

Si se usa la misma dirección con la API de Geocoding, se puede encontrar una coincidencia con "California", como se muestra en la siguiente captura de pantalla de la herramienta Geocoder:

alt_text

Sin embargo, el resultado es un código geográfico de todo el estado, con comentarios mínimos sobre qué componentes de la entrada podrían ser defectuosos.

Ejemplo de error de ortografía

76 Buckingamm Palace Road, Londn, SW1W 9TQ, GB

La dirección anterior contiene un par de errores ortográficos, uno en el nombre de la calle y el otro en la localidad.

Tanto la API de Address Validation como la de Geocoding pueden corregir estos errores y obtener el resultado de 76 Buckingham Palace Road, Londres, SW1W 9TQ. Sin embargo, la API de Address Validation puede proporcionar más información sobre el proceso.

Observa uno de los componentes de la dirección que se escribió de forma incorrecta en la entrada:

{
  "componentName": {
    "text": "Buckingham Palace Road",
    "languageCode": "en"
        },
        "componentType": "route",
        "confirmationLevel": "CONFIRMED",
        "spellCorrected": true
     }
}

La API de Address Validation devuelve un indicador para señalar que se realizó una corrección en el campo. Se podría implementar la lógica empresarial con este parámetro para verificar la corrección con el proveedor de datos, como un cliente en la confirmación de la compra de un comercio electrónico.

Ejemplo de datos faltantes y error ortográfico

Bollschestraße 86, 12587, DE

La dirección anterior tiene un error ortográfico en el nombre de la calle y falta la ciudad (localidad) de Berlín.

La API de Address Validation puede corregir ambos errores y devuelve un código geográfico de nivel PREMISE y una dirección que se verifica hasta el nivel PREMISE:

Bölschestraße 86, 12587 Berlin, DE

En este caso, la API de Geocoding no puede superar correctamente los errores de entrada y devuelve un resultado de ZERO_RESULTS.

Ejemplo de metadatos de dirección adicionales

111 8th Avenue Ste 123, Nueva York, NY 10011-5201, EE.UU.

Esta dirección es correcta, excepto por el número de unidad (Ste 123), que no existe dentro del edificio.

La API de Address Validation puede validar la dirección hasta el nivel de PREMISE (111 8th Ave) y proporcionar algunos metadatos sobre la propiedad, incluido que es un edificio comercial

premises:

"business": true

Además, el valor dpvConfirmation que se devuelve como parte de uspsData en la respuesta es S:

"dpvConfirmation": "S"

Un valor dpvConfirmation de S indica que la dirección se validó hasta el nivel de PREMISE, pero el número de unidad proporcionado en la entrada no está asociado con esa dirección.

La API de Geocoding no puede proporcionar esta información.

Información sobre la respuesta de la API de Geocoding

Descripción general

Si usas la API de Geocoding, el resultado de la geocodificación contiene varias pistas en la respuesta que se pueden usar para comprender los detalles de la dirección proporcionada.

La API de Geocoding funciona resolviendo los componentes de la dirección en una jerarquía.

Por **ejemplo, 123 Example Street, Chicago, 60007, USA se resuelve en el siguiente orden:

/ Example Street/ Chicago/ 60007/ USA se evaluarán en ese orden. En este caso, la primera coincidencia es Chicago y, más específicamente, el código postal 60007. Por lo tanto, devuelve el siguiente Place_id para ese código postal:

ChIJwRKzf8ixD4gRHiXqucwr_HQ

La API de Geocoding contiene la siguiente información en la respuesta:

        "partial_match": true,
           "place_id": "ChIJwRKzf8ixD4gRHiXqucwr_HQ",
           "types": [
               "postal_code"
           ]

La API de Geocoding puede confirmar a qué tipo de lugar pertenece esta dirección. Aquí puedes encontrar una lista de los types de direcciones que devuelve la API de Geocoding.

Si no se resuelve ninguno de los componentes de la entrada, la API devuelve lo siguiente:

{
   "results": [],
   "status": "ZERO_RESULTS"
}

Si realizas una solicitud con solo la dirección, sin el número de la casa, se muestra un resultado con el siguiente formato:

"types": [
  "route"
]

Esto significa que la API de Geocoding no pudo encontrar ni hacer coincidir un número de calle.

Nota: Para saber si existe una dirección, verifica si alguno de los parámetros (como types o partial_match, results, status)) está configurado en la respuesta de la API de Geocoding. Esto aumentará gradualmente el nivel de confianza de que una dirección puede existir, pero no la hará 100% precisa. Por eso, necesitamos la API de Address Validation.

Puedes usar las técnicas anteriores para aumentar la confianza en la exactitud de la dirección solo a partir de una respuesta de la API de Geocoding. Sin embargo, a diferencia de un resultado de la API de Address Validation, la API de Geocoding no devolverá comentarios exactos para determinar la precisión del resultado.

Tipo de ubicación

Para comprender correctamente esta sección, debes conocer los diferentes tipos de ubicaciones que se podrían mostrar en una respuesta de la API de Geocoding:

  • ROOFTOP indica que el resultado que se muestra es un geocódigo preciso para el que tenemos información de ubicación exacta hasta el nivel de la dirección.
  • RANGE_INTERPOLATED indica que el resultado que se muestra refleja una aproximación (generalmente en una ruta) interpolada entre dos puntos precisos (como intersecciones). Generalmente se devuelven resultados interpolados cuando no se encuentran disponibles geocódigos exactos para una dirección.
  • GEOMETRIC_CENTER indica que el resultado que se muestra refleja el centro geométrico de un resultado, como una polilínea (por ejemplo, una calle) o un polígono (región).
  • APPROXIMATE indica que el resultado que se muestra no es ninguno de los anteriores.

Si una API de Geocoding devuelve un location_type de ROOFTOP o RANGE_INTERPOLATED, no significa necesariamente que la dirección exista. Del mismo modo, si una API de Geocoding devuelve el parámetro partial_match establecido en true, es posible que el resultado sea el correcto para ti.

Este tipo de coincidencia falsa es un problema muy difícil de resolver con la API de Geocoding. Como mínimo, podrías implementar una validación básica posterior al procesamiento en el país y la localidad de la solicitud o respuesta. Mejor aún, compara las direcciones reales para comprobar que no haya errores ortográficos o que la dirección no esté incompleta.

Nota: Si decides usar la API de Geocoding, te recomendamos que realices verificaciones de calidad de los datos entre la solicitud inicial y la respuesta de la API de Geocoding con regularidad.

Coincidencia parcial y coincidencia falsa

Si una dirección es una coincidencia parcial, lo que significa que la API de Geocoding no pudo identificarla con exactitud, la respuesta contiene lo siguiente:

"partial_match": true,
"types": [
           "locality",
           "political"
         ]

Incluso más importante que los tipos de ubicación anteriores es considerar cuándo partial_match = true está en la respuesta. partial_match indica que la API de Geocoding no devolvió una coincidencia exacta para la solicitud original, aunque sí encontró una coincidencia parcial para la dirección solicitada.

Te recomendamos que examines la solicitud original para comprobar que la dirección no esté incompleta. Las coincidencias parciales generalmente ocurren cuando las direcciones que se pasan en la solicitud no existen en la localidad especificada. También se pueden devolver coincidencias parciales cuando una solicitud coincide con dos o más ubicaciones en la misma localidad.

Por ejemplo, "21 Henr St, Bristol, UK" devuelve una coincidencia parcial tanto para Henry Street como para Henrietta Street. Ten en cuenta que, si una solicitud incluye una dirección con un componente que contiene errores ortográficos, la API de Geocoding puede sugerir una dirección alternativa. Las sugerencias propuestas de esta manera no se marcarán como una coincidencia parcial.

Direcciones sintéticas

La API de Geocoding puede devolver ubicaciones para direcciones "sintéticas" que no existen como ubicaciones precisas en la base de datos de Google.

En esos casos, el objeto de respuesta suele contener un ID de lugar largo y la siguiente propiedad: geometry.location_type=APPROXIMATE.

Si encuentras estos indicadores en la respuesta, considera marcar la dirección de entrada como no válida y vuelve a validarla por otro medio.

Nota: Este es otro ejemplo en el que, con la API de Address Validation, obtienes comentarios directos si una dirección no existe.

Información sobre la respuesta de la API de Address Validation

Ya existe una excelente documentación sobre cómo comprender las respuestas de la API de Address Validation, por lo que no entraremos en más detalles aquí.

Prácticas recomendadas

Cómo especificar la ubicación geográfica

Cuando realices llamadas a las APIs de Address Validation o Geocoding, se recomienda que intentes limitar la ubicación geográfica en la que se buscará esa dirección. Las dos APIs implementan esto de dos maneras diferentes:

  • API de Geocoding: Sesgo de región

    Si sabes que los geocódigos estarán dentro de un país determinado, obtendrás resultados mucho mejores si usas la preferencia de región. Por ejemplo, si realizas una geocodificación en Canadá, te recomendamos que agregues &region=ca a tus solicitudes para sesgar los resultados hacia ese país. Ten en cuenta que la personalización de región solo antepone los resultados dentro de esa región. Aun así, puedes obtener resultados fuera de la región.

  • API de Address Validation: Código de región

    De manera similar, la API de Address Validation produce resultados más precisos si se pasa un código ISO2 en la solicitud, con el campo regionCode.

Cómo guardar los IDs de lugar

Si deseas almacenar información de Google Maps Platform sobre la ubicación para solicitudes futuras, puedes guardar el ID de lugar de forma indefinida en tu base de datos como un atributo de la ubicación. Solo deberías necesitar hacer una solicitud a Find Place por cada placeID. También puedes buscar el ID de lugar cada vez que un usuario solicite detalles de la transacción.

Para asegurarte de tener siempre la información más actualizada, actualiza los IDs de lugar cada 12 meses con una solicitud a Place Details con el parámetro place_id.

Nota: Asegúrate de revisar también la guía de prácticas recomendadas para la geocodificación.

Conclusión

En este documento, se describen las diferencias principales entre las APIs de Address Validation y Geocoding. En resumen, considera usar la API de Address Validation en los siguientes casos:

  • Se requiere una dirección de correo postal precisa, especialmente para garantizar la entrega.
  • Se sabe que los datos de entrada son de baja calidad. La API de Address Validation es más tolerante con los errores de entrada, destacará los componentes de la dirección que no se puedan verificar y corregirá los datos de entrada.
  • Se requiere más información para una dirección, como residencial o comercial (disponible en regiones seleccionadas).

Próximos pasos

Descarga el informe Mejora la confirmación de compra, la entrega y las operaciones con direcciones confiables y mira el seminario en línea Mejora la confirmación de compra, la entrega y las operaciones con Address Validation .

Lecturas adicionales sugeridas:

Colaboradores

Google mantiene este artículo. Los siguientes colaboradores lo escribieron originalmente.

Autores principales:

Henrik Valve | Ingeniero de soluciones

Thomas Anglaret | Ingeniero de soluciones

Sarthak Ganguly | Ingeniero de soluciones