Cómo crear capacidades de validación de ubicación con Google Maps Platform

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 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 correcta 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 él.

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 comparación con la API de Geocoding

Address-Validation-vs-Geocoding

Notas sobre el diagrama de flujo anterior:

  • El caso de uso de interacción con el usuario hace referencia a cuando un usuario está presente para interactuar con los resultados.
  • Places Autocomplete es una API de JavaScript, por lo que es adecuada para integrarse con las interfaces de usuario.
  • Es posible que estés al tanto de los problemas de calidad de los datos en tus direcciones existentes. Por lo tanto, aunque solo quieras geocódigos, te recomendamos ejecutar esas ubicaciones a través de la API de Address Validation para corregir los conjuntos de datos.

Según el árbol de decisión anterior, hay muchas situaciones en las que puedes optar por usar un producto en lugar de otro. Sin embargo, otras situaciones pueden implicar que uses ambos productos para cumplir tus objetivos.

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

  • Existe una alta probabilidad de que haya datos cuestionables, o bien obtener una dirección incorrecta tendrá un impacto negativo en las etapas posteriores. Esto se debe a que la API de Address Validation proporciona más comentarios sobre los motivos por los que una entrada no recibió un resultado de alta precisión.
  • Debes corregir las entradas del usuario (p.ej., falta de ortografía o campos faltantes), lo que aumenta la probabilidad de obtener un resultado preciso en el resultado.
  • Tu región de segmentación 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 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 puede no ser fundamental.
    • Por ejemplo, para generar un mapa de calor a partir de un gran conjunto de datos.
  • Necesitas una solución global, y la API de Address Validation no está disponible en todas las regiones objetivo.

A continuación, se incluyen 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 de PREMISE.

La calle falsa no existe en Mountain View, California, y la API de Address Validation refleja esto en los detalles a nivel del componente que se devuelven:

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

La propiedad importante que se inspeccionará en este caso es confirmationLevel. Al mostrar UNCONFIRMED_BUT_PLAUSIBLE contra Fake St, la API determinó que una calle podría tenerlo como nombre, pero no puede coincidir con los datos de dirección compatibles.

Al usar el resultado de la API como retroalimentación, se puede deducir que el componente de la calle de esta entrada (Fake St) tiene fallas.

Si usas la misma dirección con la API de Geocoding, podrás establecer una coincidencia en “California”, como se muestra 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 los componentes de la entrada potencialmente 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 otro en la localidad.

Tanto la API de Address Validation como la API 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 brindar más información sobre el proceso.

Echa un vistazo a uno de los componentes de la dirección que se escribió 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. La lógica empresarial podría implementarse en función de esta marca para verificar la corrección con el proveedor de datos, como un cliente en una confirmación de la compra de comercio electrónico.

Ejemplo de datos faltantes y error de ortografía

Bollschestraße 86, 12587, Alemania

La dirección anterior contiene 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 geocódigo de nivel PREMISE y una dirección verificada en el nivel PREMISE:

Bölschestraße 86, 12587 Berlin, DE

En este caso, la API de Geocoding no puede solucionar correctamente los errores de entrada y muestra 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 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, por ejemplo, que es una propiedad comercial.

locales:

"business": true

Además, el valor de 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 en 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 Geocoding API, el resultado del geocódigo contiene varias pistas en la respuesta que se pueden usar para comprender los detalles de la dirección proporcionada.

El funcionamiento de la API de Geocoding es resolver los 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 en ese orden. En este caso, la primera coincidencia es Chicago y, más específicamente, el código postal 60007. 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. Puedes encontrar una lista de las 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 realizas una solicitud solo con una dirección sin un número de casa, se mostrará 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)) se estableció en la respuesta de la API de Geocoding. Esto aumentará gradualmente el nivel de confianza de que puede existir una dirección, pero no hará que sea 100% precisa. Por eso, necesitamos la API de Address Validation.

Puedes usar las técnicas anteriores para aumentar la confianza en la precisión de las direcciones a partir de una sola 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 esta sección correctamente, debes comprender los diferentes tipos de ubicación que se pueden mostrar a partir de una respuesta de la API de Geocoding:

  • ROOFTOP indica que el resultado devuelto es un geocódigo preciso para el que tenemos información de ubicación precisa que puede delimitarse 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 es 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 necesariamente significa que la dirección exista. Del mismo modo, si una API de Geocoding muestra la marca partial_match en true, es posible que aún sea 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, podrías considerar implementar alguna validación básica del procesamiento posterior en el país y la localidad de la solicitud o respuesta. Aún mejor, compara las direcciones reales en busca de errores ortográficos o de direcciones incompletas.

Nota: Si decides usar la API de Geocoding, te recomendamos que realices verificaciones de la 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 tiene una coincidencia parcial (lo que significa que la API de Geocoding no pudo identificar con exactitud la dirección), la respuesta contendrá lo siguiente:

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

Incluso más importante que los tipos de ubicación mencionados anteriormente, es tener en cuenta cuándo partial_match = true está en la respuesta. partial_match indica que la API de Geocoding no mostró 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 ver si la dirección está incompleta. Las coincidencias parciales generalmente ocurren cuando las direcciones que se envían no existen en la localidad especificada en la solicitud. 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 un componente de dirección con errores ortográficos, la API de Geocoding podría 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 estos 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 ingresada como no válida e intenta volver a validarla por otro medio.

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

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

Ya existe mucha 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 realizas llamadas a las APIs de Address Validation o Geocoding, la práctica recomendada es intentar 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: Personalización de la región

    Si sabes que los geocódigos se ubicarán dentro de un país determinado, obtendrás resultados mucho mejores con la personalización de la región. Por ejemplo, si aplicas la geocodificación a Canadá, te recomendamos que agregues &region=ca a tus solicitudes para personalizar la segmentación orientada a Canadá. Tenga en cuenta que la personalización por región solo prefiere los resultados dentro de esa región. Aún 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 mediante 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 almacenar el ID de lugar de forma indefinida en tu base de datos como un atributo de la ubicación. Solo deberías necesitar realizar 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 Geocoding.

Conclusión

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

  • Se requiere una dirección de correo postal precisa, especialmente para fines de entrega.
  • Se sabe que los datos de entrada son de mala calidad. La API de Address Validation es más tolerante a los errores de entrada, destaca los componentes de la dirección que no se pueden verificar y hace 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 Mejora la confirmación de la compra, la entrega y las operaciones con direcciones confiables y mira el seminario en línea Mejora la confirmación de la compra, la entrega y las operaciones con Address Validation .

Lecturas adicionales sugeridas:

Colaboradores

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

Autores principales:

Henrik Valve | Ingeniero de soluciones

Thomas Anglaret | Ingeniero de soluciones

Sarthak Ganguly | Ingeniero de soluciones