La publicación de aplicaciones web mapping con plataformas alojadas en la nube se enmarcan en un sector tecnológico que va madurando a gran velocidad. Estas plataformas proporcionan una infraestructura muy fiable y escalable para la implementación de soluciones a nivel de web, con costes de soporte y administración mínimos, y con más flexibilidad de la que cabría esperar.
Este artículo se centra en la carga de datos en CartoDB utilizando como herramienta el conversor de formatos GeoConverter que se distribuye con la suite gratuita Geobide. El ejercicio nos va a servir por un lado para demostrar la flexibilidad que nos ofrece CartoDB para integrarnos de forma sencilla en su arquitectura, y por otro, instruirnos en el uso de GeoConverter y su nuevo "plugin" para la lectura y escritura de datos en ese repositorio.
Wikipedia dice sobre CartoDB:
“CartoDB is a Software as a Service (SaaS) cloud computing platform that provides GIS and web mapping tools for display in a web browser. CartoDB users can use the company's free platform or deploy their own instance of the open source software. CartoDB is offered as freemium service, where accounts are free up to a certain size”
O sea, describe la típica arquitectura de herramientas geográficas alojadas en la nube con una política de precios basada en el volumen de datos alojados y en un portfolio de capacidades tecnológicas para ajustarlas a nuestras propias necesidades.
Por otra parte Geobide es una suite gratuita que engloba un conjunto de herramientas desktop para transformar y geoprocesar datos geográficos. Geobide soporta los formatos CAD/GIS vectoriales más comunes en el mercado (Shapefile, DGN, DXF/DWG, SDE, FGDB, PostGIS, LAS, ...).
El ejercicio me va a permitir demostrar la flexibilidad que ofrece CartoDB con sus APIs y lo fácil que nos va a resultar integrar nuestras propias herramientas en esa arquitectura basada en la nube.
Pongámonos ya manos a la obra!
Como es lógico,
CartoDB ofrece su propio importador de datos desde diferentes
formatos de fichero (Shapefile, CSV) pero yo voy a “practicar”
con su API desarrollando un nuevo lector-escritor de su repositorio
de datos para Geobide. Este nuevo "plugin" se ofrece ya de forma
gratuita y lo puedes descargar libremente junto con toda la suite Geobide desde su web. Ahí va un pantallazo de GeoConverter con los todos formatos soportados incluyendo también el correspondiente a CartoDB.
De las diferentes APIs para desarrolladores que ofrece CartoDB hay una que me ha
parecido especialmente interesante por su flexibilidad, y es la SQL API. Según la documentación, CartoDB aloja los datos, nuestros
propios datos subidos a la nube, en PostgreSQL/PostGIS y esta API nos
permite interactuar con ellos utilizando directamente sentencias SQL
a las capas geográficas alojadas.
Guau!!!! eso suena
muy bien, pues a ver si es verdad :-). El desarrollo del nuevo plugin lo he basado en el uso de ese API que mediante sentencias
SQL estilo “CREATE TABLE”, “SELECT”, “INSERT”, … se gestionan los datos de la capa en CartoDB. Podemos
ahora con GeoConverter personalizar mejor el proceso de importación
de los datos (aspecto no demasiado elaborado en la herramienta propia
de CartoDB) en aspectos como la definición de los campos de las
geometrías, o en la definición de reglas y expresiones para la
personalización de los valores de sus atributos.
Quedan fuera de este
artículo los detalles técnicos del desarrollo del plugin para
GeoConverter que daría para otro artículo distinto donde documentar el uso de
su SDK para la creación de nuestros propios gestores de formatos u otras funcionalidades.
Bueno, pues vamos a
allá y como ejercicio podemos utilizar una capa de municipios de mi
querida tierra Navarra. Esta capa la tengo descargada de la IDE de
Navarra (IDENA) y es un Shapefile de 360 recintos con sus específicos
atributos en el correspondiente fichero DBF.
Sobra decir que podríamos usar como entrada de GeoConverter nuestra propia capa de datos, y en cualquiera
de los formatos CAD/GIS soportados, incluso ahora también el propio
CartoDB!
Puedes consultar en este link la ayuda completa de GeoConverter.
Puedes consultar en este link la ayuda completa de GeoConverter.
Paso 1, Seleccionar
la fuente de datos de entrada.
Indicamos en este
punto el formato y aquellos datos que son personalizables en la lectura
de la capa a cargar.
Para un Shapefile, simplemente debemos indicar el nombre del fichero.
Paso 2, Definir un filtro alfanumérico y/o espacial a aplicar a esos
datos de entrada si queremos sólo cargar un extracto de toda la capa.
Paso 3, Definir la
fuente de datos de salida.
En este ejercicio
definimos como salida el formato “CartoDB”, indicando el nombre
de usuario y ApiKey de usuario CartoDB donde vamos a volcar los
datos.
La definición geométrica y alfanumérica de la capa es automáticamente mostrada por GeoConverter desde la capa de entrada, pero podemos modificar por ejemplo la tabla de atributos para ajustarla a nuestras preferencias y que será la que en un fin último veremos como dataset en CartoDB.
A modo didáctico
vamos a personalizar la tabla de atributos, borrando algún campo que
viene de la capa de entrada, y añadimos alguno asignando su valor en
base a una expresión basada en datos de los features (valores de
campos o datos geométricos como área, longitud, …). La expresión
que podemos definir puede contener la combinación de atributos,
operadores matemáticos estándar, y funciones de utilidad que
necesitemos para calcular el valor final del atributo.
Paso 4, definir la transformación espacial de las geometrías a grabar.
CartoDB almacena
las geometrías de cada capa en dos campos “the_geom” y
“the_geom_webmercator” en los sistemas de referencia espacial
“EPSG:4326” y “EPSG:3857” respectivamente. El segundo sistema
de referencia es gestionado automáticamente por CartoDB así que
para nosotros como usuario nuestra capa se maneja en “EPSG:4326”.
Indicamos pues la
transformación a aplicar a la capa a cargar. El sistema de
referencia espacial de la capa de municipios de mi ejemplo es el “EPSG:25830”,
y como salida indicamos el “EPSG:4326”.
Y ya está! Pulsar el botón "Procesar" y listo. Ya tenemos nuestra capa en el repositorio de
CartoDB para usarla en su estupenda plataforma!
En este punto me gustaría comentar la buena impresión que ofrecen las herramientas de CartoDB para un recién llegado como yo a este producto, con una interfaz moderna e intuitiva. Un "bonus" por esta plataforma!
Como conclusión final del artículo podemos resumir que hemos comprobado la flexibilidad que nos ofrece CartoDB con sus APIs y lo hemos aplicado en desarrollar un "plugin" en otra herramienta externa. De paso nos ha servido para descubrir la enorme potencialidad que se abre con esas APIs de este “gis-cloud”.