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
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:
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.
En mi caso, mientras que el GeoJSON original ocupaba 1.6MB el GeoJSON simplificado ahora ocupa 192KB.
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.
En mi caso, mientras que el GeoJSON original ocupaba 1.6MB el GeoJSON simplificado ahora ocupa 171KB.
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
1 Pingback