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: