shortest path search in your database and more with pgrouting - foss4g europe 2014

Post on 18-Dec-2014

151 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

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.

TRANSCRIPT

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:

➔ daniel@georepublic.de

➔ Twitter: @dkastl

Photos from sxc.hu and

flickr under Creative Commons Licence.

top related