Google Map Downloader

Google Map Downloader – La herramienta de código abierto para descargar imágenes satelitales georreferenciadas

Descripción de la herramienta Google Map Downloader

Google Map Downloader es una herramienta de código abierto desarrollada en Python que permite descargar imágenes satelitales de Google Maps para un área geográfica específica y un nivel de zoom determinado, guardando el resultado en formato TIFF con coordenadas geográficas incorporadas. Su función principal consiste en automatizar la descarga de mosaicos (tiles) de Google Maps y unirlos en una sola imagen continua, preservando la información de georreferenciación para su uso en software GIS profesional.

La herramienta fue desarrollada originalmente por zhengjie9510 y está alojada en GitHub y GitCode, con licencia de código abierto. Cuenta con dos versiones principales: downloader_1.1.py, una versión estable de un solo hilo adecuada para áreas pequeñas, y downloader_1.2.py, una versión optimizada que utiliza una arquitectura de múltiples procesos y múltiples hilos para acelerar las descargas hasta 3-5 veces, aprovechando al máximo los procesadores multinúcleo.

El proyecto ha recibido 192 estrellas en GitHub y tiene una comunidad activa de usuarios.

Lo más destacado de Google Map Downloader reside en su arquitectura de descarga optimizada. Al combinar procesos e hilos, la herramienta supera las limitaciones del GIL (Global Interpreter Lock) de Python, permitiendo una utilización eficiente de todos los núcleos del procesador.

Soporta 5 estilos diferentes de mapas: imágenes satelitales (s), mapas estándar (m), satélite con etiquetas (y), mapas topográficos (t) y topográficos con etiquetas (p). Además, el resultado se guarda en formato TIFF con proyección WGS84, compatible con software GIS como ArcGIS, QGIS y ENVI.

La herramienta incluye un sistema de reintentos automáticos (hasta 3 intentos por mosaico) para manejar interrupciones de red, y permite personalizar los encabezados HTTP para evitar bloqueos por parte de los servidores.

Características clave de Google Map Downloader

1. Dos versiones según necesidades de rendimiento

La herramienta ofrece dos versiones que se adaptan a diferentes escenarios de uso:

  • downloader_1.1.py: Versión base con arquitectura de un solo hilo. Es más estable y consume menos memoria, ideal para descargas de áreas pequeñas o para equipos con recursos limitados.
  • downloader_1.2.py: Versión optimizada con arquitectura multiproceso + multihilo. Utiliza múltiples procesos para aprovechar todos los núcleos de la CPU, y cada proceso ejecuta varios hilos de descarga simultáneos. Esta versión logra un aumento de velocidad del 300-500% respecto a la versión base, aunque aún no implementa barra de progreso.

2. Especificación del área de descarga mediante coordenadas geográficas

La herramienta permite definir el área de interés mediante coordenadas geográficas en formato WGS84. El usuario especifica los cuatro límites:

  • left: Longitud del borde izquierdo (oeste)
  • top: Latitud del borde superior (norte)
  • right: Longitud del borde derecho (este)
  • bottom: Latitud del borde inferior (sur)

Es importante que left < right y bottom < top para definir correctamente el rectángulo. Las coordenadas deben obtenerse previamente utilizando herramientas como Google Maps o servicios de geolocalización.

3. Control del nivel de zoom

El parámetro zoom determina el nivel de detalle de la imagen resultante. Los valores recomendados según el área de estudio son:

  • Niveles 1-9: Adecuados para vistas continentales o globales
  • Niveles 10-15: Ideales para ciudades y áreas metropolitanas
  • Niveles 16-18: Para detalles de calles, manzanas y edificios

Es importante tener en cuenta que cada incremento en el nivel de zoom cuadruplica aproximadamente el número de mosaicos a descargar, lo que impacta directamente en el tiempo de descarga y el tamaño del archivo resultante.

4. Múltiples estilos de mapas

Google Map Downloader soporta cinco estilos de mapas diferentes:

CódigoEstiloDescripción
's'SatéliteImagen satelital pura sin etiquetas (estilo por defecto)
'm'MapaMapa estándar con calles, carreteras y nombres
'y'Satélite con etiquetasImagen satelital superpuesta con nombres de lugares
't'TopográficoMapa con curvas de nivel y elevaciones
'p'Topográfico con etiquetasTopografía combinada con nombres de lugares

5. Salida en formato TIFF georreferenciado

Una de las funcionalidades más valiosas es la generación de archivos TIFF con coordenadas geográficas incrustadas (geoTIFF). El archivo resultante contiene información de proyección en formato WGS84, lo que permite:

  • Importar directamente en software GIS como ArcGIS, QGIS y ENVI
  • Realizar análisis espaciales con capas superpuestas
  • Mantener la escala y ubicación exacta de las imágenes
  • Utilizar las imágenes como base para mapas temáticos

6. Soporte para múltiples servidores

La herramienta permite seleccionar entre dos servidores de origen:

  • server="Google": Servidor internacional de Google Maps
  • server="Google China": Servidor de Google Maps para China, que puede ofrecer mejor conectividad en determinadas regiones

7. Sistema de reintentos automáticos

Para garantizar la integridad de las descargas, la función download() incluye un mecanismo de reintentos que, en caso de fallo de red, realiza hasta 3 intentos automáticos antes de declarar el mosaico como fallido. Este sistema maneja de forma transparente interrupciones temporales de conectividad.

8. Personalización de encabezados HTTP

Para evitar bloqueos por parte de los servidores de Google, es posible personalizar el encabezado User-Agent en la función download(). Utilizar un User-Agent de navegador moderno ayuda a que las solicitudes sean indistinguibles del tráfico normal de navegación.

Explicación detallada de las funcionalidades

El funcionamiento de Google Map Downloader se basa en la descarga sistemática de mosaicos (tiles) que componen la vista de Google Maps. Cuando el usuario define un área mediante coordenadas y un nivel de zoom, la herramienta realiza los siguientes cálculos:

  1. Determina la extensión en píxeles del área seleccionada en el sistema de coordenadas de Google Maps (Web Mercator)
  2. Calcula la cuadrícula de mosaicos necesaria para cubrir esa extensión
  3. Genera las URLs de cada mosaico utilizando la API no oficial de Google Maps
  4. Descarga los mosaicos en paralelo utilizando la arquitectura multiproceso/multihilo
  5. Ensambla los mosaicos descargados en una única imagen continua
  6. Aplica la transformación de coordenadas inversa para incorporar la georreferenciación en el archivo TIFF

La arquitectura de downloader_1.2.py merece una explicación técnica. Dado que Python tiene limitaciones con el GIL (Global Interpreter Lock) que impiden que múltiples hilos se ejecuten simultáneamente en diferentes núcleos, esta versión utiliza múltiples procesos, cada uno de los cuales ejecuta sus propios hilos de descarga.

De esta forma, cada núcleo del procesador puede trabajar en paralelo, logrando una aceleración significativa. El número de procesos se ajusta automáticamente según el hardware disponible.

El proceso de ensamblaje de la imagen combina los mosaicos en una cuadrícula respetando su posición original. La herramienta calcula las dimensiones totales de la imagen final y coloca cada mosaico en las coordenadas correctas dentro de la cuadrícula.

Una vez ensamblada la imagen, se aplica la información de georreferenciación: se calculan los límites geográficos exactos (esquina superior izquierda y esquina inferior derecha) y se escriben en los metadatos del archivo TIFF junto con la proyección WGS84.

Descarga e instalación

  • Página oficial: GitHub – zhengjie9510/google-map-downloader
  • Última versión: downloader_1.2.py (2020)
  • Tamaño: 2-3 KB (script principal) + dependencias
  • Sistemas operativos compatibles: Windows, macOS, Linux (requiere Python)
  • Dependencias principales: GDAL 3.2.1, NumPy 1.20.1, Pillow 9.3.0, OpenCV 4.5.1
  • Requisitos mínimos: Python 3.7+, conexión a internet
  • Licencia: Código abierto (sin licencia explícita en el repositorio)
  • Idiomas: Interfaz en inglés (parámetros en Python)
  • Soporte técnico: GitHub Issues, documentación en el repositorio

Cómo usar Google Map Downloader

Paso 1: Instalación de dependencias

Clona el repositorio desde GitHub:

git clone https://github.com/zhengjie9510/Google-Map-Downloader
cd Google-Map-Downloader

Instala las dependencias utilizando conda o pip:

conda install --yes --file requirements.txt

O alternativamente:

pip install -r requirements.txt

Las dependencias incluyen GDAL para procesamiento geoespacial, NumPy para cálculos numéricos, Pillow para manejo de imágenes y OpenCV para operaciones de visión por computador.

Paso 2: Configurar los parámetros de descarga

Abre el archivo downloader_1.2.py (versión optimizada) en un editor de texto. Modifica la función main() con tus parámetros:

if __name__ == '__main__':
    start_time = time.time()

    # Formato: main(左经度, 上纬度, 右经度, 下纬度, 缩放级别, 保存路径, 地图风格)
    # Ejemplo: área de Beijing
    main(116.397, 39.916, 116.417, 39.906, 15, r'./beijing_map.tif', style='s', server="Google")

    end_time = time.time()
    print('总共耗时 {:.2f} 秒'.format(end_time - start_time))

Parámetros:

  • left, top: Coordenadas de la esquina superior izquierda (longitud, latitud)
  • right, bottom: Coordenadas de la esquina inferior derecha (longitud, latitud)
  • zoom: Nivel de zoom (1-18 recomendado)
  • filePath: Ruta donde se guardará el archivo TIFF
  • style: Estilo de mapa: 's' (satélite), 'm' (mapa), 'y' (satélite con etiquetas), 't' (topográfico), 'p' (topográfico con etiquetas)
  • server: Origen del servidor: "Google" (internacional) o "Google China"

Paso 3: Ejecutar la descarga

Ejecuta el script desde la terminal:

python downloader_1.2.py

El programa iniciará la descarga de los mosaicos y mostrará información de progreso en la consola. Para áreas grandes con niveles de zoom altos, el proceso puede tardar varios minutos. Si se utiliza la versión 1.1, la velocidad será menor pero incluirá una barra de progreso.

Paso 4: Verificar el resultado

Una vez completada la descarga, se habrá generado un archivo TIFF en la ruta especificada. Puedes abrirlo con software GIS como QGIS (gratuito) o con visores de imágenes convencionales para verificar que la descarga ha sido exitosa. El archivo contiene información de georreferenciación que permite su uso en análisis espaciales.

Paso 5: Solución de problemas comunes

Si aparece el error «Bad network link», edita la función download() en el archivo Python y modifica el encabezado User-Agent:

HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}

También verifica que tu conexión a internet sea estable y que las coordenadas introducidas sean correctas (left < right y bottom < top).

Observaciones sobre Google Map Downloader

La principal diferencia técnica de Google Map Downloader frente a otras herramientas de descarga de mapas es su arquitectura de descarga optimizada. Al combinar múltiples procesos y múltiples hilos, logra velocidades muy superiores a las de herramientas que utilizan descarga secuencial. Esta eficiencia lo hace especialmente adecuado para la descarga de grandes áreas geográficas donde el número de mosaicos puede ascender a miles.

Los beneficios prácticos de la herramienta son evidentes para profesionales y entusiastas. Para investigadores en geografía y ciencias ambientales, permite obtener imágenes satelitales de alta resolución con coordenadas precisas para estudios de cambio de uso de suelo, deforestación o expansión urbana.

Para urbanistas y arquitectos, facilita la obtención de bases cartográficas para proyectos de planificación territorial. Para desarrolladores de aplicaciones GIS, proporciona una forma automatizada de adquirir datos de fondo para sistemas de información geográfica.

Es importante destacar que Google Map Downloader utiliza APIs no oficiales de Google Maps y su uso debe respetar los términos de servicio de Google. Las imágenes descargadas no pueden utilizarse con fines comerciales sin la correspondiente licencia de Google.

Para aplicaciones profesionales que requieren un uso intensivo de imágenes satelitales, se recomienda utilizar la Google Maps Static API oficial, que ofrece un uso legal con costes asociados según el volumen de solicitudes.

Limitaciones importantes:

  • ❌ No es una herramienta oficial de Google; su uso puede estar sujeto a restricciones de los términos de servicio
  • ❌ La versión 1.2 (más rápida) no incluye barra de progreso
  • ❌ Requiere conocimientos básicos de Python y línea de comandos
  • ❌ Las descargas de grandes áreas pueden generar archivos de varios gigabytes
  • ❌ La API no oficial puede dejar de funcionar si Google modifica su estructura de mosaicos
  • ❌ El uso comercial de las imágenes requiere licencia de Google

Si necesitas obtener imágenes satelitales de Google Maps para proyectos académicos o personales, Google Map Downloader es una herramienta eficiente y gratuita. Para aplicaciones comerciales, se recomienda utilizar la API oficial de Google Maps Static API y cumplir con los términos de servicio correspondientes.

Sección FAQ

¿Google Map Downloader es gratis?

Sí, es completamente gratuito y de código abierto. Puede descargarse y utilizarse sin coste.

¿Funciona en Windows 10, Windows 11, macOS y Linux?

Sí, al estar desarrollado en Python, es compatible con todas las plataformas que soporten Python 3.7 y las dependencias requeridas (GDAL, NumPy, Pillow, OpenCV).

¿Qué diferencia a downloader_1.1.py de downloader_1.2.py?

downloader_1.1.py es una versión básica de un solo hilo, más estable y con barra de progreso, adecuada para áreas pequeñas. downloader_1.2.py utiliza una arquitectura multiproceso + multihilo que aprovecha todos los núcleos del procesador, logrando una velocidad 3-5 veces superior, pero sin barra de progreso.

¿Puedo utilizar las imágenes descargadas con fines comerciales?

No sin la licencia adecuada de Google. El uso comercial de imágenes de Google Maps requiere adquirir la correspondiente licencia a través de la API oficial de Google Maps Static API.

¿Dónde puedo obtener las coordenadas geográficas para configurar la descarga?

Puedes obtener coordenadas desde Google Maps haciendo clic derecho en un punto y seleccionando «¿Qué hay aquí?». También puedes utilizar herramientas online como latlong.net para buscar coordenadas por nombre de lugar. Recuerda que las coordenadas se introducen en formato decimal (ej: 116.397, 39.916).