Objetivo
A menudo, necesitas validar la ubicación de un lugar. Hay varios servicios 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 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 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 las APIs de Address Validation y Geocoding.
Cuándo elegir la API de Address Validation en lugar de la API de 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 integrarse 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 decisión anterior, usar un producto en lugar del 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 proceso. 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 la salida.
- Tu región objetivo 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 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 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 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 el nivel de PREMISE
.
Fake St no existe en Mountain View, California, y la API de Address Validation lo refleja en los detalles a nivel del 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 devuelve UNCONFIRMED_BUT_PLAUSIBLE
en relación con Fake St, la API determinó que sería posible que una calle tenga ese nombre, pero no se puede correlacionar con los datos de dirección de respaldo.
Si se usa el resultado de la API como comentarios, se puede deducir que el componente de la calle de esta entrada (Fake St) es el culpable.
Si usas la misma dirección con la API de Geocoding, se puede establecer una coincidencia en "California", como se ve en la captura de pantalla de la herramienta de geocodificación que puedes probar aquí:
Sin embargo, el resultado es una geocodificación 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 devuelve una marca para indicar que se realizó una corrección en el campo. Se podría implementar lógica empresarial en relación con esta marca para verificar la corrección con el proveedor de datos, como un cliente en la confirmación de 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 le falta la ciudad (localidad) de Berlín.
La API de Address Validation puede corregir ambos errores y devuelve una geocodificación a nivel de PREMISE
y una dirección verificada a nivel de 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 en el edificio.
La API de Address Validation puede validar la dirección PREMISE
(111 8th Ave) y proporcionar algunos metadatos sobre la propiedad, incluido el hecho de que es comercial.
premises:
"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 validó hasta el nivel de PREMISE
, pero el número de unidad proporcionado en la entrada no está asociado a esa dirección.
La API de Geocoding no puede proporcionar esta información.
Cómo comprender la respuesta de la API de Geocoding
Descripción general
Si utilizas 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 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 solo con la dirección de la calle, sin el número de la 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)
) 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 precisión 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 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 ubicación que se pueden devolver 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 con una precisión de 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 la 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 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, podrías considerar implementar alguna validación básica de procesamiento posterior en el país y la localidad de la solicitud o la respuesta. Aún mejor, compara las direcciones reales para detectar errores ortográficos o direcciones incompletas.
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, es decir, la API de Geocoding no pudo identificar la dirección 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
" muestra 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 devolver 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 de entrada como no válida y vuelve a validarla por otros medios.
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 documentación excelente sobre cómo comprender las respuestas de la API de Address Validation, por lo que no entraremos en más detalles aquí.
- Puedes encontrar una descripción general del objeto de respuesta aquí.
- La demostración que ilustra los diferentes componentes de la respuesta se encuentra aquí.
- En el documento de validación de direcciones para la confirmación de compra, se incluye una descripción detallada de cómo diferenciar las direcciones correctas de las incorrectas.
Prácticas recomendadas
Cómo especificar la ubicación geográfica
Cuando realices llamadas a las APIs de Address Validation o Geocoding, es una práctica recomendada intentar limitar la región geográfica en la que se buscará esa dirección. Las dos APIs implementan esto de dos maneras diferentes:
API de Geocoding: Sesgo regional
Si sabes que los códigos geográficos estarán dentro de un país determinado, obtendrás mejores resultados si usas la restricción de región. Por ejemplo, si realizas la geocodificación en Canadá, te recomendamos que agregues
®ion=ca
a tus solicitudes para sesgar los resultados hacia Canadá. Ten en cuenta que la personalización por 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, utilizando 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 postal precisa, especialmente para fines 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 corregirá los datos de entrada.
- Se requiere más información para una dirección, como si es residencial o comercial (disponible en regiones seleccionadas).
Próximos pasos
Descarga el Informe técnico sobre cómo optimizar la confirmación de compra, la entrega y las operaciones con direcciones confiables y mira el seminario web sobre cómo optimizar la confirmación de compra, la entrega y las operaciones con la Validación de direcciones .
Lecturas adicionales sugeridas:
- Address Validation para la confirmación de compra de comercio electrónico
- Documentación de Place Autocomplete
- Documentación de la API de Address Validation
- Informes de Google Maps Platform
Colaboradores
Google mantiene este artículo. Los siguientes colaboradores escribieron el artículo originalmente.
Autores principales:
Henrik Valve | Ingeniero de Soluciones
Thomas Anglaret | Ingeniero de soluciones
Sarthak Ganguly | Ingeniero de soluciones