Mapa de Chile en TopoJSON y visualización en Power BI

En general, el tipo de visualización que personalmente más tiempo de investigación me tomó, son los mapas geográficos de calor. 

Mi objetivo, relacionado a mi publicación anterior, era simplemente poder generar un mapa de calor, donde el parámetro que definiera la escala, fuera la superficie promedio de las propiedades de una comuna en particular. Y no fue algo sencillo.

Al ahondarme por primera vez en este problema, entendí que visualizar datos geográficos de manera tan precisa pocas veces resulta una tarea trivial o sencilla. Esto, por la diversidad de soluciones que existen a la hora de visualizar datos, y también porque cada una de estas soluciones conlleva un tratamiento diferente de los datos geográficos. Sin embargo, lo que muchas de estas soluciones tienen en común, es que necesitamos información del mapa a ser visualizado. Es decir, tuve un contratiempo tan fundamental como básico: necesitaba un mapa de Chile, en alguno de los formatos estándares para la visualización de mapas.

Luego de bastante tiempo de aprendizaje, y mezclando cosas que aprendí hace años, con algunas más actuales, en este artículo describo conceptualmente cómo lograr una visualización como esta en PowerBI:


Buscando en internet en 2018, di con un repositorio en Github llamado simplemente "geo", del usuario jlhonora (https://github.com/jlhonora/geo). En él, encontré mapas en formato GeoJSON de alta resolución para todo el territorio nacional, los que a su vez fueron extraídos de los mapas vectoriales de la biblioteca del congreso nacional (Mapas vectoriales -) y transformados a formato GeoJSON por él, por lo que muchas, muchas gracias. 


(Nota: me parece interesante que al buscar por internet, di primero con el sitio de jlhonora que con el sitio de la biblioteca del congreso nacional. Claramente algo falla en cómo se disponibiliza la información a los usuarios de datos)

GeoJSON es una de las soluciones más utilizadas por los científicos de datos para la visualización de mapas (ver: GeoJSON—ArcGIS Online Help | Documentation). Es un estándar de notación basado en JSON, que mezcla tanto información para la renderización de polígonos 2D en alta resolución, como georeferencias para cada uno de los puntos poligonales, permitiéndonos renderizar polígonos (con forma de mapas) georreferenciados. Lamentablemente, GeoJSON no está soportado de manera nativa por PowerBI, pero no pasa nada en ese sentido, debido a que existen soluciones para transformar data geográfica de un formato a otros.

Al entrar de lleno en la utilización de los mapas de Chile en formato GeoJSON, noté que estos se encontraban divididos por regiones, por lo que nuestro primer paso, era encontrar una forma de unir esta visualización, para lograr un único polígono que contuviera todas las zonas de Chile. Esto lo logré gracias a la herramienta "geojson-merge" (https://github.com/mapbox/geojson-merge), con la que pude mezclar todos los polígonos en uno solo. 


El único problema, es que el archivo GeoJSON final pesaba 239MB: 


Esto tiene una rápida solución si no necesitamos un mapa de alta resolución, y la encontré gracias a este hilo en el Geographic Information Systems exchange (GeoJSON too bulky - what to do?), la cual consiste en utilizar la herramienta mapshaper (https://mapshaper.org/) para aplicar un algoritmo de simplificación al polígino, que funciona sorprendentemente bien. Este fue el resultado final:


Un resultado más que bueno, prácticamente sin diferencias que podamos percibir al nivel que trabajaremos la visualización. (Nota: los puntos rojos son puntos donde los polígonos interceptan entre sí, mapshaper los marca por defecto, estos no aparecerán en la visualización final.)

Como mencioné más arriba, Power BI no tiene soporte de GeoJSON (acaso todo nuestro trabajo fue para nada!?), por lo que con Mapshaper podemos no sólo simplificarlo, sino que también explotarlo a un formato compatible con Power BI, en este caso, TopoJSON (formato basado en GeoJSON, pero con características adicionales). El archivo final (al que llamé chile_lowres.json) pesa tan sólo 729KB, y puede ser encontrado en mi repositorio de Github (https://github.com/dfarfanr/topojson_chile_lowres)


Ahora sólo queda problarlo en Power BI, para lo cual añadimos una visualización de tipo Shape Map, en la cual cargaremos nuestro archivo json:


Finalmente, así luce la visualización en Power BI:



La ventaja de integrar estas visualizaciones en Power BI (y no hacerlas puramente en python, por ejemplo) reside principalmente en la ventaja de que al implementarla en Power BI, esta visualización queda sujeta al modelo de datos que hayamos definido, permitiendo utilizar la visualización para interactuar también con el resto de visualizaciones, además de poder configurar tooltips, bookmarks, entre otros. Por ejemplo, al filtrar departamentos en Región Metropolitana, la visualización (esto se debe configurar) automáticamente ajusta la escala de color, y hace zoom en la región seleccionada.






 


Comentarios

Entradas populares