Sommaire
Introducción
Open Street es un servicio de optimización de itinerarios que permite calcular un itinerario en el orden ideal para disminuir la distancia recorrida.
Nuestra aplicación web en línea utiliza las API Open Street, especialmente aquellas que permiten la geocodificación, es decir, la transformación entre una dirección postal y una coordenada de latitud, longitud.
Ejecutar una geocodifcación con la API
Protocolo utilizado
Esta API utiliza el método GET implementado en el protocolo HTTP 1.1. Podemos utilizarlo desde un navegador web estándar o cualquier otra biblioteca para descargar datos desde un servidor web. Esta API de geocodificación es susceptible de recibir caracteres especiales o acentuados, que deben ser codificados apropiadamente en secuencias, comenzando con un porcentaje (%). Los espacios deben ser reemplazados por más (+). Los navegadores recientes codifican automáticamente las direcciones URL, pero no siempre las bibliotecas HTTP.
Todas nuestras API son compatibles con la compresión gzip, por lo que es muy recomendable para activar esta característica en su cliente HTTP. Para verificar que la compresión está activa, el encabezado de la solicitud del cliente debe incluir Accept-Encoding: «gzip, deflate» y el encabezado de la respuesta del servidor debe incluir Content-Encoding: «gzip». Esto reduce casi un 50% del tiempo de descarga de datos.
El tiempo de respuesta de esta API es inferior a 500 ms. Gracias a nuestra memoria interna, las respuestas puede ser más rápidas si la información ya ha sido solicitada con anterioridad, del orden de unos pocos milisegundos.
Datos de entrada
Para funcionar, esta API requiere datos proporcionados como parámetros de URL. En la siguiente tabla, los asteriscos * indican los parámetros que se requieren para ejecutar un cálculo.
Parámetro | Valor | Explicación |
---|---|---|
address* | 1 Rue de la Paix, Paris, France |
Dirección postal lo más preciso posible, y donde los campos esten separados por comas o puntos y comas. Esta debe ser codificada como una URL. |
key* | caracteres |
Clave de autenticación de cada usuario. |
El URL que interroga la API de geocodificación debe ser codificada correctamente, es decir que todos los caracteres especiales y acentuados son transformados por secuencias que comienzan con el signo de porcentaje (%). Los espacios deben ser transformados en un signo más (+).
Los navegadores modernos codifican automáticamente las direcciones introducidas en la barra de URL, pero este no es siempre el caso de las bibliotecas HTTP como Curl.
Un ejemplo concreto
Tomemos el ejemplo de la policia de Bourg-en-Bresse la cual tendrá la siguiente dirección « Policia de l’Ain, Bourg-en-Bresse, France ».
A continuación una muestra de la solicitud formulada por la API de geocodificación. Recuerde que se requiere una clave de autenticación valida.
1 |
https://maps.open-street.com/api/geocoding/?address=Pr%C3%A9fecture+de+Ain%2C+Bourg-en-Bresse%2C+France&sensor=false&key=cle-fournie |
Uso de datos de geocodificación
Datos de salida
El formato de datos de salida es un objeto JSON que puede ser descargado y procesado por una aplicación, o visualizado con un navegador. La compresión relacionada al protocolo HTTP es gestionado por el cliente HTTP de forma transparente para el desarrollador.
El documento obtenido es compatible con la API de geocodificación de Google, todo esto omitiendo los detalles innecesarios. Si ya ha desarrollado una aplicación que utiliza esta API, usted ya conoce el funcionamiento. Utilizamos diferentes bases de datos para este servicio, por lo que los resultados pueden variar de los de Google.
A continuación una tabla de los parámetros de salida.
Parámetros | Explicación |
---|---|
formatted_address |
Dirección corregida tal y como fue asimilada por la API. |
lat |
Latitud del punto solicitado. |
lng |
Longitud del punto solicitado. |
status |
Código de estatus |
La estructura del documento no fue representado en este documento, pero el objeto json contiene igualmente las cadenas siguientes : geometry
, location
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "results": [ { "formatted_address": [ "Préfecture de l'Ain, 45 Avenue Alsace Lorraine, 01012 Bourg-en-Bresse, France" ], "geometry": { "location": { "lat": 46.2021852, "lng": 5.2221591 } } } ], "status": "OK" } |
Recomendaciones de uso
Cuando utilice este objeto JSON, debe recuperar los valores a traves de su cadena asociada, y no por su posición en el documento o su numero de línea. De hecho, otros datos pueden ser insertados en el futuro y esta es la única manera de respetar la compatibilidad. Es posible deshabilitar la tabla de objeto JSON de su lenguaje de programación con una biblioteca especializada, con tal de mantener las cadenas y valores. Para obtener más información sobre JSON, visite la pagina json.org que proporciona una lista de las bibliotecas de decodificación en diferentes lenguajes de programación.
Puede utilizar esta API en conjunto con nuestra API de optimización de rutas. En este caso, es recomendable comenzar tan pronto como sea posible la geocodificación, y no esperar hasta que el usuario inicie un cálculo de optimización. De esta forma, se mejorará la fluidez de su aplicación.
Si usted sabe de antemano la lista de direcciones que usted solicitara, le aconsejamos que inicie todas sus solicitudes de geocodificación una primera vez con un guión de su creación. De esta forma, todas las aplicaciones futuras se beneficiarán de nuestra memoria integrada, y serán mucho más rápidas.
A diferencia de nuestra API de optimización, nuestras rutinas de geocodificación no son particularmente más eficaces que las que están disponibles gratuitamente en internet. Así que, si sus necesidades de geocodificación son particularmente importantes, le recomendamos que se basan principalmente en Google API de codificación geográfica o un servicio equivalente, y utilizar nuestra API para codificar geográficamente solo en caso de fallo.
Los códigos de error
El código de estatus debe ser «OK». Para cualquier otro valor de retorno, la petición de geocodificación habrá fallado. La siguiente tabla describe la significación de los diferentes códigos que puede encontrar utilizando nuestra API.
Codigo | Explicación |
---|---|
SYNTAX_ERROR |
La petición esta incompleta o contiene un error. |
LIMIT_REACHED |
Usted ha agotado sus cuotas de uso. Saber más. |
WRONG_KEY |
Su clave de autenticación es falsa. Contáctenos. |
ADDRESS_IS_INCONSISTENT |
La dirección demandada es una cadena de carácteres demasiado cortan o demasiado larga. |
REQUEST_DENIED |
Imposible de responder a esta petición. |
Desarrollos futuros
- Otros parámetros facultativos podrían ser desarrollados para afinar el cálculo.
- El método GET del protocolo HTTP limita el tamaño de las solicitudes de 8 Ko.