Compilar pgRouting 1.02

in

A la hora de compilar pgRouting 1.02 con la distribución de openSUSE 11 me he encontrado algún cambio según la documentación de instalación de la página oficial de pgRouting, así que en este post os describo con detalle el proceso de compilación según esta distribución de linux esperando que sea de utilidad y así también me vale a mi para acordarme.

pgRouting

Instrucciones de compilación de pgRouting 1.02 en OpenSUSE 11 con PostGIS 1.3.3.

Antes de empezar aquí van los enlaces que he utilizado para este post.

Según la página web de pgrouting estos son los requerimientos para compilar e instalar pgrouting:

To install/compile pgRouting the following applications/libraries are required:

  • pgRouting source code
  • C and C++ compilers
  • PostgreSQL version >= 8.0
  • PostGIS version >= 1.0
  • The Boost Graph Library (BGL). Version >= 1.33 which contains the astar.hpp
  • The Genetic Algorithm Utility Library (GAUL) * Computational Geometry Algorithms Library (CGAL) version >= 3.2

Paquetes necesarios para openSUSE

PostgreSQL se puede instalar directamente desde los repositorios estándar de OpenSUSE. Además de la base de datos y los clientes (paquetes postgresql-server y postgresql) habrá que instalar los fuentes que contienen los ficheros cabecera que pgrouting necesita para compilar (paquete postgreql-devel) también desde desde los repositorios estándar de OpenSUSE.

- Package postgresql-server,postgresql (paquetes estandar de OpenSUSE)
- Package postgresql-devel (paquetes estandar de OpenSUSE)

PostGIS se puede instalar directamente desde el siguiente GEO repositorio (http://download.opensuse.org/repositories/Application:/Geo/), no siendo necesario su compilación manual para la posterior compilación de pgrouting.

- Package postgis (instalado desde el GEO repositorio)

Antes de compilar e instalar las librerias que se comentan arriba (BGL, gaul y CGAL) tenemos que comprobar si están los siguientes paquetes instalados (todos ellos están disponibles en la distribución estándar de OpenSUSE)

- Packages gcc, gcc-c++, make, cmake (C and C++ compilers y utilidades make y cmake)
- Package pyhton-devel (el package python ya debiera estar instalado)
- Package zlib, zlib-devel (si se quiere compatibilidad zlib para boost library)
- Package bzip2, libbzip2-devel (si se quiere compatibilidad bzip2 para boost library)

  1. Situar los fuentes en algun directorio para su compilación, por ejemplo: Crear directorio curso/software/pgrouting en nuestro home (an adelante dir1)
  2. Bajarse los fuentes de Boost, GAUL, CGAL y pgRouting y dejarlos en el dir1
    Boost (version actual Boost 1_36_0): http://www.boost.org/libs/graph/doc/index.html
    GAUL (version actual GAUL 0.1850-0): http://gaul.sourceforge.net/
    CGAL (version actual CGAL 3.3.1): http://www.cgal.org/
    pgRoutinhg (version actual pgRouting 1.02): http://pgrouting.postlbs.org/

  3. Descomprimir fuentes. Dentro de dir1 ejecutar:
    > tar -xvzf boost_1_36_0.tar.gz
    > tar -xvzf gaul-devel-0.1850-0.tar.gz
    > tar -xvzf CGAL-3.3.1.tar.gz
    > tar -xvzf pgRouting-1.02.tgz

  4. Tendremos asi:
    alumno@linux-n7r3:~/curso/software/pgrouting> ll
    total 41724
    drwxr-xr-x 10 alumno users 4096 2008-08-12 15:49 boost_1_36_0
    -rw-r--r-- 1 alumno users 32731470 2008-08-13 05:23 boost_1_36_0.tar.gz
    drwxr-xr-x 11 alumno users 4096 2007-08-25 21:03 CGAL-3.3.1
    -rw-r--r-- 1 alumno users 8593200 2008-08-13 05:23 CGAL-3.3.1.tar.gz
    drwxr-xr-x 9 alumno users 4096 2006-10-06 00:37 gaul-devel-0.1850-0
    -rw-r--r-- 1 alumno users 1258437 2008-08-13 05:23 gaul-devel-0.1850-0.tar.gz
    drwxr-xr-x 7 alumno users 4096 2008-04-10 05:03 pgrouting
    -rw-r--r-- 1 alumno users 55961 2008-08-13 05:23 pgRouting-1.02.tgz

  5. Compilar e instalar la libreria Boost
    Dentro del directorio dir1/boost_1_36_0 ejecutar como usuario normal:
    > ./configure
    > make

    Como superusuario ejecutar:
    > make install

    Esto instalará los includes y las librerias de Boost en los directorios
    /usr/local/include/boost-1_36
    /usr/local/lib

  6. Compilar e instalar la libreria gaul
    Dentro del directorio dir1/gaul-devel-0.1850-0 ejecutar como usuario normal:
    > ./configure --disable-slang
    > make

    Como superusuario ejecutar:
    > make install

    Esto instalará los includes y las librerias de gaul en los directorio
    /usr/local/include/gaul
    /usr/local/lib

  7. Compilar e instalar la libreria CGAL
    Dentro del directorio dir1/CGAL-3.3.1 ejecutar como superusuario:

    > ./install_cgal --prefix=/usr/local --with-boost=n --BOOST_INCL_DIR /usr/local/include/boost-1_36 --BOOST_LIB_DIR /usr/local/lib --without-autofind -ni /usr/bin/g++

    Esto instalará los includes y las librerias de CGAL en los directorios;
    /usr/local/bin
    /usr/local/include
    /usr/local/lib
    /usr/local/share

  8. Compilar e instalar la libreria pgRouting

    *Con boost 1.36 pgrouting 1.02 produce un error al realizar cmake porque busca la versión 1.35 de boost. Para solucionarlo ejecutar la siguiente orden dentro del directorio /usr/local/include como superusuario que creará un enlace simbolico:
    > ln -s boost-1_36 boost-1_35

    Dentro del directorio dir1/pgrouting ejecutar como usuario normal:

    > cmake -DWITH_TSP=ON -DWITH_DD=ON .
    > make

    Como superusuario ejecutar:
    > make install

    Esto instalará los siguientes ficheros

    -- Installing: /usr/lib/postgresql/librouting.so
    -- Installing: /usr/share/postlbs/routing_core.sql
    -- Installing: /usr/share/postlbs/routing_core_wrappers.sql
    -- Installing: /usr/lib/postgresql/librouting_tsp.so
    -- Installing: /usr/share/postlbs/routing_tsp.sql
    -- Installing: /usr/share/postlbs/routing_tsp_wrappers.sql
    -- Installing: /usr/lib/postgresql/librouting_dd.so
    -- Installing: /usr/share/postlbs/routing_dd.sql
    -- Installing: /usr/share/postlbs/routing_dd_wrappers.sql

    *nota: si se quiere compilar solo la funcionalidad core de pgrouting ejecutar cmake .

Probando pgrouting

Para ello vamos a utilizar los datos y los ejemplos propuestos en el tutorial de David Teacher

  1. Creamos la base de datos testpgrouting de prueba

    > createdb -U postgres testpgrouting
    > createlang plpgsql -U postgres testpgrouting

  2. Cargamos la extensión espacial PostGIS (el paquete del repositorio instala los ficheros sql necesarios en /usr/share/postgis)

    > psql -U postgres -f /usr/share/postgis/lwpostgis.sql -d testpgrouting
    > psql -U postgres -f /usr/share/postgis/spatial_ref_sys.sql -d testpgrouting

  3. Cargamos la extensión pgrouting

    -- Funcionalidad principal (core)
    > psql -U postgres -f /usr/share/postlbs/routing_core.sql -d testpgrouting
    > psql -U postgres -f /usr/share/postlbs/routing_core_wrappers.sql -d testpgrouting

    -- Si queremos cargar también la funcionalidad extra de pgrouting (aunque para este ejemplo no es necesaria) tendríamos que ejecutar también las siguientes sentencias:

    -- Con TSP
    > psql -U postgres -f /usr/share/postlbs/routing_tsp.sql -d testpgrouting
    > psql -U postgres -f /usr/share/postlbs/routing_tsp_wrappers.sql -d testpgrouting

    -- Con Driving Distance
    > psql -U postgres -f /usr/share/postlbs/routing_dd.sql -d testpgrouting
    > psql -U postgres -f /usr/share/postlbs/routing_dd_wrappers.sql -d testpgrouting

  4. Cargamos los datos del ejemplo
    http://cartosig.upv.es/es/system/files/jomarlla/pgrouting_wr.sql

    > psql -U postgres -f ruta_al_fichero_pgrouting_wr.sql -d testpgrouting

  5. Abrimos una sesion del cliente psql (> psql -U postgres -d testpgrouting) y ejecutamoslas siguientes sentencias SQL.

    -- Vemos la tabla con la cual vamos a trabajar
    testpgrouting=# SELECT gid as id, source, target, cost, reverse_cost,x1, y1,x2, y2, rule, to_cost FROM wr order by id;

    -- Calculamos el camino óptimo
    testpgrouting=# SELECT * FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost,x1, y1,x2, y2, rule, to_cost FROM wr order by id',20,8,true,true);
    vertex_id | edge_id | cost
    -----------+---------+------------------
    31 | 20 | 48.3246366252935
    29 | 19 | 38.0539027874633
    27 | 17 | 39.2224758594282
    23 | 15 | 39.4286821133412
    25 | 16 | 29.9822270236865
    17 | 13 | 38.6094358307609
    21 | 12 | 25.9044654619518
    19 | 11 | 60
    15 | 9 | 40
    12 | 7 | 53.8753258085636
    1 | 1 | 14.2572101668807
    2 | 2 | 11.0893168443772
    4 | 3 | 13.9884637834871
    6 | 8 | 62.5380849791951

    Para ampliar este ejemplo y ver otros ejemplos referirse a:

    http://cartosig.upv.es/es/recursos-sig/pgrouting-shooting-star-usage-exa...
    http://cartosig.upv.es/es/recursos-sig/web-based-routing-introduction-pg...

Responder

CAPTCHA
Esta pregunta es para testear si eres un humano y prevenir el envio de spam automático