Uno de los problemas del webmapping es que necesita descargar la información espacial de un servidor. Y esto ha de ser lo más rápido posible. GeoJSON aun siendo un formato sencillo, dependiendo del número de coordenadas que contenga, puede ser muy pesado y por lo tanto el mapa puede tardar mucho tiempo en cargar.

Para la demo he aprovechado el GeoJSON de ejemplo que usé en un artículo anterior donde explico cómo crear un mapa con Leafleft y GeoJSON. Este GeoJSON ocupa de origen la friolera de 1.6 MB :-). Veamos cómo reducir el tamaño de un GeoJSON para mejorar la velocidad de nuestra aplicación webmapping:

Opción1: reducir el tamaño de un GeoJSON con QGIS (Quantum GIS)

En primer lugar cargamos el GeoJSON

Cómo reducir el tamaño de un GeoJSON

Después vamos a Vectorial > Herramientas de geometría > Simplificar geometrías. Seleccionamos la capa a simplificar, la tolerancia de simplificación, activamos y especificamos donde guardar el resultado y finalmente clic en aceptar:

Cómo reducir el tamaño de un GeoJSON

Como resultado de la simplificación QGIS genera un shapefile (.shp). Ahora sólo nos falta exportar el shapefile a formato GeoJSON, especificamos donde guardar el resultado y clic en aceptar. Opcionalmente podemos seleccionar otro sistema de coordenadas diferente al de origen (SRC) y la precisión de las coordenadas. Esto última puede ayudar a reducir aún más el GeoJSON.

Cómo reducir el tamaño de un GeoJSON

En mi caso, mientras que el GeoJSON original ocupaba 1.6MB el GeoJSON simplificado ahora ocupa 192KB.

Cómo reducir el tamaño de un GeoJSON

Opción2: reducir el tamaño de un GeoJSON con mapshaper

La principal ventaja de esta herramienta es que al ser online no necesita instalación aunque también podemos instalar la aplicación y manejar la herramienta desde la línea de comandos.

Acepta Shapefile, GeoJSON y TopoJSON como formatos de entrada y salida y tres métodos de simplificación de geometría. Seleccionamos el porcentaje de simplificación y exportamos al formato deseado.

Cómo reducir el tamaño de un GeoJSON

En mi caso, mientras que el GeoJSON original ocupaba 1.6MB el GeoJSON simplificado ahora ocupa 171KB.

mapshaper3

Opción3: reducir el tamaño de un GeoJSON con mapshaper desde línea de comandos

Una vez instalado node.js puedes instalar la última versión de mapshaper con npm:

npm install -g mapshaper

Existe una introducción a la herramienta por línea de comandos que muestra todo lo que puede hacer. En nuestro caso para simplificar el GeoJSON escribimos lo siguiente:

mapshaper demo.json -simplify 10% -o resultado.json