Ruteplanlægning med OpenStreetMap

Septima

Af Gregers Petersen, Septima / @GregersP

Hvad skal I trækkes igennem?

  • Karakteristika ved data i OSM (og FOT)
  • Hvad skal dér egentlig til for at ruteplanlægge
  • Rutemotorer
  • Spørgsmål

Karakteristika ved data

Karakteristika

Skabt i et samarbejde

Gruppe af børn

Udgør "et kort"

Men hvad er et kort?

Standardiserede?

Specifikation FOT 4.1, s. 2.1.15

Kvalitetssikrede?

Manual for Kvalitetssikring og kvali-
							tetskontrol af FOT-data, s. 5

Opdaterede?

"Kort & Matrikelstyrelsen (Kort & Matrikelstyrelsen) og kommunerne i Region Nordjylland har netop indgået kontrakt med virksomheden NIRAS BlomInfo A/S om opdatering af det digitale kort FOT."
Editering i Potlatch2

Hvornår kan man lave "routing"?

Sømand navigerer

Netværk

E-vejsnetværket

Hvornår kan man lave brugbar routing?

Brugbar routing

Hurtigste rute

motorvej max 60 km/t

Den "rigtige" rute

Grusveje max bredde 2m max bredde 2m indkørsel forbudt Cykel- og gangsti

Nej, den rigtige rute

Den RIGTIGE rute

Tillid til ruten

Tillid

Rutemotorer

Rutemotorer

Billigste sti i et netværk

Netværk

pgRouting

pgRouting

Databasebaseret


SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra('
			SELECT gid AS id,
				source::integer,
				target::integer,
				length::double precision AS cost
				FROM ways',
	30, 60, false, false);

seq | node | edge |        cost
-----+------+------+---------------------
   0 |   30 |   53 |  0.0591267653820616
   1 |   44 |   52 |  0.0665408320949312
   2 |   14 |   15 |  0.0809556879332114
   ...
   6 |   10 | 6869 |  0.0164274192597773
   7 |   59 |   72 |  0.0109385169537801
   8 |   60 |   -1 |                   0
(9 rows)

Dynamisk

Gamle damer

Mange rute-algoritmer

Dijkstras algorithm A-star algorithm

Live demo

Live demo

Andre demoer

Ride The City - Bike District Milano

Open Source Routing Maching

OSRM

Filbaseret


gregers@merkur:/osrm/car/data$ ls -la
total 475472
drwxr-xr-x 2 osrm osrm      4096 Oct 30 05:54 .
drwxrwxr-x 5 osrm osrm        41 Oct 30 05:54 ..
-rw-r--r-- 1 osrm osrm  90409716 Oct 30 05:48 denmark.osrm
-rw-r--r-- 1 osrm osrm  62723140 Oct 30 05:48 denmark.osrm.edges
-rw-r--r-- 1 osrm osrm 143861628 Oct 30 05:48 denmark.osrm.fileIndex
-rw-r--r-- 1 osrm osrm 156728304 Oct 30 05:54 denmark.osrm.hsgr
-rw-r--r-- 1 osrm osrm    793151 Oct 30 05:48 denmark.osrm.names
-rw-r--r-- 1 osrm osrm  23948256 Oct 30 05:48 denmark.osrm.nodes
-rw-r--r-- 1 osrm osrm   8388608 Oct 30 05:48 denmark.osrm.ramIndex
-rw-r--r-- 1 osrm osrm     12068 Oct 30 05:47 denmark.osrm.restrictions
-rw-r--r-- 1 osrm osrm        23 Oct 30 05:54 denmark.osrm.timestamp

Prægenereret

 
...
-- Set the avg speed on the way if it is accessible by road class
  if (speed_profile[highway] ~= nil and way.speed == -1 ) then
  if maxspeed > speed_profile[highway] then
   way.speed = maxspeed
  else
...
 
ln -s ../profiles/car.lua profile.lua
./osrm-extract denmark.osm
./osrm-prepare denmark.osrm
./osrm-routed

Èn algoritme

Specialbygget

Live demoer

Rute - Travelling Salesman - Skoleafstand - Pubcrawl

Tak

Gregers Petersen - gregers@septima.dk - Tlf: +45 9132 6945 - septima.dk
Spørgsmål?

OSM-inspector

Inspektion af routing

Map Compare

Sammenlign kortværk

Svartidssammenligning

Sammenligning

Kvalitetskontrol

OSM Watch List (OWL)