Instalación de PostGIS sobre PostgreSQL
#Instalando PostGIS
Una vez configurado el servidor de bases de datos PostgreSQL procederemos a la instalación de las extensiones para sistemas GIS, esto es, postgis.
Prerrequisitos
Hacen falta dos librerías: geos y proj4
Instalación de GEOS (equivalente en C++ al JTS de Java)
- Descargar http://trac.osgeo.org/geos/
-
Descomprimir y compilar:
# tar -xzvf geos-1.0.0.tar.gz # cd geos-1.0.0 # ./configure # ./make # ./make install
Instalación de proj4
- Descargamos el fichero de fuentes fuente de http://www.remotesensing.org/proj/
-
Ejecutamos
# tar -zxvf proj-version.tar.gz # cd proj-version # ./configure # make # make install
Ahora sí, Postgis
-
Lo descargarmos de http://postgis.refractions.net/
-
Descomprimir
-
Copiar al directorio
contrib/postgis/
dentro del cual hemos descomprimido el postgresql. Si por ejemplo, descomprimimos el postgreslq en/tmp/postgresql-version, lo copiaríamos a
/tmp/postgresql-version/contrib/postgis`` -
Editamos el Makefile del ditectorio postgis para que acepte las opciones que queramos.
# Configuration Directives #--------------------------------------------------------------- # Set USE_PROJ to 1 for Proj4 reprojection support # # USE_PROJ=1 ifeq (${PROJ_DIR},) PROJ_DIR=/usr/local/ endif #--------------------------------------------------------------- # Set USE_GEOS to 1 for GEOS spatial predicate and operator # support # USE_GEOS=1 ifeq (${GEOS_DIR},) GEOS_DIR=/usr/local/ endif
-
Ejecutamos dentro del directorio postgis
# ./make # ./make install
Enlace a PostGIS docs: http://postgis.refractions.net/docs/x83.html
Configuración
Una vez instalado lo siguiente que hay que hacer es configurar una base de datos en la que podamos introducir referencias geoespaciales.
Primero nos identificamos como usuario postgres
y luego añadimos una nueva
base de datos:
# su postgres
$ export PATH=/usr/local/pgsql/bin/:$PATH
$ createdb merlos_gis --encoding=latin1
Probamos que podemos acceder (escribir \q para salir)
$ psql merlos_gis
Welcome to psql 7.3.4, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
merlos_gis=# \q
Le indicamos que vamos a usar el lenguaje PL PGSql, que es requerido por Postgis.
$ createlang plpgsql merlos_gis
Ahora nos movemos al directorio /usr/local/pgsql/share/contrib/postgis
donde
hay dos ficheros SQL que nos servirán para crear dos tablas necesarias para
una base de datos con georererencias. Los ficheros son postgis.sql
y
spatial_ref_sys.sql
.
$ psql -d merlos_gis -f postgis.sql
$ psql -d merlos_gis -f spatial_ref_sys.sql
NOTA: En este paso tuve un pequeño problema. Resulta que al ejecutar el primer comando obtenía el siguiente error:
psql:postgis.sql:38: NOTICE: ProcedureCreate: type histogram2d is not yet
defined
psql:postgis.sql:38: ERROR: Load of file
/usr/local/pgsql/lib/libpostgis.so.0.8 failed: libgeos.so.1: cannot open
shared object file: No such file or directory
Es decir, no encontraba la librería libgeos.so.1
, que se encuentra en
/usr/local/lib
. Para solucionar esto lo único que hice fue enlazar tanto esa
biblioteca como la libproj.so.0
mediante los siguientes enlaces:
# cd /usr/local/pgsql/lib
# ln -s ../../lib/libgeos.so.1
# ln -s ../../lib/libproj.so.0 --
Usando PostGIS
Tenemos dos comandos incluidos con PostGID: shp2pgsql
y pgsql2shp
Estos convierten un fichero de Shapefile a sentencias PostgreSQL y viceversa. Por ejemplo, para incluir un fichero a nuestra base de datos:
$shp2pgsql fichero.shp nombre_tabla merlos_gis > fichero.sql
$psql -U postgres -d merlos_gis -f fichero.sql