Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo descargar coordenadas mediante solicitud HTTP para un listado de localizaciones de Google Maps

Imago voragine.net
[actualizado el ]

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:

Dejar un comentario

No hay comentarios en esta entrada.
*
*

 

No hay trackbacks