Rub21
12/10/2012 - 3:53 PM

gistfile1.txt



Por defecto Ubuntu 12.04 no trae PostGIS 2.0, y lo necesitaba para hacer algunas pruebas, porque lo que leí sobre esta versión que tenia muchas novedades y especialmente en las capas raster. Así que manos a la obra para tener postgis 2.0 y postgresql 9.1.

Entramos a la consola y escribimos:
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:sharpie/for-science
sudo apt-add-repository ppa:sharpie/postgis-nightly
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update
sudo apt-get install postgresql-9.1-postgis

Volvemos a escribir en la consola:
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

Necesitamos libGDAL 1.9, para que nos funcione toda la integración entre postgis y postgresql.
Entramos de nuevo a la consola:
sudo apt-add-repository ppa:olivier-berten/geo
sudo apt-get update
sudo apt-get install libgdal-dev libgdal1-dev

Ahora verificamos la versión de libGDAL. Deberíamos de tener como mínimo la versión 1.9.0. Escribimos en la consola:
gdal-config --version

Y nos saldría por pantalla algo por el estilo así:
1.9.1

Ahora verificamos la versión del geos. Deberíamos de tener como mínimo la versión 3.3.2. Escribimos en la consola:
geos-config --version

Y nos saldría por pantalla algo por el estilo así:
3.3.4

Ahora por fin le toca el turno a PostGIS. Entramos a la consola y escribimos:
wget http://postgis.refractions.net/download/postgis-2.0.1.tar.gz
tar xfvz postgis-2.0.1.tar.gz
cd postgis-2.0.1/
./configure --prefix=/usr/include/gdal --with-geos=/usr/bin/geos-config --with-pg=/usr/lib/postgresql/9.1/bin/pg_config --with-python --with-gui

Por saldría por pantalla:
PostGIS is now configured for i686-pc-linux-gnu

-------------- Compiler Info -------------
C compiler:           gcc -g -O2
C++ compiler:         g++ -g -O2
SQL preprocessor:     /usr/bin/cpp -traditional-cpp -P

-------------- Dependencies --------------
GEOS config:          /usr/bin/geos-config
GEOS version:         3.3.4
GDAL config:          /usr/bin/gdal-config
GDAL version:         1.9.1
PostgreSQL config:    /usr/bin/pg_config
PostgreSQL version:   PostgreSQL 9.1.4
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

Ahora escribimos en la consola:
make
sudo make install
sudo ldconfig
sudo make comments-install

Volvemos a escribir en la consola:
sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/shp2pgsql
sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/pgsql2shp
sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/raster2pgsql

Ahora cambiamos el password del usuario postgres. Entramos a la consola:
sudo passwd postgres

Sale esto por pantalla:
Introduzca la nueva contraseña de UNIX:
Vuelva a escribir la nueva contraseña de UNIX:
passwd: contraseña actualizada correctamente

Volvemos a escribir en la consola:
sudo -s -u postgres
psql

Una vez dentro de psql, escribimos en la consola:
\password postgres

Sale esto por consola:
Enter new password:
Enter it again:
postgres=#

Ahora salimos.
\q

OBS:
Tienen que tener usuarios con privilegios de root o ser root.

Creamos una base de datos y en este caso sería template_postgis. Entramos a la consola y escribimos:
sudo -u postgres createdb template_postgis
sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/spatial_ref_sys.sql
sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/postgis_comments.sql

Lo de arriba es lo básico para tener una base de datos espacial. Si quieren que la base de datos soporte raster o topology, tienen que realizar lo que describo abajo.

Opcional:

    Con soporte a raster.

sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/rtpostgis.sql
sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/raster_comments.sql

    Con soporte a topology.

sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/topology.sql
sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/topology_comments.sql

 

Para comprobar si postgis esta funcionando correctamente, hacemos lo siguiente. Escribimos en la consola:
su postgis

Volvemos a escribir en al consola:
psql template_postgis

Ahora estamos en la base de datos template_postgis. Para saber si esta base de datos contiene postgis, escribimos:
SELECT postgis_full_version();

Y nos saldrá por pantalla:
postgis_full_version
--------------------------------------------------------------------------------------------------------------------------------------------------------------
POSTGIS="2.0.1 r9979" GEOS="3.3.4-CAPI-1.7.3" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.9.1, released 2012/05/15" LIBXML="2.7.8" LIBJSON="UNKNOWN" RASTER
(1 row)

Con esto comprobamos que funciona correctamente PostGIS 2.0 en nuestra base de datos. En otras entradas hablaré más sobre raster y utilidades sobre PostGIS 2.0.
Fuente 1: OSGEO
Fuente 2: George MacKerron: code blog
Fuente 3: Kudos
Fuente 4: PostGis