Upload
daniel-kastl
View
150
Download
1
Embed Size (px)
DESCRIPTION
pgRouting extends the PostGIS / PostgreSQL geospatial database to provide shortest path search and other network analysis functionality. This presentation will show the inside and current state of the pgRouting development, from its wide range of shortest path search algorithms to driving distance calculation or “Traveling Sales Person” (TSP) optimization. Additionally we will give a brief outlook and introduction of upcoming new features like the “Vehicle Routing Problem” (VRP) solver, and what we have in mind for future releases. We will explain the shortest path search in real road networks and how the data structure is important to get better routing results. Furthermore we will show how you can improve the quality of the search with dynamic costs and make the result look closer to the reality. You will also learn about difficulties and limitations of the library, and when pgRouting might not be not the right tool to solve your routing problem.
Citation preview
Shortest Path Search with pgRouting
Daniel Kastl
What is pgRouting ?
An Extension for
PostgreSQL / PostGIS, ...
An Open Source
project, ...
A Library providing, ...
Shortest Path
Driving Distance
Traveling Salesperson
v2.0
Feature Highlights
➔ Two new All Pairs Short Path algorithms
➔ Bi-directional Dijkstra and A-star algorithms
➔ One to many nodes shortest path search
➔ New TSP solver (with distance matrix)
➔ Turn Restricted shortest path (replaces Shooting
Star algorithm)
➔ A collection of useful utility and graph analytics
functions
More Highlights
➔ Modular library design
➔ Unit tests and automated tests with Travis
➔ Compatibility with PostgreSQL 9.1+ / PostGIS 2.0+
➔ Installs as PostgreSQL EXTENSION
➔ Added pgr_ prefix to functions and types
➔ Improved build process for Windows
➔ Better documentation in several languages
https://www.transifex.com/projects/p/pgrouting/
Most users need pgRouting for
Road Networks
How do they look like?
Like this ...
… or like this ...
… or sometimes like this.
What makes them real?
Traffic lights Signs Road marking
pgRouting extends
PostgreSQL/PostGIS
CREATE EXTENSION postgis;CREATE EXTENSION pgrouting;
SQL Function
SELECT * FROM pgr_dijkstra(' SELECT gid as id, source::integer, target::integer, length::float8 as cost FROM ways', 30, 60, false, false);
Query Result
seq | node | edge | cost -----+------+------+--------------------- 0 | 30 | 53 | 0.0591267653820616 1 | 44 | 52 | 0.0665408320949312 2 | 14 | 15 | 0.0809556879332114 3 | 13 | 14 | 0.072694271986776 4 | 12 | 13 | 0.081239348480584 5 | 11 | 12 | 0.00746935522787469 6 | 10 | 6869 | 0.0164274192597773 7 | 59 | 72 | 0.0109385169537801 8 | 60 | -1 | 0(9 rows)
gid,source,target,cost,reverse_cost,x1, y1,x2, y2,rule, to_cost
source
target
Traffic lights slow down
… so costs must increase.
1 min
cost(A) = cost(A) + 30seccost(B) = cost(B) + 30seccost(C) = cost(C) + 30seccost(D) = cost(D) + 30sec
B C
D
A
cost(A) = length(A)
reverse_cost(A) = ∞
A
Sometimes
the costs
have different
meaning.
A
B
cost(A) = length(A) / 2
reverse_cost(A) = length(A) * 4
Road type can be used
for cost calculation.
Not only road types
but also conditions
And you know
what is great about pgRouting?
All costs are dynamic!
… which is the opposite to pre-calculated
If the road is closed ...
… or there is an accident, ...
… there is a sign with restrictions limited to a certain time, ...
… bad weather conditions ...
You don't need to
rebuild and reload
your network
You only need to adjust the cost
for this particular road,
… and the next search will go another way.
Flexiblity vs. Speed
Cost can be virtually
anything
pgRouting can be used for
different kinds of networks
Canals and Rivers
Hiking trails
… or any other kind of networks
pgRouting can be enhanced
with custom functions
SELECT * FROM ctg_drivingdistance( ST_SetSRID( ST_MakePoint(-117.1078764,32.7111995),4326), 'ways', '2500,5000,7500', 'm');
Roadmap for Version 2.1
➔ Add “Multi-modal public transit routing”
(GSoC 2011)
➔ Add “Time dependent shortest path” algorithm
(GSoC 2011)
➔ Add “Two Queue” Algorithm (GSoC 2012)
➔ Add DARP and VRP (GSoC 2013 and 2014)
➔ Add Graph network partitioning (GSoC 2013)
➔ …. further improvements and bug fixes.
Tour Optimization & VRP
https://github.com/pgRouting
Website: pgrouting.org
Documentation: docs.pgrouting.org
Workshop: workshop.pgrouting.org
Support: pgrouting.org/support.html
More Information
… or talk contact us directly:
➔ Twitter: @dkastl
Photos from sxc.hu and
flickr under Creative Commons Licence.