You are here:GeoTux»Geo-Blogs»Bases de datos geográficos»Bases de datos espaciales con SpatiaLite y conexión con QGIS 1.1.0

Estadísticas

Invitados: 51
Usuarios registrados: 3145
Usuarios en línea:
-
Registrados hoy:
-

Registro

Redifusión (RSS)

Blogs y Noticias:
Recibe las actualizaciones en Geo-Noticias y Geo-Blogs

Recibir por e-mail
Recibir Geo-Noticias y Geo-Blogs por e-mail

¿Qué es esto?

Viernes 10 de Abril de 2009 13:48

Bases de datos espaciales con SpatiaLite y conexión con QGIS 1.1.0

Written by  Samuel Fernando Mesa Giraldo
Rate this item
(3 votes)

Logo SpatiaLite

SpatiaLite es el soporte espacial de la base de datos de SQLite. Se constituye como una alternativa de implementación a los conocidos sistemas de PostgreSQL/PostGIS y MySQL. Como se detalla en el siguiente blog existen grandes ventajas frente a la sencillez de instalación y configuración, portabilidad, la velocidad de procesamiento, el soporte de varias funcionalidades con datos geográficos y la conexión oficial con la última versión de Quantum GIS v1.1.0.

1. El sistema gestión de bases de datos SQLite

 

SQLite similar a PostgreSQL o MySQL es un sistema de gestión de bases de datos relacional (SMBD), que se destaca a sus homólogos libres, por ser un reducido archivo ~500 KB, muy flexible, portable y funcional desarrollado en el lenguaje C, y no necesita previa configuración de un administrador de bases de datos. El conjunto de base de datos (tablas, definiciones, índices y los propios datos) son almacenados en un fichero estándar de extensión SQLite. La última versión de SQLite 3, permite base de datos hasta 2 Terabytes de tamaño, y también permite la inclusión de campos tipo blob, lo que posibilita añadir la extensión espacial que detallaremos a continuación [1].

En conclusión, y como su nombre lo dice SQLite se destaca por ser un motor de bases de datos sencillo muy fácil de instalar y facilidad de implementar. Es accesible a través de lenguajes de origramación como C, Python, PHP, TCP, Ruby y Perl, y su objetivo es cumplir al máximo con el estándar SQL-92, proveer rapidez y simplicidad de la base de datos. De acuerdo a varias fuentes [2],[3],[4] SQLite es más rápido en la mayor parte de las operaciones que sus  los sistemas como PostgreSQL y MySQL.

De acuerdo a [5] una de las principales desventajas de SQLite es su baja concurrencia, es decir a la capacidad para permitir que diversos usuarios hagan uso de la misma base de datos con poca o ninguna diferencia de tiempo, por lo general si una aplicación va a necesitar una alta concurrencia de escritura de datos siendo el tiempo un factor crítico, debe considerarse un sistema de gestión de base de datos más robusto, cuyo diseño sea expresamente para múltiples usuarios o de alta concurrencia, para mayor información ver [6].

 

------

1. es.Wikipedia. http://es.wikipedia.org/wiki/SQLite
2. Database Speed Comparison. http://www.sqlite.org/speed.html
3. Justificación de usar SQLite. http://blog.pucp.edu.pe/item/50841
4. SQLite Database which one is the fastest. http://www.dmxzone.com/go?7605
5.  Nota muy simple sobre la concurrencia de SQLite. http://dbnaut.com/sqlite/nota-muy-simple-sobre-la-concurrencia-en-sqlite-3/
6. Appropriate Uses For SQLite. http://www.sqlite.org/whentouse.html

Continua  ...

 

{mospagebreak}{multithumb}

 

2.  La extensión espacial de SpatiaLite

 

SpatialLite, básicamente consiste del motor de base de datos SQLite con funciones espaciales agregadas, de manera similar se puede relacionar a la extensión espacial de PostGIS en el SMBD de PostgreSQL. A través de SpatiaLite es posible almacenar geometrías y realizar consultas con funciones espaciales, de forma similar como podría encontrarse en otros sistemas como PostgreSQL/PostGIS, MySQL, Microsoft SQL Server 2008, IBM DBII y oracle Locator/Spatial. Cumple gran parte de la especificación de la Open Geospatial Consortium (OGC) “Simple Features Specification for SQL”, por lo que su sintaxis se asemeja a la manejada por PostgreSQL/PostGIS, adicionalmente que se cuenta con la integración de librerías como PROJ.4  y GEOS.


Dentro de las características más interesantes de SpatiaLite en su versión 2.3.0 encontramos:

 

  • Integración de GEOS para realizar análisis espacial
  • Integración de PROJ.4 para implementar transformación de coordenadas entre diferentes sistemas de referencia espacial.
  • Integración de LIBICONV con soporte de codificaciones locales.
  • A través de SQLITE 3.6.2 incluye una implementación nativa de la indexación espacial Rtree.
  • Soporte del formato EXIF GPS (EXchangeable Image file Format), el cual incluye en el metadato de las fotografías la ubicación geográfica donde se realizó la toma.
  • Incluye el módulo de VirtualNetwork para realizar análisis de redes de la ruta más corta a través del algoritmo de Dijkstra's.
  • Soporte para la librerías de FDO/OGR (VirtualFDO)
  • Una gran cantidad de herramientas que nos permite importar, exportar datos geográficos en formatos shapefile, sql y realizar la conexión con comandos spatialite.
  • Lectura directa y consultas sobre geometrías shapefiles, sin requerir conversión de formatos (VirtualShape)
  • Una muy buena documentación y datos de ejemplo en la página oficial.
  • Conexión para  visualización y edición de geometrías a través de Quantum GIS v1.1.0
  • Una interfaz gráfica (spatialite-gui)

 

 

Continua  ...

 

{mospagebreak}

 

 

3.  Implementación práctica de una base de datos espaciales con SpatiaLite


El documento está enfocado principalmente para usuarios de GNU/Linux, la mayor parte de las capturas de pantalla se realizó en el sistema operativo GNU/Linux Ubuntu 8.04 AMD64.

3.1.  Obteniendo las herramientas necesarias

Bueno, antes de empezar en cualquier implementación práctica se debe instalar y configurar las herramientas en el sistema operativo. Para ello debemos dirigirnos a la página oficial para descargar el software necesario. Allí podemos encontrar los binarios para diversas plataformas, como Linux 32 bit, Mac Os X, Windows, o el código fuente, que en casos de plataformas de Linux de 64 bit requiere compilarse.


Página oficial: http://www.gaia-gis.it/spatialite/

En el enlace de precompiled binaries descargamos las siguientes herramientas libspatial, spatial-tools y spatialite-gui. Para los usuarios de Windows pueden obtener también los binarios de las dependencias de PROJ.4 y GEOS. Luego sigue descomprimir los archivos en una carpeta y pasar al siguiente paso.

 

Para los usuarios que requieran compilar el código deben descargar los siguientes archivos en el siguiente orden, descomprimir los archivos y ejecutar los comandos de compilación.
Para Ubuntu instalar las dependencias :

 

> sudo apt-get install libwxbase2.8-dev  libgeos-dev sqlite3 libsqlite3-dev proj libwxgtk2.8-dev wx-common

 

libspatialite-amalgamation-2.3.0.tar.gz (1.414 KB)

 

> sudo ./configure
> sudo make
> sudo make install

 

 

spatialite-tools-2.3.0.tar.gz (389 KB)

 

> sudo ./configure

> sudo make

> sudo make install

 

 

spatialite-gui-2.3.0.tar.gz (613 KB)

Renombrar el archivo de Makefile-plataforma a Makefile, y para usuarios de Linux de 64 bit, borrar la siguiente entrada el archivo Makefile (-march=i686). Por último copiar el binario de spatialite-gui a un directorio bin del sistema.

 

 

> sudo cp Makefile-linux32  Makefile

> sudo make
> sudo cp ./bin/spatialite-gui /usr/local/bin/

 

 

Continua  ...

 

{mospagebreak}

 

3.2.  Creando la base de datos espaciales y conectando a  las bases de datos de ejemplo

 

Una vez obtenido las herramientas, debe tener los siguientes ejecutables: spatialite, exif_loader, shp_doctor, spatialite_network, spatialite_tool y spatialite_gui.

Puede descargar algunos datos de ejemplos muy completos de la página web del proyecto de SpatiaLite, test-2.3.sqlite.gz, test-network-2.3.sqlite.gz y exif-gps-samples.tar.gz .

Lo que continua es realizar una nueva conexión o conectar a una base de datos espacial existente a partir de los archivos descomprimidos de las bases de datos de ejemplo. Para ambos casos implementamos la interfaz gráfica de spatialite-gui, la base de datos espacial tiene como formato .sqlite.

 

 

> spatialite-gui

 

 

Interfaz gráfica Spatialite-gui

Figura 1. Interfaz gráfica de SpatiaLite

 

Pruebe creando la base de datos espaciales en el menú Files-> Creating a New (empty) SQLite DB, especifique tanto la ruta como el nombre de la nueva base de datos espaciales.

 

Creando una nueva base de datos SpatiaLite

Figura 2. Creando una nueva base de datos espaciales

 

Observe que por defecto se crea la tabla de geometric_columns que especifica metadatos y la geometrías y la tabla de spatial_ref_sys en donde se específica los códigos y parámetros del sistema de referencia de coordenadas de las capas espaciales.

Luego continúe cargando las capas necesarias a través del menú Files-> Load Shapefile. En la ventana emergente debe especificar tanto el nombre de la capa, código EPSG del sistema de referencia espacial, el nombre de la columna de geometría y el sistema de codificación local.

 

Cargando datos SHP en spatiaLite
Figura 3. Cargando datos geográficos en SpatiaLite

 

Finalmente puede consultar las tablas y capas espaciales en la base de datos, a través de las consultas SQL o través del menú emergente y edit table rows con clic derecho sobre cada capa.

 

Visualizar tablas
Figura 4. Visualizar tablas en SpatiaLite

 

Continua  ...

 

{mospagebreak}

 

3.3.  Realizando algunas operaciones y consultas espaciales

Para realizar las siguientes consultas espaciales, puede cerrar la conexión actual a través del menú File->Disconnecting current SQLite DB y conectar a la base de datos de ejemplo de test-2.3.sqlite a través del menú File->Connecting an existing SQLite DB. En esta base de datos espacial encontramos varios datos geográficos de Italia, HighWays (línea), Regions (polígonos) y Towns (punto). A partir de estas capas vamos a realizar varias consultas de análisis espacial y otras operaciones como transformación de coordenadas. Puede revisar el documento de referencia de las funciones soportadas actualmente por SpatialLite en la página Web oficial del proyecto.

 

  • Calcular el área de todos los polígonos en hectáreas de la capa regiones

 


SELECT Name, area(geometry)/10000 AS AREA_HAS FROM Regions ORDER BY AREA_HAS;

Consulta 1
Figura 5. Consulta espacial SQL áreas

 

  • Seleccionar todos los polígonos en la capa regiones que tenga una extensión mayor de un millon de hectáreas 100000 Has.

 


CREATE TABLE regions_gt_1000000has AS SELECT Name, Geometry AS geom, area(geometry)/10000 AS AREA_HAS FROM Regions WHERE area(geometry)/10000 > 1000000 ORDER BY AREA_HAS;

 

Consulta espacial SQL 2
Figura 6. Consulta espacial SQL áreas mayores de 1 millon de Has

 

Recuerde que siempre al crear una nueva capa espacial a partir de una consulta, debe ingresar en la tabla de geometry_columns el metadato correspondientes, con el objeto de que pueda ser cargado en Quantum GIS. Una opción es realizando clic derecho sobre la tabla luego en Insert new row y llenar los datos manualmente.

 

Agregar geometría
Figura 6. Agregando geometrías

 

  • Seleccionar todas las ciudades (towns) que están comprendidads en la la región de ABRUZZI.

 


CREATE TABLE towns_abruzzi AS SELECT Towns.Name, Towns.Peoples,Towns.Geometry FROM Towns, Regions WHERE within(Towns.Geometry,Regions.Geometry) AND Regions.name = "ABRUZZI";

 

 

Cosulta espacial WITHIN
Figura 7. Consulta espacial SQL WITHIN

 

  • Realizar una área de influencia (buffer) de 15 Kilómetros sobre el poblado de Scanno.

 


CREATE TABLE towns_scanno_15km AS SELECT Name, Peoples, buffer(Geometry,15*1000) AS geom FROM Towns WHERE Name = 'Scanno'

 

  • Seleccionar todos aquellos poblados que estén a menos de 15 Kilómetros del poblado de Scanno

 


CREATE TABLE seleccion_scanno AS SELECT Towns.Name, Towns.Geometry AS geom FROM towns_scanno_15km,Towns WHERE intersects(towns_scanno_15km.geom,Towns.Geometry)

 

3.4.  Análisis de redes con el algoritmo de ruta óptima de Dijkstra's.

En este caso nos vamos apoyar de la base de datos de ejemplo test-network-2.3.sqlite (sección en construccion).

 

Continua  ...

 

{mospagebreak}

 

4.  Conexión, visualización y edición con Quantum GIS

La última versión de Quantum GIS en desarrollo v1.1.0 soporta la bases de datos espaciales de SpatiaLite, por lo que es posible crear las conexiones, visualizar y editar los datos y resultados de las consultas SQL de manera similar como se realiza en PostGIS. En GNU/Linux es posible descargar los binarios de debian para plataformas de 32 bit y realizar su instalación [descargar]. Para usuarios de M$ Windows pueden descargar el archivo  portable de QGIS-Janus v0.11 con el plugin de SpatialLite en este enlace [descargar], o también pueden probar la versión preliminar de QGIS-DEV a través del instalador de OSGeo4W .

Para el caso de compilar el código fuente en GNU/Linux, las instrucciones de habilitar la extensión de SpatiaLite en QGIS v1.1.0  se encuentran en página oficial del proyecto [ir a enlace]. Sin embargo recomiendo descargar y utilizar el código fuente desde el sistema de control de cambios de QGIS.

 


> svn co https://svn.osgeo.org/qgis/trunk/qgis qgis_unstable

 

Recuerde tener en cuenta las dependencias para realizar la instalación. Las instrucciones finales de compilación se encuentran en la página 3 en el numeral B) Building.

Una vez que QGIS v1.1.0 se instale correctamente en GNU/Linux, o si utiliza la versión de QGIS-Janus v0.11 en Windows es posible realizar las conexiones y visualizar las bases de datos espaciales de SpatiaLite. En el botón Add SpatiaLite Layer es posible crear las conexiones a las bases de datos y visualizar las capas geométricas.
QGIS SpatiaLite
Figura 8. Extensión SpatiaLite en QGIS v1.1.0
El primer paso consiste en crear una nueva conexión con la base de datos espacial SpatiaLite y sólo debe seleccionar el archivo que se trabajo anteriormente test-2.3.sqlite. Una vez se realice la conexión se establece la conexión con el botón conectar, y ahora se puede observar las capas geométricas, su nombre, tipo de geometría y columna de geometría. {multithumb thumb_width=400 thumb_height=0 thumb_proportions=bestfit full_width=800 full_height=700 image_proportions=bestfit}
Conexión SpatiaLite
Figura 9.Extensión espacial SpatiaLite en QGIS v1.1.0
Por último se selecciona la capa espacial y se añade a la vista de QGIS. Observemos los resultados de los datos disponibles y las consultas espaciales SQL. {multithumb default}
Visualización capa SpatiaLite
Figura 10.Visualización capa SpatiaLite
Los resultados se muestran en la siguiente figura, se puede observar los poblados que están comprendidos en la región de Abruzzi, el buffer de 15 Km sobre el poblado de Scanno y la selección de los poblados más cercanos dentro de los 15 Km del poblado de Scanno.
Visualizar consultas SQL SpatiaLite
Figura 11.Visualizar consultas SQL SpatiaLite

Finalmente se observan otras capturas de pantalla de una base de datos espacial creado con datos de Colombia y la edición de capas geográficas.

 

Base de datos espaciales Colombia

Figura 12. Base de datos espaciales SpatiaLite Colombia

Herramientas de edición de Quantum GIS en la base de datos espacial de SpatiaLite
Edición SpatiaLite
Figura 13. Edición SpatiaLite en Quantum GIS

Continua  ...

{mospagebreak}

 

5.  Conclusiones

SpatialLite es una solución de base de datos espaciales muy sencilla de instalar, de implementar y totalmente funcional cumpliendo con la mayor parte de las especificaciones de la OGC. Frente a otros sistemas de gestión de bases de datos, tiene ventajas y limitaciones, sin embargo queda demostrado los grandes avances que se ha logrado con esta herramienta.

Quantum GIS, en las próximas versiones 1.1.0, tendrá el soporte oficial de SpatiaLite, lo que posibilita tener un solución de visualización, edición de los datos geográficos y el enlace a funciones de análisis espacial muy completas a través de SpatiaLite y posiblemente a través del lenguaje de programación de Python .

 

6.  Recursos recomendados:

Sobre SpatialLite. http://www.gaia-gis.it/spatialite-2.3.0/spatialite-manual-2.3.0.html
Tutorial rápido de SpatiaLite. http://www.gaia-gis.it/spatialite-2.3.0/spatialite-tutorial-2.3.0.html
Lista de referencia de funciones SQL. http://www.gaia-gis.it/spatialite-2.3.0/spatialite-sql-2.3.0.html
Análisis de redes con VirtualNetwork. http://www.gaia-gis.it/spatialite-2.3.0/spatialite-network-2.3.0.html
SpatiaLite en 5 minutos. http://www.camptocamp.com/fr/blog/2009/02/kiss-spatialite-in-5-minutes/
Manual de inicio de SpatiaLite. http://www.bostongis.com/PrinterFriendly.aspx?content_name=spatialite_tut01

Continuará

Last modified on Jueves 29 de Septiembre de 2011 03:52

Comentarios  

 
0 # Qgis con spacialiteleloirudaondo 14-04-2009 09:51
Hola, tras leer los links indicados, estoy intentando instalar el soporte para spacialite en qgis pero no lo consigo, seguramente por ser novato en linux.
En este momento tengo QGIS 1.0.0 sobre Ubuntu Hardy 32bit.
Podrí­as hacer un minituto con lineas de comando.
Saludos
Responder | Responder con una citación | Citar
 
 
0 # Re:Qgis con spacialitesamtux 14-04-2009 21:16
Hola leloirudaondo, efectivamente en este blog no se detalla la compilación del código fuente, sin embargo el objetivo es que pueda instalarse en cualquier plataforma GNU/Linux, con unos pasos muy generales, con las referencias y enlaces disponibles en el blog.

Como se pueda dar cuenta, la versión que se maneja de Quamtun GIS es la versión 1.1.0, la cual está en fase de dasarrollo y prueba. Hasta el momento no conozco la versión binaria para Ubuntu, por lo que puedo recomendar usar los instaladores para Windows a traves del OSGeo4w (QGIS-dev) o de QGIS-JANUS. Por último y bajo su propia responsabilidad puede probar la instalación de los binarios de debian (http://debian.gfoss.it/qgis_spatialite/]GFoss.it).
Responder | Responder con una citación | Citar
 
 
0 # QGIS v1.1 para Windowssamtux 05-05-2009 16:13
Para los usuarios de Windows pueden descargar la última versión v1.1 de Quantum GIS en los siguientes enlaces:

Windows Nightly Build of QGIS Trunk

http://www.norbit.de/67 (www.norbit.de/67)
http://download.osgeo.org/qgis/win32/QGIS-1.1.0-0-Setup.exe (download.osgeo.org/qgis/win32/)
Responder | Responder con una citación | Citar
 
 
0 # Integración con otros GIS de escritoriosCarlosi Pacha 05-06-2012 15:01
Tengo una inquietud, hay algúna integración con otros GIS de escritorio con SpatiaLite, por ejemplo GvGIS, UDIG, etc... ya que ventaja de postgres/postgis es que tiene integración con la mayoría de GIS Desktop
Responder | Responder con una citación | Citar
 
 
0 # androidlolo 01-10-2012 20:21
como puedo instalar el spatialite en android y como puedo usarlo en el mismo?
Responder | Responder con una citación | Citar
 
 
0 # QGIS 2.4 con SpatiaLitekikemoron 11-07-2014 16:16
Hola, tengo el siguiente problema, al intentar conectar una bd SpatiaLite en QGIS 2.2. o 2.4, me dice que la libspatialite es obsoleta y debo trabajar con v 4.0 o superior. El equipo en el que esta instalado tiene Ubuntu 12.04 y QGIS 2.4. He intentado cambiar esta libreria (libspatialite) pero hasta el momento no se he podido.
Gracias de antemano
Responder | Responder con una citación | Citar
 

Escribir un comentario


Código de seguridad
Refescar

 

¿Dónde nos leen?