28 de mayo de 2017

:: Geolocalizar una lista de direcciones

A veces necesitamos obtener las coordenadas geográficas (longitud y latitud) de una serie de direcciones. Una forma rápida de llevar a cabo esta tarea, es la que describiremos a continuación.

En Google Drive podemos crear scripts (Google App Script) para llevar a cabo tareas variadas.
Para el caso que nos ocupa, los pasos a seguir son:

1.- Crearemos una hoja de cálculo en Google Drive

2.- En la primera columna insertaremos las direcciones de las que queremos obtener las coordenadas


3.- Pulsamos sobre la entrada de menú "Herramientas" > "Editor de secuencia de comandos" y añadimos el siguiente código

function geoCode() {
var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getDataRange();
var cells = range.getValues();

var latitudes = [];
var longitudes = [];

for (var i = 0; i < cells.length; i++) {
var address = cells[i][0];
var geocoder = Maps.newGeocoder().geocode(address);
var res = geocoder.results[0];

latitudes.push([res.geometry.location.lat]);
longitudes.push([res.geometry.location.lng]);
}

sheet.getRange('B1').offset(0, 0, latitudes.length).setValues(latitudes)
sheet.getRange('C1').offset(0, 0, latitudes.length).setValues(longitudes);
}


4.- Le daremos un nombre al proyecto, por ejemplo "Geocodificar direcciones" y lo guardaremos.

5.- Tras guardarlo, ejecutamos el código pulsando sobre el icono: "Ejecutar"

6.- Tendremos que permitir al script la escritura en nuestra hoja de cálculo



7.- Una vez finalizada la ejecución, tendremos en la segunda y tercera columna, la latitud y longitud respectivamente



4 comentarios:

  1. el código tiene algún error?? he tratado de ejecutarlo y me dice que no se puede leer la propiedad Geometry de undefined en la linea 15

    ResponderEliminar
    Respuestas
    1. Aparentemente el código es correcto. La propiedad debe ser "geometry" en minúsculas. Lo tienes así, ¿verdad?

      var geocoder = Maps.newGeocoder().geocode(address);
      var res = geocoder.results[0];

      Comprueba por favor que en el fichero excel no tengas ninguna celda en blanco o revisa la codificación del fichero por si existiera algún problema al respecto.

      Eliminar
    2. Hola netic360, tú información me fue de gran ayuda, sin embargo me dió el mismo error de "geometry" pero lo pude solucionar, resulta que el problema se encuentra en las casillas de exel por ende es importante "limpiar" en mi caso tenía una lista de direcciones que contenian el nombre de la calle y además otros datos como número de oficina por ejemplo "Mac-Iver 345 Oficina 23" lo que hize fue dejarlo en "Mac Iver 345, Santiago" saque el guión y el dato de la oficina y agregue la ciudad ya que se pueden asignar coordenadas de otros lugares

      Eliminar
  2. veo que funciona bien pero cuando encuentra error se para y podría ser útil que cuando el algoritmo encuentre una celda con error la deje en blanco y salte a la siguiente linea, es posible poner esa linea en este código y como?

    ResponderEliminar

Déjanos tu comentario

:: Cookies de nuestra página web. ¿Para qué sirve cada una?

A menudo una pregunta que nos hacen es qué cookies se están utilizando en mi página y para qué sirven. Para ver las cookies, podemos selecci...