Miércoles, 20 Agosto 2014 00:00

Trabajando con Spatialite

Una de las características que más me atrae de lo SIG open source es la capacidad de trabajar con gran variedad de formatos geográficos tanto de tipo archivo (shape, geojson, kml,csv o dxf) como en bases de datos geográficas (Postgres/PostGIS, MySQL o Geodatabase de ESRI).

Esta ventaja conlleva por otro lado un problema centrado en la elección del formato de almacenamiento según el tipo proyecto, encargo o trabajo SIG. Una buena entrada para comprender las ventajas/desventajas de cada sistema tituladaShapefiles vs bases de datos espaciales puede encontrarse en la web MappingGIS de Aurelio Morales.

En mi caso, cuando el proyecto GIS tiene

  • cierta entidad respecto al número de capas,
  • es necesario crear información geográfica combinado varias capas de datos mediante (views),
  • requiere campos de tipo texto exceden la capacidad de 254 caracteres o
  • se necesitan estilos gráficos prediseñados de visualización

mi decisión se decanta por el uso de una base de datos geográfica, normalmente PostgreSQL/PostGIS.

Como bien se indica en el trabajo Panorama del SIG Libre presentado en las 8ª Jornadas de SIG Libre, el uso de PostGIS dentro del sector GIS es fundamental y "aunque su uso a nivel general no está tan extendido como MySQL, dentro del sector GIS su uso es casi canónico". Pero existen algunas ocasiones, sobre todo cuando el usuario/cliente no tiene los conocimientos suficientes para la instalación y administración de bases de datos tipo Postgres/PostGIS, el volumen de datos no requeire el despliegue de una infraestructura de gran tamaño o no es necesario el trabajo la edición simultánea de varios usuarios (concurrencia) donde PostgreSQL/PostGIS puede quedarnos un poco largo. En esos momentos es cuando entra en acción base de datos basada en ficheros Spatialite.

Spatialite es ua extensión que agrega a SQLite el soporte para datos espaciales según las especificaciones de la OGC. Podríamos decir que Spatialite es a SQLite lo que PostGIS es a PostgreSQL. La gran diferencia entre las dos sistemas de almacenamiento es que SQLite/Spatialite está configurado por un único fichero lo que facilita su "portabilidad" (no sé si es muy adecuado utilizar este adjetivo pero creo que se entiende) y es bastante sencillo de instalar y configurar. Para saber más sobre las funcionalidades principales de Spatialite se puede acceder a la página oficial del proyecto Spatialiteo a este enlace de la documentación de OSGeoLive sobre la extensión.

Spatialite para rude men

Tras obtener los archivos binarios desde la página oficial e instalar según el sistema operativo (en mi caso con sudo apt-get install spatialite-bin), podemos trabajar con Spatialite desde la terminal usando el comando spatialite. A continuación tenéis un ejemplo de conexión

spatialite /home/user/data/spatialite/equipamientos_culturales.sqlite

y otro de una consulta.

SELECT ROWID, "Name", "tipologia", "geometry" 
FROM "equipamientos_culturales" 
WHERE "tipologia" = "Museos";

Si lo nuestro no es la consola o no somos unos verdaderos rude men podemos instalar y utilizar la interfaz gráficaspatialite_gui. Con esta herramienta podremos crear nuestras bases de datos, importar/exportar ficheros (shapes, csv/txt, dbf o xls), generar consultas, realizar operaciones geográficas, acceder a los metadatos de la base de datos o ver el historial de operaciones entre otras operaciones. Desde esta GUI podremos también obtener una vista geográfica simple de nuestros datos y salvarla a un formato gráfico como png, svg o pdf. Para la versión 1.5 existe un tutorial rápido en inglés en este enlace.

03_spatialite_gui

Spatialite GUI

Trabajando con Spatialite con QGIS

Para ponerlo aun más fácil, desde QGIS podremos trabajar, crear y editar sin problemas datos espaciales en Spatialite, ya que este SIG permite por defecto conectarnos a este tipo bases de datos geográficas. Los menús, operaciones y accesos más comunes son:

  • Creación de una nueva capa y su correspondiente fichero rápidamente desde el menú Capa>Nueva>Nueva Capa Spatialite
  • Añadir una capa desde una una bbdd ya existente desde Capa>Añadir capa Spatialite
  • Gestionar la base de datos desde el Administrador de Bases de datos del menú Base de Datos. Desde aquí podremos realizar algunas tareas administrativas como crear, borrar o renombrar capas o importar/exportar archivos.

06_administrador_bbdd

Administrador de BBDD

Podemos también trabajar con la extensión QSpatiaLite que incluye muchas de las operaciones que podemos realizar desde spatialite_gui pero sin salirnos de QGIS. Podemos crear sentencias SQL avanzadas o importar/exportar ficheros según los formatos espaciales OGR. En el siguiente ejemplo obtenemos una tabla con el número de equipamientos culturales por cada barrio del conjunto histórico de Córdoba.

SELECT  "da04_barrio_ch".'barrio' , COUNT(*) FROM  "equipamientos_culturales" ,  "da04_barrio_ch" 
       WHERE  Within( "equipamientos_culturales".'geometry' ,  "da04_barrio_ch".'geom' )
      GROUP BY   "da04_barrio_ch".'barrio'  ;

08_qgis_QspatiaLite

Extensión QSpatiaLite

Por último, y no menos importante, la última versión de QGIS (2.4) permite añadir a nuestra base de datos los estilos de visualización y consulta de datos definidos para nuestras capas y asignarlos como estilos por defecto. Este opción es realimente interesante, ya que en un mismo fichero podemos incluir el aspectos gráficos de nuestras capas. Para guardar el estilo, accederemos a la pestaña Estilo del formulario Propiedades de la capa. Tras definir el tipo de visualización, pincharemos el botón "Guardar estilo" y la opción "Guardar en base de datos (spatialite)"

09_qgis_salvar_estilo

Guardar estilo en base de datos

Sobre mí

SIGdeletras es Patricio Soriano y Patricio Soriano es SIGdeletras. Trabajo el campo las Tecnologías de la Información Geográfica y especialmente su aplicación en el ámbito del Administración Pública y el Patrimonio Cultural...  ¿Quieres saber más sobre mí?

 

Buscar