Introducción
El baile celestial de los astros en el sistema solar ofrece cada cierto tiempo espectáculos únicos y singulares, como el fenómeno del eclipse total que se pudo contemplar en la península ibérica este año, y que se podrá ver de nuevo en 2027 y 2028. Durante un eclipse total, la Luna se interpone entre la Tierra y el Sol, ocultando al astro rey y proyectando durante unos minutos una sombra sobre una parte de la superficie terrestre.
El eclipse total del 12 de agosto de 2026 tuvo su comienzo hacia las 20h30 horas (GMT+01:00), cubriendo de penumbra desde Galicia hasta las Islas Baleares a lo largo de la hora y media de duración del eclipse.
El Centro Nacional de Información Geográfica (CNIG) ha puesto a disposición del público unos conjuntos de datos que ofrecen un amplio espectro de información astronómica relativa tanto al eclipse del pasado agosto como a los que se van a producir sobre la península ibérica durante los próximos dos años.
Estos conjuntos de datos incluyen información sobre la visibilidad por el propio relieve del terreno a la hora del eclipse, la duración del eclipse en cada punto de la geografía española, el nivel de oscurecimiento o la elevación del Sol en el punto máximo del eclipse, así como la sombra proyectada por la Luna en su trayecto por delante del Sol.
En este ejercicio accederemos a los conjuntos de datos del CNIG y abriremos los ficheros tipo .TIFF y .GPKG con toda la información relativa al eclipse, y en concreto con todo lo relacionado con las zonas de sombra, tanto en lo referente a la visibilidad por efecto del relieve en la península, como en lo que respecta a la zona de sombra en sí debido al eclipse total.
Una vez hayamos accedido a los datos, delimitaremos nuestro análisis a una zona concreta sobre la visibilidad por relieve, recortaremos los datos originales con el perímetro de un municipio, exportaremos el resultado en formato GeoJSON y, haciendo uso de éste, seremos capaces de crear diferentes tipos de mapas con diversas herramientas útiles e intuitivas tales como KeplerGL, GoogleEarth, Leaflet o D3.js.
Datos para el ejercicio
Los datos disponibles para realizar este ejercicio se encuentran accesibles en el Catálogo de datos abiertos de datos.gob.es y constan de tres ficheros con información relevante para describir y caracterizar el eclipse. En concreto encontramos:
- Sombras del terreno: fichero donde se describe la visibilidad por relieve en una malla de puntos que cubre la península ibérica y la parte occidental del norte de África.
- Curvas de nivel: fichero que contiene la duración, el oscurecimiento máximo y las curvas de penumbra proyectadas desde la Luna sobre la Tierra.
- Efemérides: fichero que alberga las efemérides del eclipse, tales como elevación, azimut, salida y puesta de sol, así como inicio y final del eclipse.
En este ejercicio nos centraremos en los dos primeros , ya que contienen información sobre la sombra proyectada tanto por el relieve como por la Luna sobre la península ibérica.
Adicionalmente, recurriremos igualmente al Catálogo de datos para obtener el perímetro en formato SHP de algún municipio que nos permita analizar en detalle la sombra por relieve. De esta forma completaremos el acceso y lectura de tres formatos de datos georreferenciados diferentes:
- TIFF: formato popular para información gráfica de alta resolución que tolera altos grados de compresión sin pérdida de información y que por lo tanto es muy manejable. Las siglas hacen referencia a Tagged Image File Format.
- GPKG: acrónimo de GeoPackage. Este formato se utiliza en sistemas de información geográfica para almacenar datos tanto en modo ráster como modo vectorial.
- SHP: formato de datos vectorial que contiene localizaciones geométricas, muy utilizado también en sistemas de información geográfica. Contiene exclusivamente puntos, líneas o polígonos y se compone de varios ficheros que contienen índices o atributos.
El formato SHP lo necesitaremos para disponer del perímetro de un municipio y así poder limitar nuestro estudio a una zona en concreta de interés. Dentro del Catálogo de datos tenemos perímetros municipales en el País Vasco en este conjunto de datos. Dentro de este fichero SHP podremos elegir uno de esos municipios ya que vienen caracterizados por su nombre.
Proceso de desarrollo
En esta sección veremos las diferentes etapas que hay que cubrir para llegar desde el fichero comprimido original hasta desplegar mapas en diversas plataformas con la información relevante del eclipse total. El código de lectura y tratamiento de datos se ha realizado en Python y se puede consultar en Github, en Google Colab y, el resultado, en Observable. El repositorio en Github se encuentra en el siguiente enlace:
Accede al repositorio del laboratorio de datos en GitHub
En Google Colab tenemos dos notebooks. El primero nos permite extraer y representar las zonas de sombra por el relieve natural a la hora del eclipse, mientras que el segundo nos permite obtener y visualizar las zonas de sombra creadas por el eclipse en sí:
Accede a los notebooks de Google Colab
Por último, en Observable podemos consultar el código que nos permite crear los mapas con la información extraída tanto en Leaflet como en D3.js:
Accede a los notebooks de Observable
1. Visibilidad por relieve
El primer paso de este ejercicio consiste en identificar puntos en los cuales el eclipse fue visible en condiciones ideales sin ningún tipo de nubosidad, circunstancia que no fue completamente ideal el día del eclipse, sobre todo en zonas costeras donde el calor generó brumas y niebla a última hora de la tarde.
Los datos que analizamos hacen referencia a los puntos afectados por el propio relieve y orografía de la península ibérica. Los datos ofrecidos en formato .TIFF detallan aquellos puntos donde la visibilidad fue total, parcial o nula por efecto del relieve asignando cuatro valores:
- Valor 0: el terreno impide ver el eclipse.
- Valor 1: el terreno permite ver la mitad superior del Sol.
- Valor 2: el terreno permite ver la mitad superior y parte de la inferior del Sol.
- Valor 3: el terreno permite ver en Sol en su integridad.
1.1 Lectura del fichero TIFF
Para la lectura del .TIFF utilizaremos la librería Rioxarray de Python, que nos permite volcar el contenido de un TIFF en un xarray, una estructura de datos ampliamente utilizada para trabajar con información georreferenciada. Una vez cargados los datos y formateados como xarray, es posible recurrir a la librería Matplotlib para crear un mapa e inspeccionar el ámbito geográfico que comprende, mostrado a continuación.

Figura 1: Mapa de visibilidad por relieve del Sol el 12 de agosto de 2026. Fuente: elaboración propia -datos.gob.es.
Los datos, como se mencionaba en la introducción, abarcan toda la península ibérica, parte de Francia y la zona occidental del norte de África, de forma que las Islas Baleares y las Canarias forman parte de un único conjunto de datos. Se puede observar en este punto cómo las zonas de sombra se relacionan de forma intuitiva con la orografía de cordilleras y mesetas, así como con la puesta de sol y la sombra que induce en el levante a la hora del eclipse.
Otra información relevante que podemos observar es la resolución de este conjunto de datos. En los ejes x e y se puede ver el número de puntos aproximado en cada una de las dimensiones, lo que se traduce en una alta resolución orientada a obtener el mayor detalle posible.
Dado que nuestro objetivo es desarrollar mapas y visualizaciones que puedan ser publicadas en la web, así como el tratamiento ágil de datos, nos centraremos en una zona en concreta, tomando como muestra la extensión de un municipio. De este modo, los ficheros de salida son relativamente ligeros y siempre por debajo de los 10Mb, permitiendo que los navegadores actuales sean capaces de procesarlos de forma rápida y eficiente.
1.2 Perímetro de estudio
Utilizando los datos sobre los perímetros municipales en el País Vasco, procedemos a la lectura del fichero SHP y a su estructuración en formato GeoPandas, una librería de Python que permite crear geometrías asociadas a una serie de propiedades y atributos de forma intuitiva.
Para la realización de este ejercicio seleccionamos el municipio de Amurrio, ya que presenta una orografía diversa que nos permite tener todo el espectro posible de visibilidades. En la siguiente imagen podemos observar los límites del municipio utilizando la librería Matplotlib de Python, contextualizados en coordenadas de longitud y latitud.

Figura 2: Mapa del perímetro del municipio de Amurrio en el País Vasco a partir del SHP accesible como datos abiertos. Fuente: elaboración propia -datos.gob.es.
1.3 Recorte del perímetro
Gracias a la librería Shapely de Python es posible recortar un xarray con la información municipal contenida en el GeoPandas. Una vez recortado, utilizamos Matplotlib para representar el subconjunto de datos, donde observamos la variedad de valores y, por tanto, la diversidad de lugares con visibilidad total, parcial o nula en una región relativamente pequeña dentro de lo que es la extensión de la península ibérica. A continuación observamos el patrón de una zona dominante de buena visibilidad y de otras de visibilidad más pobre.

Figura 3: Mapa de las zonas de sombra naturales por elevación del terreno a la hora del eclipse en el municipio de Amurrio. Fuente: elaboración propia -datos.gob.es.
1.4 Exportar como GeoJSON
Una vez tenemos un conjunto de datos pequeño y manejable, podemos exportar cada uno de los puntos en formato GeoJSON. Este formato es muy versátil a la hora de exportar datos y utilizarlo en un gran número de aplicaciones y herramientas, a diferencia del TIFF original que suele estar restringido a programas específicos de sistemas de información geográfica.
1.5 Visualización en mapas del GeoJSON
El fichero GeoJSON resultante nos permite presentar la información en aplicaciones de visualización geográfica como KeplerGL o GoogleEarth, así como integrarla de forma sencilla en proyectos de visualización utilizando Javascript. Para ello, pueden utilizarse bibliotecas como Leaflet o D3.js, requiriendo únicamente unas pocas líneas de código.
La primera herramienta que utilizaremos para visualizar las zonas de sombra por relieve va a ser la herramienta KeplerGL, que ya introdujimos en un ejercicio anterior sobre de datos geoespaciales. Para ello, basta con arrastrar el fichero al interfaz de carga de archivos, tras lo cual se genera de forma automática una representación por polígonos asociado a cada punto. En la configuración de la visualización, vinculamos el color a la variable shadow y establecemos la escala tipo Quantize para distribuir los valores de forma homogénea a lo largo del intervalo. Finalmente, seleccionamos una capa base de imágenes satelitales para contextualizar la información y facilitar la identificación del relieve subyacente que da lugar a las zonas de mayor y menor visibilidad, tal y como vemos en la siguiente imagen.

Figura 4: Mapa en KeplerGL de las zonas de sombra naturales por elevación del terreno a la hora del eclipse en el municipio de Amurrio. Fuente: elaboración propia -datos.gob.es.
La siguiente herramienta en la cual podremos visualizar el resultado de un GeoJSON es Google Earth. En su entorno de desarrollo podemos cargar el fichero GeoJSON, seleccionar la escala de colores y configurar distintos parámetros de visualización mediante el cuadro de diálogo correspondiente. A pesar de ser mucho más limitado en customización que KeplerGL, GoogleEarth cuenta con una precisa distribución tridimensional que permite asociar cada punto a su equivalente en el mapa, pero esta vez incorporando la altitud del punto. El efecto de distribuir puntos en altura dota de más realismo al mapa, tal y como se ilustra a continuación.

Figura 5: Mapa en GoogleEarth de las zonas de sombra naturales por elevación del terreno a la hora del eclipse en el municipio de Amurrio. Fuente: elaboración propia -datos.gob.es.
Finalmente, el fichero GeoJSON podemos incorporarlo a un frontal web donde la librería Leaflet permite crear una cartografía en la que poder proyectar los puntos contenidos dentro del archivo de datos. En la siguiente imagen podemos ver el resultado, muy similar a los casos anteriores, donde sobre una imagen satelital tenemos los puntos que hemos extraído del TIFF originalmente. Este tipo de mapas podemos incorporarlos a frontales web con un alto grado de customización, superando las posibilidades ofrecidas por herramientas como KeplerGL o GoogleEarth. El notebook con el código de Javascript para Leaflet se puede consultar en Observable.

Figura 6: Mapa de las zonas de sombra naturales por elevación del terreno a la hora del eclipse en el municipio de Amurrio en Leaflet. Fuente: elaboración propia -datos.gob.es.
2. Zona de sombra proyectada del eclipse
Una vez que hemos identificado los puntos de la geografía ibérica en los cuales es posible ver el eclipse en su plenitud, pasamos a visualizar la trayectoria y extensión de la zona de sombra que proyecta la Luna sobre la superficie terrestre.
Para ello utilizamos el fichero .GPKG del CNIG, que incluye una capa dedicada a la localización y extensión de las zonas de sombra a determinados intervalos de tiempo.
2.1 Lectura de .GPKG
La lectura del archivo .GPKG la realizaremos con la ayuda de la librería GeoPandas de Python. En primer lugar, extraemos los nombres de las diferentes capas contenidas en el geopackage, siendo éstas definidas por las primeras dos palabras: oscurez_standard, moon_shadow y durtot_standard.
La capa que nos interesa es moon_shadow, así que volcamos el contenido de esa capa en un dataframe de GeoPandas. Para tener una perspectiva global de todo el recorrido de la sombra a través de la península, unimos todas las geometrías de cada intervalo temporal en una única forma geométrica.
2.2 Zona de sombra agregada
Con la ayuda de la librería Cartopy podemos crear un sencillo mapa de la extensión de todo el recorrido del eclipse sobre la península. A continuación se muestra el recorrido contextualizado por las coordenadas de latitud y longitud.

Figura 7: Mapa de la zona de sombra agregada creado por el eclipse desarrollado en Cartopy. Fuente: elaboración propia -datos.gob.es.
Al igual que en el caso de las zonas de sombra por relieve, nos interesa focalizar sobre el detalle, en este caso un intervalo temporal determinado. Para ello elegimos un tiempo concreto de la duración del eclipse y creamos un mapa específico para ese momento, lo cual nos permite ver con gran realismo qué forma puede llegar a tener la zona de sombra sobre la Tierra. En la siguiente imagen se muestra la zona de sombra para t = 200, unos 20 minutos tras el comienzo del eclipse.

Figura 8: Mapa de la zona de sombra a los 20 minutos del comienzo del eclipse creado en Cartopy. Fuente: elaboración propia -datos.gob.es.
2.3 Exportar como GeoJSON
Una vez tenemos seleccionado un momento y zona de sombra determinados, podemos exportar esa geometría en formato GeoJSON para poder utilizar otras herramientas más sofisticadas o para incorporarla a un entorno web. Para ello, redefinimos el orden de las coordenadas de los puntos que forman la geometría. Este paso, poco intuitivo, nos permite garantizar la correcta definición de la forma de la geometría en Javascript. Hay que tener en cuenta que en una forma geométrica cerrada, el interior puede ser considerado el exterior y viceversa. Forzando el orden de los puntos que se sigue para crear una forma geométrica cerrada garantizamos la definición de lo que es exterior e interior, facilitando así el posterior coloreado de la geometría en Javascript.
2.4 Visualización en mapas del GeoJSON
Al igual que en la sección sobre las zonas de sombra por relieve y orografía, incorporamos el fichero GeoJSON a diferentes herramientas y métodos de cartografía en Javascript para explorar diferentes formas de visualización, sacando partida de las ventajas de cada una de ellas.
En KeplerGL podemos subir el archivo GeoJSON de salida y crear una forma poligonal con todos los puntos contenidos en el fichero. El resultado es la zona de sombra proyectada sobre un mapa que podemos modificar tal y como explicamos en un ejercicio de datos previo. El resultado se muestra a continuación:

Figura 9: Mapa de las zonas de sombra creadas por el eclipse en KeplerGL. Fuente: elaboración propia -datos.gob.es.
Alternativamente podemos utilizar Google Earth y aprovechar su proyección cartográfica en forma de esfera para resaltar el efecto que produce el eclipse a escala planetaria y donde las formas geométricas curvas y distorsionadas cobran más realismo y sentido. Un eclipse no deja de ser el resultado de la interferencia de la luz entre dos esferas proyectada sobre otra esfera. En este contexto las proyecciones "planas" pierden la coherencia de una proyección esférica. El resultado se puede ver en la siguiente imagen.

Figura 10: Mapa de las zonas de sombra creadas por el eclipse en Google Earth. Fuente: elaboración propia -datos.gob.es.
A la hora de integrar estas visualizaciones en un entorno web, librerías de Javascript como Leaflet o D3.js son de gran ayuda, ya que con unas pocas líneas de código se puede crear un mapa con los polígonos contenidos en un GeoJSON, y personalizar los estilos de ese polígono de forma fácil e intuitiva. En el caso de Leaflet, muestra a continuación la extensión de la zona de sombra sobre una proyección satelital. El código correspondiente para la creación de este mapa se encuentra en un notebook de Observable:

Figura 11: Mapa de las zonas de sombra creadas por el eclipse en Leaflet. Fuente: elaboración propia -datos.gob.es.
En el caso de D3.js, aprovechamos la extensa librería de proyecciones cartográficas para crear un globo terráqueo y, al igual que en el caso de Google Earth, dar esa perspectiva planetaria que resulta, sin duda, más realista para comprender la naturaleza de un eclipse y el efecto combinado de las geometrías esféricas implicadas. En la siguiente imagen se puede ver el trazo de la zona de sombra elegido para este ejercicio. Para replicar este mapa se puede utilizar el código del notebook de Observable:

Figura 12: Mapa de las zonas de sombra creadas por el eclipse creado con D3.js. Fuente: elaboración propia -datos.gob.es.
Lecciones aprendidas
En este ejercicio de datos hemos aprendido a leer un fichero .TIFF o .GPKG, extraer la información relevante, volcar los datos sobre estructuras como xarray o GeoPandas, hacer un mapa preliminar sin salir de Python, exportar los datos en formato GeoJSON y, finalmente, explorar diversas herramientas dependiendo del entorno que necesitemos para el proyecto de visualización. De esta manera, hemos conseguido:
- Adquirir familiaridad con diferentes formatos de información geográfica tales como .TIFF, .GPKG o .SHP. Esto nos permite aprovechar la riqueza en formatos disponibles, tener la misma información geográfica representada en diferentes formas y, por lo tanto, habilitar el uso de una plétora de herramientas para representar los datos.
- Leer ficheros .TIFF a través de Python tanto para su representación gráfica como para su transformación a formatos válidos para crear visualizaciones en la web. En este proceso aprendemos, además, a realizar conversión de datos geográficos, pasando de ficheros de entrada .TIFF y .GPKG a ficheros de salida en un formato manejable y adecuado a entornos web como es el formato GeoJSON.
- Delimitar zonas de interés a partir de archivos con una amplia cobertura espacial, para centrarse en poblaciones o regiones precisas y poder transmitir un mensaje concreto a la hora de comunicar información relevante. En concreto, aprendemos a recortar información georreferenciada en formato TIFF sobre un contorno específico como pueden ser los límites de un municipio y a descartar aquellos datos que estén fuera de ese contorno.
- Utilizar las librerías Cartopy o Matplotlib de Python para hacer una visualización preliminar de la información contenida en un fichero TIFF.
- Crear un globo terráqueo donde se pueda visualizar la zona de sombra de un eclipse utilizando Google Earth o D3.js, aportando una visualización con un mayor rigor astronómico.
- Explorar distintas alternativas de visualización gracias a la diversidad de herramientas disponibles. En concreto, hacemos un recorrido por todo el espectro de complejidad de visualizaciones espaciales, desde herramientas intuitivas como GoogleEarth, con la cual el público ya está familiarizado gracias a GoogleMaps, hasta herramientas de código como Python o Javascript a través de D3.js.
Conclusiones
Este ejercicio de datos nos ha permitido pasar de formatos utilizados habitualmente en entornos profesionales de sistemas de información geográfica a otros más manejables para poder crear nuestros propios mapas, bien con la ayuda de aplicaciones populares como KeplerGL o GoogleEarth, bien con librerías de Javascript para su integración en proyectos web.
Asimismo, hemos visto cómo con unas pocas líneas de código podemos manipular los datos de entrada para focalizar sobre regiones de interés, seleccionar intervalos temporales determinados o personalizar mapas a nuestro gusto y elección.
Próximos pasos
Los pasos siguientes que se proponen para profundizar en el análisis son:
- Explorar los formatos NetCDF o KML/KMZ, también georreferenciados, para tener un mayor control y dominio sobre los formatos de datos más populares en cartografía y análisis geoespacial.
- Comparar las características astronómicas del eclipse de 2026 con los de 2027 y 2028, accesibles en el Catálogo de datos de datos.gob.es.
- Representar variables que no se han mostrado en este ejercicio, como las efemérides o parámetros tales como la duración, la elevación o el azimut de los cuerpos celestes implicados en el eclipse.
Ámbitos de aplicación
El resultado de este ejercicio de visualización de datos aplica y apela a los siguientes ámbitos del análisis de datos:
- Periodístico: para la divulgación de la información precisa referente a los eclipses de sol.
- Científico: una vez los datos son accesibles, se pueden explorar todas las variables astronómicas incluidas en el conjunto de datos del CNIG y hacer un retrato del fenómeno astronómico mucho más completo que el descrito en este ejercicio.
- Analítico: el ejercicio se ha ceñido a la visualización más tradicional en base a mapas y cartografías. Explorar otras formas de visualización con un conjunto de datos tan atractivo puede incentivar la creatividad y la innovación a la hora de representar este tipo de eventos.
Iruzkinak