demo-topojson

Muestro paso a paso cómo descargar un shape, convertirlo en json o topojson y visualizarlo en d3.

View project on GitHub

TopoJSON y GeoJSON en d3.js

El objetivo de esta demostración es mostrar algunas fuentes de datos geográficos, su descarga en shapefile, la conversión a GeoJSON y TopoJSON y finalmente su uso en una visualización utilizando d3.js.

Características TopoJSON

Es deseable conocer a fondo el formato GeoJSON y TopoJSON, para mayor detalle puede consultar el sitio oficial de la OGC o el documento de Antonio Sierra [ http://www.idee.es/resources/presentaciones/JIIDE13/miercoles/5GeoJSON_y_TopoJSON.pdf ](http://www.idee.es/resources/presentaciones/JIIDE13/miercoles/5_GeoJSON_y_TopoJSON.pdf) que expuso en el evento _IV jornadas Ibéricas de infraestructuras de datos espaciales (2013). Para el alcance de esta demostración basta con saber que:

  • El TopoJSON es una extensión del GeoJSON.
  • Su característica principal es la eliminación de arcos redundantes.
  • Por lo anterior logra una disminución del tamaño del archivo en comparación con un GeoJSON.
  • Debido a las características del TopoJSON, hay una inclusión de error en el proceso de simplificación.

Requerimientos

En esta demostración se va a utilizar QGIS que es un software GIS de escritorio free and open source.

Descarga de información geográfica

Para descargar información geográfica hay diversas fuentes, una de las primeras que podría consultar son las Infraestructuras de Datos Espaciales (IDE), en Colombia puede referirse a la ICDE (Infraestructura Colombiana de Datos Espaciales) y a IDECA (La IDE de Bogotá). En esta demostración se descargan datos de barrio común desde el Laboratorio Urbano de Bogotá. Como referencia a continuación hay tres enlaces para encontrar información geográfica.

  • Mapa de referencia de Bogotá (IDECA): https://www.ideca.gov.co/es/servicios/mapa-de-referencia
  • Geocontenidos web (ICDE): http://www.icde.org.co/servicios/geocontenidos-web
  • Laboratorio urbano: https://bogota-laburbano.opendatasoft.com

Descarga de barrios desde el Laboratorio Urbano de Bogotá

Para este caso se descarga el dato en formato shapefile, esto es un comprimido en zip por lo que se debe descomprimir antes de importarla en QGIS.

Descarga de barrios desde el Laboratorio Urbano de Bogotá

Visualización en QGIS

Para importar en QGIS la capa de barrios, una vez descargarda y descomprimida se realiza lo siguiente:

  1. En QGIS se selecciona la herramienta Añadir capa vectorial. Añadir capa vectorial a QGIS
  2. Se selecciona la ubicación de la capa (conjunto de datos). Hay múltiples opciones para conectar los datos, en este caso se utiliza un archivo como origen de datos. Añadir capa vectorial a QGIS
  3. Esto ya debe mostrar la capa, hasta el momento no se conoce el datalle del dato ni se ha asignado simbología. Añadir capa vectorial a QGIS

Explorando la tabla de atributos

Una vez cargada la capa en QGIS, explorar su tabla de atributos es simple, solamente haga clic contrario sobre la capa y seleccione la opción Abrir tabla de atributos. Abrir tabla de atributos En la tabla de atributos aparece el campo localidad que se usará para asignar la simbología a la capa. Abrir tabla de atributos

Asignado simbología

La simbología se configura en las propiedades de la capa, para esto nuevamente se hace clic contrario sobre la capa y se selecciona la opción propiedades. Abrir tabla de atributos Allí en la opción Estilo se representa con el tono el atributo localidad, en este caso he dejado que QGIS asigne automáticamente los colores por lo que la expresividad no es la mejor, se aprecian colores muy similares en la escala. Abrir tabla de atributos Después de aplicar y aceptar los cambios, se debería ver un mapa de Bogotá con la división de barrios comunes donde el color representa las localidades, en este caso se aprecian fácilmente errores en el dato. Abrir tabla de atributos Abrir tabla de atributos

Uso de la capa en D3

Ahora sí a lo que nos interesa… El objetivo de explorar los datos y asignar la simbología es obtener la misma visualización en d3.js ya que la geometría solamente no sería tan interesante.

Instalación de plugins en QGIS

La instalación de plugins en QGIS normalmente se realiza por medio del menú complementos que permite su administración e instalación, en este caso el complemento aún se encuentra en fase experimental por lo que se debe descargar del sitio web de QGIS.

El plugis a instalar es d3 Map Render desde https://plugins.qgis.org/plugins/d3MapRenderer/ . Abrir tabla de atributos Abrir tabla de atributos

La descarga es el archivo d3MapRenderer-0.10.3.zip que se encuentra debe descomprimir en el directorio de plugins de QGIS, el directorio predeterminado es C:\Users\<nombre-de-usuario>\.qgis2\python\plugins. Abrir tabla de atributos Abrir tabla de atributos

Una vez instalado, se debe habilitar, así que ahora en QGIS, en el menú complementos se abre la ventana de administración, se busca d3 Map Render y se habilita. Abrir tabla de atributos, Abrir tabla de atributos,

QGIS a d3

Una vez habilitado el complemento aparece en barra de herramientas para su uso, para utilizarlo solamente clic y a seguir el wizard.

Abrir tabla de atributos,

Dentro de las configuraciones en esta demostración se ha configurado:

  • El título de la visualización
  • El directorio de salida del proyecto en d3.
  • La proyección geográfica (se mantuvo la predeterminada).
  • Se habilitaron las opciones de zoom, paneo.
  • La ubicación de la leyenda.
  • Los configuraron los campos deseados en el idenfity.

Nota: En las opciones de formato de salida únicamente está disponible GeoJSON, para exportar a TopoJSON puede utilizar el TopoJSON 2.0 API Reference.

Abrir tabla de atributos, Abrir tabla de atributos, Abrir tabla de atributos, Abrir tabla de atributos,

Finalmente se obtiene en el directorio seleccionado una aplicación web con lo siguiente:

Abrir tabla de atributos

Explorando en el directorio json se encuentra un archivo *.json que al explorarlo se evidencia que tiene formato GeoJSON. Abrir tabla de atributos

Aplicación web

El resultado del D3 Map Render se encuentra disponible en esta aplicación web.

Finalmente, con el fin de obtener el mismo dato en formato TopoJSON, se sigue el tutorial de d3 MapRenderer (sugiero que lo sigan para más detalle), en el que básicamente se debe:

  1. Instalar Node.js.
  2. Instalar el paquete topojson.

    npm install -g topojson

  3. Instalar el servidor http para Node.js (opcional).

    npm install -g http-server

  4. Convertir el dato de formato GeoJSON a TopoJSON.

    geo2topo states=barriosprueba.json > topo_barriosprueba.json

  5. Para mayor información sobre las posibilidades de generación, simplificación y manipulación del TopoJSON se sugiere consultar el TopoJSON 2.0 API Reference.

Explorando en archivo generado, se encuentra un archivo *.json que contiene la capa de barrios en formato TopoJSON (sin simplificar). Abrir tabla de atributos

Contacto

Si tiene algún comentario no dude en contactarme @jofremanchola.