El siguiente script de bash descarga automáticamente de Google Maps las coordenadas para un listado de lugares, los municipios españoles en este caso. Conviene formatear el listado de la siguiente manera previamente:
Municipio1+España
Municipio2+España
Municipio+con+nombre+largo+España
Municipio+de+varias+palabras+España
Es importante contextualizar el lugar lo más precisamente posible para que no exista ambigüedad. En principio la solicitud HTTP funciona con espacios entre las palabras, aunque con signos + es más seguro.
##!/bin/bash # descarga las coordenadas de las localizaciones proporcionadas # en un archivo con el formato de una localizacion por linea MUNI_FILE="munNames.unix.espagna.txt" # nombre del archivo con los nombres de los municipios COORD_FILE="coords" # nombre del archivo de destino de las coordenadas TMP_FILE="tmp" # nombre del archivo temporal para detectar errorres if [ -f $COORD_FILE ]; then rm $COORD_FILE fi cat $MUNI_FILE | while read line; do echo "Descargando coordenadas para $line" wget -qO- "http://maps.google.com/maps/geo?q=$line&output=csv&sensor=false" > $TMP_FILE if [ `cat $TMP_FILE` = '620,0,0,0' ]; then COUNTER=1 while [ `cat $TMP_FILE` = '620,0,0,0' ] && [ $COUNTER -lt 6 ]; do echo "Error al descargar. Esperando 5 segundos para volver a hacer la petición..." echo "Intento número $COUNTER" sleep 5 wget -qO- "http://maps.google.com/maps/geo?q=$line&output=csv&sensor=false" > $TMP_FILE let COUNTER=COUNTER+1 done elif [ `cat $TMP_FILE` = '602,0,0,0' ]; then echo "Error al descargar. Municipio $line no encontrada. " echo "Error: $line" >> $COORD_FILE else cat tmp >> $COORD_FILE echo "|" >> $COORD_FILE echo "Coordenadas para $line descargadas correctamente. " fi done exit 0
El único requisito para que el script funcione es colocarlo en la misma ubicación que el script.
Más información: