Visitas: 0
OBS:
- Tener instalado lo siguiente:
-
- Postgresql 8.4
- PostGIS 1.5
- En caso de no tener instalado Postgres o PostGIS, podes ver esta entrada.
- Ser root
Entramos a la consola y escribimos:
apt-get install build-essential subversion cmake git apt-get install libboost-graph-dev postgresql-server-dev-8.4 apt-get install libcgal-dev
Algoritmo Driving Distance. Escribimos en la consola:
apt-get install libcgal
Algoritmo TSP. Escribimos en la consola:
wget -c http://sourceforge.net/projects/gaul/files/gaul-devel/0.1850-0/gaul-devel-0.1850-0.tar.gz tar -xzf gaul-devel-0.1850-0.tar.gz cd gaul-devel-0.1850-0/ ./configure --disable-slang make make install ldconfig
Compilar pgRouting con los algoritmos TSP y DD. Escribimos en la consola:
cd .. wget -c http://download.osgeo.org/pgrouting/source/pgrouting-1.05.tar.gz tar -xzf pgrouting-1.05.tar.gz cd pgrouting-1.05 cmake -DWITH_TSP=ON -DWITH_DD=ON .
Editamos estos dos archivos:
nano core/src/shooting_star_relax.hpp nano core/src/edge_visitors.hpp
Y cambiamos a cada uno de los archivos mencionados arriba:
#include <boost/property_map.hpp>
Por:
#include <boost/property_map/property_map.hpp>
Editamos lo siguiente:
nano core/src/shooting_star_boost_wrapper.cpp
Y cambiamos a cada uno el:
#include <boost/vector_property_map.hpp>
Por:
#include <boost/property_map/vector_property_map.hpp>
Volvemos a escribir en la consola:
make make install
Creamos una base de datos. Escribimos en la consola:
su postgres createdb -U postgres routing createlang -U postgres plpgsql routing
Agregamos las funciones de PostGIS a nuestra base de datos (routing). Escribimos en la consola:
psql -d routing -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql psql -d routing -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql
Agregamos las funciones de pgRouting a nuestra base de datos (routing). Escribimos en la consola:
psql -U postgres -f /usr/share/postlbs/routing_core.sql routing psql -U postgres -f /usr/share/postlbs/routing_core_wrappers.sql routing psql -U postgres -f /usr/share/postlbs/routing_topology.sql routing
Agregamos las funciones de TSP a nuestra base de datos (routing). Escribimos en la consola:
psql -U postgres -f /usr/share/postlbs/routing_tsp.sql routing psql -U postgres -f /usr/share/postlbs/routing_tsp_wrappers.sql routing
Agregamos las funciones de DD (Driving Distance) a nuestra base de datos (routing). Escribimos en la consola:
psql -U postgres -f /usr/share/postlbs/routing_dd.sql routing psql -U postgres -f /usr/share/postlbs/routing_dd_wrappers.sql routing
Salimos del usuario postgres. Escribimos en la consola:
exit
Descargamos datos de Asunción – Paraguay de OSM. Escribimos en la consola:
cd /home/proyectosbeta/ wget -c http://proyectosbeta.net/Arhivos%20del%20Blog/GIS/OSM/Asuncion%20-%20Paraguay.osm
Instalamos osm2pgrouting. Escribimos en la consola:
git clone git://github.com/kashif/osm2pgrouting.git cd osm2pgrouting cmake . make
Convertir OSM a pgRouting. Escribimos en la consola:
su postgres bin/./osm2pgrouting -file ../Asuncion\ -\ Paraguay.osm -conf ./mapconfig.xml -dbname routing -user postgres -host localhost -port 5432 -passwd 123456
Sale esto por pantalla:
######################### size of streets: 6247 size of splitted ways : 25057 finished
Escribimos en la consola:
psql -U postgres routing \d
Sale esto por pantalla:
Listado de relaciones Esquema | Nombre | Tipo | Dueño ---------+---------------------+-----------+---------- public | classes | tabla | postgres public | geography_columns | vista | postgres public | geometry_columns | tabla | postgres public | nodes | tabla | postgres public | relation_ways | tabla | postgres public | relations | tabla | postgres public | spatial_ref_sys | tabla | postgres public | types | tabla | postgres public | vertices_tmp | tabla | postgres public | vertices_tmp_id_seq | secuencia | postgres public | way_tag | tabla | postgres public | ways | tabla | postgres (12 filas)
OBS:
- La tabla que contiene la geometría es ways;
Pruebas sql en PGAdmin:
Seleccionamos la base datos routing.
select * from shortest_path('select gid as id, source, target, length as cost from ways', 2848, 10545, false, false); select * from dijkstra_sp('ways', 2848, 10545);
Mostramos un ejemplo usando el algoritmo de Dijkstra.
OBS:
- Tener instalado QGIS. Ver entrada.
- Entramos a la consola y escribimos: aptitude install python-psycopg2
Abrimos QGIS:
-
- Archivo -> Propiedades del proyecto -> Sistema de referencia de coordenadas (SRC)
- Marcamos «Activar transformaciones de SRC al vuelo«
- Aceptamos.
- Configuramos la conexión a nuestra base de datos.
-
- Nos dirigimos a Complementos -> Obtener complementos de Python.
- Buscamos RT Sql Layer y lo instalamos.
- Ahora entramos al icono (se marco de color verde) que se muestra en la imagen de abajo.
-
- Nos vamos al menu Database y seleccionamos routing.
- Luego entramos al icono Query builder.
- Escribimos la consulta. En la imagen de abajo muestra lo que tenemos que agregar.
Ahora se muestra el resultado del camino mínimo de dos puntos usando el algortimo de Dijkstra.
Fuente 1: pgRouting Project
Fuente 2: pgRouting
Fuente 3: Pastebin
Fuente 4: GIS and Chips
Fuente 5: Scribd