Mapa del Tiempo en Power BI

No me preguntéis por qué, pero el otro día al ver la predicción del tiempo en las noticias de la TV me pregunté ¿se podría hacer en Power BI? Pues lo vamos a demostrar en este post.
Principales Retos
Los principales retos que podía anticipar eran:
- Encontrar una fuente de datos de previsión meteorológica sencilla.
- Mostrar iconos en vez de valores numéricos en un mapa.
- Gestionar la navegación entre el mapa y los datos de detalle.
- Darle un poco de humor con gifs animados. :D
A continuación, explicaré como he ido resolviendo cada uno de ellos en esta prueba inicial.
Fuente de datos meteorológicos
La fuente que primero se me pasó por la cabeza fue la Agencia Española de Meteorología (AEMET), que dispone de una API de acceso abierto a través del link https://opendata.aemet.es/centrodedescargas/inicio.
Tras analizarlo detalladamente, disponía de muchos datos en AEMET, pero era una conexión algo más compleja de lo que quería para esta prueba inicial. Seguí investigando y encontre una API más sencilla que cubría mis necesidades en el link https://www.el-tiempo.net/api.
A través de las urls web que podéis ver en el link anterior, pude crear una conexión tipo WEB para importar a Power BI las siguientes entidades:
- Predicción del día de las principales ciudades.
- Texto de la predicción global nacional.

Adicionalmente creé una tabla manualmente a través de la opción “Especificar datos” con las coordenadas de las ciudades. He obtenido los datos de la web https://www.geodatos.net/coordenadas/espana.

Mapa con iconos
Tras varios intentos de usar los mapas estándares de Power BI para mostrar un camp tipo “url de imagen” tuve que descartar esa idea.
Como sabéis, los mapas suelen mostrar datos numéricos agregados y los sitúan en el mapa en base a coordenadas o nombres de ubicaciones reconocibles:

Pero nosotros no necesitamos mostrar valores, queremos mostrar iconos como en los mapas del tiempo de la TV. Por eso tuve que recurrir a una visualización personalizada llamada “Icon Map“.
Para incluirlo en vuestro informe de Power BI, debéis pulsar en los 3 puntos de los iconos de las visuales y en la ventana emergente buscar por “Icon Map”:

Ahora que ya tenía el mapa de iconos, necesitaba los iconos del tiempo. Busqué varios iconos de gif animados de diferentes estados climatológicos y los subí a la web par usar las urls de las imágenes.
Tuve que crear una tabla manualmente a través de la opción “Especificar datos” con los iconos para poder usarlos en el informe.

Veréis que hay dos campos de icono. El primero es del icono del tiempo del mapa, y el segundo lo veremos en el apartado de los gifs animados :D
Ahora que ya tenemos coordenadas, nombres de ciudades, predicción e iconos, ya podemos complementar los datos necesarios en el Icon Map:

El resultado queda bastante parecido a lo que podemos ver en la sección de meteorología de un telediario:

Aparte, los iconos tienen cierta animación lo que le aporta al mapa un toque más profesional.
Navegación del mapa al detalle
El tercer reto es que los iconos del mapa fuesen interactivos, es decir, que al clicar sobre ellos, pudiésemos ver el detalle de la previsión de esa ciudad.
Para conseguirlo usé los trucos de navegación avanzada que ya os mostramos en el tutorial de Navegación Avanzada.
Lo primero era replicar los datos que queremos mostrar, pero en una medida que nos permita: mostrar el valor si algún icono está marcado, o no mostrar nada si no hay seleccionada ninguna ciudad.
Para ello usamos la función DAX HASONEVALUE() dentro de un IF. Esto es, si sólo hay una ciudad filtrada, muestra el valor y si no es así no muestres nada. Como ejemplo, os dejo la medida DAX del nombre de la ciudad:
NombreCiudad = IF(HASONEVALUE(Predicciones[PROVINCIA]),MAX(Predicciones[PROVINCIA]),"")Con esto conseguimos que al pulsar en un icono, filtramos la tabla de Predicciones por una ciudad y se muestran los datos de detalle:

Gif Animado para darle un toque de humor
Para aportar el toque final, busqué en Google los gifs animados que veis de la persona en la predicción de detalle. Es un gif diferente para cada tipo de predicción (frío, calor, lluvia) y guardo la url en la segunda columna de icono que veíamos antes en la tabla de iconos.

Para poner los gifs animados, uso una tabla con el campo de la url de la imagen. Ese campo debe ser tipo TEXTO. Recordad que tenéis que rellenar en ese campo la categoría de Datos a “Dirección URL de la imagen“:

Recordad que podréis descargar el fichero pbix original de este proyecto si os suscribís a la newsletter de nuestro blog.
Os dejo el informe accesible para jugar un poco con él:
Conclusiones
Como veis, todo es posible en Power BI. No os frenéis ante cualquier reto que se os presente y si necesitáis ayuda, no dudéis en preguntarnos o a cualquiera de la comunidad de usuarios de Power BI.
Esto ha sido sólo una prueba, pero si lo desarrolláis podéis hacer un mapa del tiempo mucho más trabajado y conectarlo con la fuente de la AEMET que aporta mucha más información.
¡Os reto a que lo intentéis y lo compartáis con nosotros!







Hola!! Incorporé en mi informe el mapa con la API que indicas pero ahora me está dando problemas… Estoy buscando algo similar pero no encuentro nada.
¿Puedes ayudarme por favor?
Muchísimas gracias y felicidades por el contenido de la página, me resulta todo muy útil para mi trabajo.
Hola Myriam,
gracias por seguirnos y poner en práctica nuestros tutoriales. ¿Qué tipo de problema te está dando la API? ¿Te refieres a la API de AEMET? Si me das un poco más de información del error quizás podamos encontrar el problema.
Un saludo,
Hola Iván,
Me refiero a la API que pusiste en el vídeo: https://www.el-tiempo.net/api/json/v2/home
Estuve unos meses actualizando los datos correctamente, pero ahora me da error.
Me da el siguiente error en el PBI:
DataSource.Error: Los datos descargados son HTML, que no es el tipo esperado. Puede que la dirección URL sea errónea o que no haya proporcionado las credenciales correctas para el servidor.
Estoy intentando descargar los datos directamente desde la AEMET pero no me aclaro.
Muchas gracias y saludos.