pgRouting é uma extensão do PostGIS que é uma extensão do PostgreSQL 🙂
PostGIS permite ao usuário acessar uma lista incrível de consultas “geo-especializadas” e pgRouting adiciona a lógica de roteamento.
Instalação
Com o pgRouting 2.0, a instalação é realmente fácil
sudo add-apt-repository ppa:georepublic/pgrouting
sudo apt-get update
sudo apt-get install postgresql-9.1-pgrouting
Construa uma rede
Usando osm2pgrouting
você pode importar um extrato de dados do OpenStreetMap para o seu banco de dados
sudo apt-get install osm2pgrouting
wget -O lausanne.osm http://overpass.osm.rambler.ru/cgi/xapi_meta?*[bbox=6.6072,46.5041,6.6593,46.5466]
osm2pgrouting -file ./fichier.osm
-conf ./mapconfig.xml
-dbname ma_base
-user user
-passwd user
-clean
Consultas básicas
Pegue o caminho mais curto
SELECT st_union(route.the_geom)
FROM (
SELECT * FROM pgr_dijkstra('ways', START_NODE, END_NODE)
) as route
Gerar uma isócrona
SELECT 1 as id, ST_ConcaveHull(st_union(the_geom), 0.95)
FROM (
SELECT ways_vertices_pgr.the_geom
FROM pgr_drivingDistance(
'SELECT gid as id, source, target, st_astext(the_geom), ST_Length(the_geom::geography) as cost FROM ways',
NODE_ID,
250,
false,
false)
INNER JOIN ways on (ways.gid = id2)
INNER JOIN ways_vertices_pgr on (ways_vertices_pgr.id = ways.source)
) as t