Servicio web de geocodificación de Google Maps
Introducción:
base de datos de información geográfica. Podemos enviar una cadena de búsqueda geográfica, como “1600 Amphitheatre Parkway, Mountain View, CA” a su API de geocodificación y conseguir que Google nos devuelva la situación en un mapa de donde podrıa estar nuestra cadena
de búsqueda, ademas de los puntos de referencia en los alrededores.
Un ejemplo sencillo:
Muy bien, hora de analizar el código.
Linea 1: En la primera linea estamos importando al modulo requests, el modulo requests no esta en la librería estándar de Python, esto significa que debemos descargarlo, si aun no lo tienes a continuación te dejo un link para poder descargar el modulo: Descargar Modulo Requests.
Linea 2: Ahora, declaramos una variable con el identificador "address", la cual almacenara la entrada del usuario.
Linea 3: Declaramos una variable con el identificador "params", la cual almacenara un diccionario con un elemento, con la llave nombrada "address" con el valor de la entrada del usuario almacenada en la variable "address", este diccionario sera el parámetro de la URL a la cual pediremos los datos geográficos de la dirección dada por el usuario.
Linea 5: Declaramos un variable con el identificador "response", la cual almacenara la repuesta del servidor, con el método get de requests estamos haciendo una petición a la url que le pasamos como primer argumento, el segun argumento como pueden ver son los parámetros de la URI a la cual estamos haciendo la petición, en este caso el parámetro es la dirección que introduce el usuario.
Linea 6: Creamos una sentencia "if" la cula comprobara si el codigo de estatus de la respuesta es igual a 200, recordemos que si el servidor nos devuelve el código 200 significa: "Respuesta estándar para peticiones correctas." (Según wikipedia :D).
Linea 5: Dentro de la sentencia if que comprueba que la petición tuvo éxito, usaremos la función print para imprimir la respuesta en formato json.
En este punto ya estamos aptos para ejecutar nuestro codigo, al hacerlo nos pedira una entrada, la cual sera la dirección que qerramos buscar, yo usare la dirección de GooglePlex, la cual es “1600 Amphitheatre Parkway, Mountain View, CA”, deberíamos ver el siguiente resultado:
Como podemos ver el resultado es un contenido en formato json, podemos ver la información nos proporciona Google con respecto a la dirección que le hemos pasado,
vemos que nos da mucha información sobre la dirección, no dice que se encuentra en Mountain View, Santa Clara, California, nos da el nombre del país en donde se encuentra que en este caso es Estado unidos, y también nos da los nombres cortos como US y CA, nos muestra el id del lugar, que si no me equivoco nos sirve para ver las imágenes es Street View, al final también vemos, el código 200, el cual os dice que la petición fue exitosa, en fin, vemos mucha información interesante, y no se limiten a no introducir tu propia dirección.
La desventaja de ver esta informacion desde la consola, es que esta un poco desordenada, por esto en el codigo de arriba tambien crea un archivo, las cuales explicare.
Anteriormente quedamos en la linea 5, así que continuaremos en la linea 6 :D.
Linea 6: En esta linea usamos la funcion open para la creacion de un archivo llamado "Geocodificacion.json".
Linea 7: Declaramos un bucle for en el cual el identificador x iterara todos los elementos de response, la respuesta del servidor se puede iterar con el método iter_content.
Linea 8: En esta linea escribimos toda la iteración de x en el archvivo "Geocodificacion.json".
Linea 9: En la linea final, cerramos nuestro archivo.
Luego de ejecutar e ingresar la dirección que el programa nos pide, el archivo Geocodificacion.json sera creado en el directorio actual del programa, al abrir el archivo, el contenido debería ser algo así:
{ "results" : [ { "address_components" : [ { "long_name" : "1600", "short_name" : "1600", "types" : [ "street_number" ] }, { "long_name" : "Amphitheatre Pkwy", "short_name" : "Amphitheatre Pkwy", "types" : [ "route" ] }, { "long_name" : "Mountain View", "short_name" : "Mountain View", "types" : [ "locality", "political" ] }, { "long_name" : "Santa Clara County", "short_name" : "Santa Clara County", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "California", "short_name" : "CA", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] }, { "long_name" : "94043", "short_name" : "94043", "types" : [ "postal_code" ] } ], "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA", "geometry" : { "location" : { "lat" : 37.4224764, "lng" : -122.0842499 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 37.4238253802915, "lng" : -122.0829009197085 }, "southwest" : { "lat" : 37.4211274197085, "lng" : -122.0855988802915 } } }, "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA", "types" : [ "street_address" ] } ], "status" : "OK" }
Como pueden ver, en el archivo vemos mucho mejor el contenido, de una manera más legible.
Eso a sido todo, te invito a que compartas tu experiencia con nosotros dejando un buen comentario, si tienes dudas con gusto las responderé, y espero que experimentes con este pequeño código, agregándole más funcionalidades. Mi nombre es Luis, y nos vemos la próxima :D.
Puedes ver el código completo desde mi repositorio de GitHub: Código Completo
-
-
De nada, estoy aquí para ayudar 😀
-
-
Excelente y muy buena tu explicación.
-
Gracias por apreciar mi trabajo como blogero y programador 😀
-
-
Hola. Muy buena explicación. Pero creo que falta detallar que el servicio web de geolocalizacion de Google te pide que ingreses una api key en la url donde estas haciendo la petición, según la propia documentación de la api
-
Como es simplemente una prueba, no nesecitamos una api key, al momento de crear un proyecto comercial en el que se haran muchas peticiones, hay si es necesaria, ya que sin la api key solo puedes hacer una cuantes peticiones, aunque debi explicarlo para dejarlo claro.
-
-
Interesante! Excelente explicacion, gracias.
Deja una respuesta
Excelente y muchas gracias.