Cada vez son más las aplicaciones que hacen uso de localizaciones dentro de su funcionamiento y que además, necesitan almacenarlas de alguna forma dentro de su base de datos. Es entonces cuando PostgreSQL toma ventaja frente a MySQL gracias a la existencia de PostGis.
PostGis es un software libre, tiene licencia GNU General Public License (GPL), convierte nuestra base de datos PostgreSQL en una base de datos espacial capacitada para almacenar y trabajar con datos espaciales.
La instalación es muy sencilla, esta que indico aquí es la que usé en local y en un servidor en producción con Ubuntu 12.04, supongo que en versiones posteriores será similar con algún cambio en las versiones de paquetes pero diría que la mecánica es la misma, pero si tenéis alguna duda preguntad en comentarios y lo vemos entre todos.
Instalamos los paquetes:
sudo apt-get install python-software-properties sudo apt-add-repository ppa:ubuntugis/ppa sudo apt-get update sudo apt-get install postgresql-9.1-postgis sudo apt-get install build-essential postgresql-9.1 postgresql-server-dev-9.1 libxml2-dev proj libjson0-dev xsltproc docbook-xsl docbook-mathml gettext postgresql-contrib-9.1 pgadmin3 sudo apt-get install python-software-properties sudo apt-add-repository ppa:olivier-berten/geo sudo apt-get update sudo apt-get install libgdal-dev
Una vez realizadas estas instalaciones, verficamos la versión de libGDAL, que debe ser 1.9.0
$ gdal-config --version 1.9.0
También verificamos la de libGEOS
$ geos-config --version 3.3.2
Ahora debemos actualizar la versión de libGEOS a la 3.3.3, para ello realizamos los siguientes pasos:
sudo apt-get install g++ ruby ruby1.8-dev swig swig2.0 ''--- added to other instructions, not installed by default in 12.04 & required for this make wget http://download.osgeo.org/geos/geos-3.3.3.tar.bz2 tar xvfj geos-3.3.3.tar.bz2 cd geos-3.3.3 ./configure --enable-ruby --prefix=/usr
Al final del proceso de configuración debe aparecer lo siguiente:
Swig: true Python bindings: false Ruby bindings: true PHP bindings: false
Finalmente, compilamos:
make sudo make install cd ..
y comprobamos nuevamente la version, que ya si debe ser la 3.3.3:
$ geos-config --version 3.3.3
Continuamos con la instalación de PostGis:
wget http://postgis.refractions.net/download/postgis-2.0.6.tar.gz tar xfvz postgis-2.0.6.tar.gz cd postgis-2.0.6 ./configure --with-gui
El final de esta instalación debe decir algo así:
PostGIS is now configured for i686-pc-linux-gnu -------------- Compiler Info ------------- C compiler: gcc -g -O2 C++ compiler: g++ -g -O2 -------------- Dependencies -------------- GEOS config: /usr/bin/geos-config GEOS version: 3.3.3 GDAL config: /usr/bin/gdal-config GDAL version: 1.9.0 PostgreSQL config: /usr/bin/pg_config PostgreSQL version: PostgreSQL 9.1.3 PROJ4 version: 47 Libxml2 config: /usr/bin/xml2-config Libxml2 version: 2.7.8 JSON-C support: yes PostGIS debug level: 0 Perl: /usr/bin/perl --------------- Extensions --------------- PostGIS Raster: enabled PostGIS Topology: enabled -------- Documentation Generation -------- xsltproc: /usr/bin/xsltproc xsl style sheets: /usr/share/xml/docbook/stylesheet/nwalsh dblatex: convert: mathml2.dtd: /usr/share/xml/schema/w3c/mathml/dtd/mathml2.dtd
para finalizar la instalación, compilamos:
make sudo make install sudo ldconfig sudo make comments-install
una vez terminados estos pasos, creamos el usuario de postgres:
sudo apt-get install postgresql-client sudo -u postgres createuser --superuser $ USER sudo -u postgres psql postgres=# password postgres (la password que he puesto es postgres)
Finalmente, creamos la plantilla template_postgis, que es la clave para la creación de una base de datos de tipo espacial.
sudo su postgres sudo createdb template _postgis sudo createlang plpgsql template_postgis sudo psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/postgis.sql sudo psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/spatial_ref_sys.sql sudo psql -d template_postgis -c "SELECT postgis_full_version();"
Estas instrucciones son una adaptación mía de la guía que seguí: http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS20Ubuntu1204
Espero que no os haya aburrido con este extenso primer post que escribo en LH .En próximas entradas ahondaremos más sobre bases de datos espaciales como esta que acabo de crear.