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

Objetivo

A menudo, necesitas validar la ubicación de un lugar. Hay varios servicios diferentes en Google Maps Platform que pueden ayudarte con este caso de uso. En este documento, se te ayudará a elegir entre los dos servicios principales de validación de ubicación: 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 de convertir 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 alto nivel de las diferencias entre la API de Address Validation y la API de Geocoding aquí.

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.
  • Place Autocomplete es una API de JavaScript, por lo que es adecuada para la integración 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 ejecutar esas ubicaciones a través de la API de Address Validation para corregir los conjuntos de datos.

Hay muchas situaciones en las que puedes elegir, según el árbol de decisiones anterior, usar un producto en lugar del otro. Sin embargo, otras situaciones pueden implicar el uso de ambos productos para cumplir con tus objetivos.

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

  • Existe una alta probabilidad de que los datos sean cuestionables o de que obtener una dirección incorrecta tenga un impacto negativo en el flujo de trabajo. 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.
  • Necesitas corregir las entradas del usuario (p.ej., errores ortográficos o campos faltantes), lo que aumenta la probabilidad de obtener un resultado preciso en la salida.
  • Tu región objetivo muestra 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 elegir usar la API de 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 precisión de las direcciones individuales podría no ser fundamental.
    • Por ejemplo, es posible que desees generar un mapa de calor a partir de un conjunto de datos grande.
  • Necesitas detalles de destino hiperlocales, como entradas de edificios, contornos de edificios o puntos de navegación de recogida y entrega (disponibles con el método SearchDestinations en la API de Geocoding v4).
  • Necesitas una solución global, y la API de Address Validation no está disponible en todas las regiones objetivo.

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.). También puede proporcionar comentarios detallados sobre por qué la dirección no es válida hasta un nivel PREMISE.

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

{
  "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 muestra UNCONFIRMED_BUT_PLAUSIBLE en Fake St, la API determinó que sería posible que una calle tenga ese nombre, pero no se puede hacer coincidir con los datos de dirección compatibles.

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

Si se usa la misma dirección con la API de Geocoding, se puede hacer una coincidencia en "California", como se ve en la captura de pantalla de la herramienta de geocodificación que puedes probar aquí:

alt_text

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

Ejemplo de error ortográfico

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 lograr 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.

Echa un vistazo a uno de los componentes de dirección que se escribieron mal en la entrada:

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

La API de Address Validation muestra una marca para indicar que se realizó una corrección en el campo. Se podría implementar lógica empresarial en esta marca para verificar la corrección con el proveedor de datos, como un cliente en una confirmación de compra de 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 muestra un geocódigo 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 muestra un resultado de ZERO_RESULTS.

Ejemplo de metadatos de dirección adicionales

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

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

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

local comercial:

"business": true

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

"dpvConfirmation": "S"

Un valor dpvConfirmation de S indica que la dirección se valida hasta el nivel 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 del geocódigo 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 componentes de 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á en ese orden. La primera coincidencia en este caso es Chicago y, más específicamente, el 60007 código postal. Por lo tanto, muestra el siguiente Place_id para ese código postal:

ChIJwRKzf8ixD4gRHiXqucwr_HQ

La API de Geocode 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 direcciones types que muestra la API de Geocoding aquí.

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

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

Si se realiza una solicitud solo con la dirección sin un número de 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, 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 pueda 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 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 mostrará comentarios exactos para determinar la precisión del resultado.

Tipo de ubicación

Para comprender correctamente esta sección, debes comprender los diferentes tipos de ubicación que se pueden 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 precisa hasta 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 muestra un location_type de ROOFTOP o RANGE_INTERPOLATED, no significa necesariamente que la dirección exista. Del mismo modo, si una API de Geocoding muestra la partial_match establecida en true, es posible que siga siendo el resultado adecuado para ti.

Este tipo de coincidencia falsa es un problema muy difícil de resolver con la API de Geocoding. Como mínimo, puedes considerar implementar alguna validación básica de procesamiento posterior en el país y la localidad de la solicitud o respuesta. Aún mejor, compara las direcciones reales para detectar errores ortográficos o una dirección 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 identificar la dirección exactamente, la respuesta contiene lo siguiente:

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

Aún más importante que los tipos de ubicación anteriores es tener en cuenta cuándo partial_match = true es en la respuesta. partial_match indica que la API de Geocoding no mostró una concordancia 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. 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" muestra 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 mostrar 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í.

  • Aquí puedes encontrar una descripción general del objeto de respuesta aquí.
  • Aquí puedes encontrar una demostración que ilustra los diferentes componentes de la respuesta aquí.
  • En el documento Address Validation for checkout, se incluye una descripción detallada de cómo diferenciar entre direcciones buenas y malas.

Prácticas recomendadas

Especifica la geografía

Cuando realices llamadas a las APIs de Address Validation o Geocoding, es una práctica recomendada intentar limitar la geografía en la que se buscará esa dirección. Las dos APIs implementan esto de dos maneras diferentes:

  • API de Geocoding: Personalización de la región

    Si sabes que los geocódigos estarán dentro de un país determinado, obtendrás mejores resultados si usas la personalización de la región. Por ejemplo, si estás geocodificando en Canadá, te recomendamos que agregues &region=ca a tus solicitudes para personalizar la búsqueda hacia Canadá. Ten en cuenta que la personalización de la 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 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 mediante 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, en especial para fines de capacidad de 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 dirección no verificables y realizará correcciones en 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 técnico Optimiza 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