Categorías: Tutoriales

Instalación de PostGIS para PostgreSQL

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.

María Inmaculada Maldonado Rodríguez

Ver comentarios

      • No había oído hablar nunca de ellos, sí que es curioso. ¿Peor en cuento a posibilidades y/o por rendimiento?

        ¿Para Oracle existe algo?

        • Ambo, al menos para trabajos en geoportales o grandes bases de datos geográficas. Postgis ya casi es el estándar dentro del ámbito de SIG OpenSource y todo lo relacionado con servicios OGC.
          De todas formas, estoy viendo ya cosas para usar MySQL en visores ligeros con Apis de mapas tipo Leaflet en hosting básicos. En estos casos el uso de Postgis es imposible.

          ...y sí, Oracle tambié trabaja con geodatos. Pero aquí ya me pierdo

  • La verdad es que la extensión PostGIS da un valor añadido a PostgreSQL muy interesante.

  • Buenas tardes a todos, estoy iniciando en el mundo de la programación y base de datos, (osea, solo se de este mundo un 0,2%) y buscando ejemplos de como usar un campo tipo POINT, llegue a ustedes. Estoy aprendido a usar php con la ayuda de scriptcase (segun mucha gente no es programar, pero me gusta la rapids de hacer la cosas) y al grabar los datos de pruebas (UPDATE "public".pais SET pais = 'ESPAÑA', cod_telf_pais = '34', coordenada = 40.463667,-3.749 WHERE id_pais = 1) el sistema me arroja un error.

    Revisando el materia de este post y los otros relacionados, creo que me falta algunas dependencias para posgis, correcto? y el crear las plantillas.

    Creo que postgreSQL es mejor que mySQL (solo comprado velocidad de respuesta en ambientes controlados, tal ves no es la mejor forma, pero el resultado me gusto, y por eso estoy aprendiendo), pero es mucho mas complicado.

    Y tomando lo que dice "Patricio Soriano", me pone a pensar si aprender postgreSQL lo suficiente para hacer los programas que necesito (Administración de Empresas, y tracking de GPS) y hacer eso con mySQL.

    De verdad agradezco muchos sus comentarios (estoy haciendo el curso de network faculty y scrtipcase)

    Muchas gracias a todos por sus comentarios.

    Saludos desde Venezuela

Entradas recientes

DeepSeek

2 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

4 semanas hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace