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.

1) Instalaciones previas. hacen falta dos librerías: geos

 1.1) Instalación de GEOS (equivalente en C++ al JTS de Java)

    1.1.1)Descargar  http://geos.refractions.net/geos-1.0.0.tar.gz    1.1.2) Descomprimir y compilar:
      
          # tar -xzvf geos-1.0.0.tar.gz
	  # cd geos-1.0.0
	  # ./configure
	  # ./make
	  # ./make install
	  
  1.2) Instalación de proj4
  
         1.2.1) Descargamos el fichero fuente de  
	        http://www.remotesensing.org/proj/                y ejecutamos 
	  
	   # tar -zxvf proj-version.tar.gz
	   # cd proj-version
	   # ./configure
	   # make
	   # make install
	  
 

2.0) Descargar de http://postgis.refractions.net/
3.0) descomprimir
4.0)  copiar a la directorio contrig/postgis/  dentro del cual hemos descomprimido
el postgresql

     Si por ejemplo, descomprimimos el postgreslq en /tmp/postgresql-version,
      copiaríamos a:

  /tmp/postgresql-version/contrib/postgis

5.0) 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
		     
		     
  
6.0)  Ejecutamos dentro del directorio postgis

     # ./make
     # ./make install


--
Postgis docs: http://postgis.refractions.net/docs/x83.html--



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
biblioteque 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
--    

Tenemos dos comandos incluidos con postgis shp2pgsql y pgsql2shp
que 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