[Cómo] LibSpatialite en Ubuntu

Imagen de Goyo
70 puntos

SpatiaLite es una extensión para SQLite que soporta datos espaciales según las especificaciones OpenGIS. El proyecto incluye la propia extensión (libspatialite), utilidades de línea de comandos (spatialite-tools), una biblioteca adicional para añadir datos raster también con sus utilidades de línea de comandos (librasterlite), una interfaz gráfica (spatialite-gui) y un GIS sencillo (spatialite-gis). Para más detalles ir a la página web:

http://www.gaia-gis.it/spatialite/

Ubuntu Karmic dispone de paquetes para algunas de estas cosas (libspatialite y libspatialite-bin, que es la traducción a Debian de spatialite-tools), pero son versiones anteriores y falta lo más chulo: la interfaz gráfica y el GIS, además de librasterlite.

En la página de SpatiaLite hay binarios para sistemas Linux de 32 bits. Si usas Ubuntu 9.10 Karmic Koala de 64 bits puedes usar estas instrucciones para instalar a partir del código fuente la versión 2.4.0 RC. Con los cambios lógicos en los nombres de archivos, directorios y direcciones de descarga sirven también para la versión 2.3.0. Supongo que también sirve para otras versiones de Ubuntu.

Antes de nada habrá que disponer de un entorno mínimo para compilar y enlazar:

sudo apt-get install build-essentials

libspatialite

sudo apt-get install libproj-dev libgeos-dev
wget http://www.gaia-gis.it/spatialite-2.4.0/libspatialite-amalgamation-2.4.0.tar.gz
tar xvfz libspatialite-amalgamation-2.4.0.tar.gz
cd libspatialite-amalgamation-2.4.0
./configure --with-geos-lib=/usr/lib --with-proj-lib=/usr/lib
make
sudo checkinstall

spatialite-tools

wget http://www.gaia-gis.it/spatialite-2.4.0/spatialite-tools-2.4.0.tar.gz
tar xvfz spatialite-tools-2.4.0.tar.gz
cd spatialite-tools-2.4.0
./configure --with-geos-lib=/usr/lib --with-proj-lib=/usr/lib
make
sudo checkinstall

librasterlite

sudo apt-get install libtiff4-dev libgeotiff-dev libjpeg62-dev zlib1g-dev libpng12-dev
wget http://www.gaia-gis.it/spatialite-2.4.0/librasterlite-1.0.tar.gz
tar xvfz librasterlite-1.0.tar.gz
cd librasterlite-1.0
./configure
export CPPFLAGS=-I/usr/include/geotiff
make
sudo checkinstall
sudo ln -s /usr/local/lib/libspatialite.so.2.0.4 /usr/lib/libspatialite.so.2

Notas:

No he encontrado otra manera de que el enlazador encuentre las cabeceras de libgeotiff más que poniéndolo en CPPFLAGS.

Al ejecutar las utilidades no se encuentra libspatialite.so.2, que está
en /usr/local/lib y enlaza a libspatialite.so.2.0.4 en el mismo
directorio (por qué las utilidades de libspatialite sí que lo
encuentran?). La solución es enlazar libspatialite.so.2.0.4 en
/usr/lib, que es lo que hace el último comando.

spatialite-gui

sudo apt-get install lbwxgtk2.8-dev
wget http://www.gaia-gis.it/spatialite-2.4.0/spatialite-gui-1.3.0.tar.gz
tar xvfz spatialite-gui-1.3.0.tar.gz
cd spatialite-gui-1.3.0

Aquí no hay script de configuración ni instalación que valgan. Hay un Makefile para cada plataforma.
Es necesario modificar Makefile-Linux para que busque algunas bibliotecas en /usr/lib en vez de /usr/local/lib.

cp Makefile-Linux Makefile-Karmic
gksu gedit Makefile-Karmic

En la línea 19 se asigna la variable EXTRALIBS, hay que modificar las rutas a libgeos_c.a, libgeos.a, libproj.a y libgeotiff.a (es decir todas excepto las que has compilado tú mismo). Debe quedar así:

EXTRALIBS = /usr/local/lib/libspatialite.a /usr/lib/libgeos_c.a \
	/usr/lib/libgeos.a /usr/lib/libproj.a \
	/usr/local/lib/librasterlite.a /usr/lib/libgeotiff.a

Ahora ya se puede compilar

make -f Makefile-Karmic

El ejecutable se crea en el directorio bin.

spatialite-gis
Pues todavía no he probado... en la web de SpatiaLite se puede encontrar algo de información.

Desinstalación

Bien fácil gracias a la magia de checkinstall:

sudo rm /usr/lib/libspatialite.so.2
sudo apt-get remove --purge libspatialite-amalgamation spatialite-tools librasterlite