Introducción
Las administraciones públicas distribuyen sus mapas (generalmente) en el formato Shapefile.
Shapefile
El shapefile es un formato vectorial geoespacial introducido a principio de los 90. Realmente está compuesto por una colección de al menos tres archivos:
- `.shp: figuras en binario (polígonos…), son los delimitadores geométricos.
.dbf
: los datos asociados a las figuras o registros. En formato dBase..shx
: un índice de figuras para poder indexar los datos más rápidamente.
También pueden contener otros archivos como .proj
, .shp.xml
, .sbn
…
En este ejemplo se va a utilizar el shapefile (INE Cartografía digitalizada) de las [secciones censales] (http://en.eustat.eus/documentos/elem_3830/definicion.html) de España:
A pesar de ser útiles para muchas cosas, los shapefiles no fácilmente legibles por el ser humano o integrables en una página web. Su principal problema es el tamaño del archivo .shp
:
109Mb of shapes and 11Mb of data is not the best way to represent a map in a browser.
GeoJSON & TopoJSON
GeoJSON, basado en JSON, permite almacenar colecciones de tipos de datos geométricos (incluyendo atributos no espaciales) en una única estructura.
Una extensión interesante de GeoJSON es TopoJson, que codifica la topología geoespacial y proporciona ficheros de salida de tamaños significativamente menores (hasta un 80%).
Cómo convertir shapefiles a archivos derivados de JSON?
Navegador web
- Mapsharer: El mejor. Shapefile, geojson, topojson, csv, svg y representaciones en mapa.
- geojson-topojson: GeoJSON <-> TopoJSON.
- Distillery: GeoJSON -> TopoJSON & Map representation.
NodeJS & CL
Mike Bostock ha escrito largo y tendido sobre este tema con muchos ejemplos interesantes: https://medium.com/@mbostock/command-line-cartography-part-1-897aa8f8ca2c
Python
Hay algunas soluciones gist con diferentes librerias en Python: