We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Road Network Contraction mit PostGIS

00:00

Formale Metadaten

Titel
Road Network Contraction mit PostGIS
Serientitel
Anzahl der Teile
119
Autor
Mitwirkende
Lizenz
CC-Namensnennung 4.0 International:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
Bei der Berechnung des kürzesten Weges zwischen zwei Orten ist die Größe des Straßendatensatzes, bezogen auf die Performanz, oft der wichtigste Faktor. Die Open Source Erweiterung PostGIS bietet Tools an, um Datensätze mit Strassen-Netzwerken zu minimieren. Dieses Verfahren, auch bekannt als “Road Network Contraction”, wird in dieser Präsentation vorgestellt, sowie unterschiedliche Möglichkeiten dieses Verfahren zu verfeinern.
Schlagwörter
14
67
Open SourceImplementierungWeb logRoutingAlgorithmusKanteBerechnungQR-CodeImplementierungAttributierte GrammatikRouterGraphDesign by ContractProgrammbibliothekRechenbuchStandardabweichungDifferenteKomplex <Algebra>SchnittmengeZahlenbereichWeb logSoftwareentwicklerSoftwarePunktCoxeter-GruppeVorlesung/KonferenzComputeranimation
Ich präsentiere Felix Sommer mit dem Titel Road Network Contraction mit PostGIS. Ja, vielen Dank. Also, wie schon gesagt, es geht hier um Road Network Contraction mit PostGIS.
Und ich erkläre euch heute, wie ihr euer Routing rasend schnell machen könnt. Also ganz kurz über mich. Mein Name ist Felix Sommer. Ich bearbeite seit knapp drei Jahren als Full-Stack-Developer bei Camp2Camp. Und wie es schon im Titel steht, hier geht es um Road Network Contraction.
Und wenn ihr Performance-Probleme mit eurem Routing habt, dann solltet ihr euch das auf jeden Fall anschauen. Deswegen erkläre ich euch am Anfang, was es genau ist und wie es funktioniert. Und dann, warum ihr es wirklich einsetzen sollt. Und am Ende, womit oder mit welcher Technologie ihr das tun könnt. So, starten wir gleich rein. Und zwar, wir können sagen, ein Straßennetz wird als Graf dargestellt mit Kanten und Knoten.
Und jede Kante und Knoten hat bestimmte Attribute. Und diese Attribute könnten zum Beispiel sein, ja, die Geschwindigkeit, die Kosten oder die Dauer diese Kante zu befahren und den Namen zum Beispiel.
Und wenn wir uns jetzt überlegen, ja, was brauchen wir denn eigentlich für unseren Routing-Algorithmus? Was ist denn hier wirklich wichtig? Dann können wir uns ansehen, naja, Name hilft uns jetzt erstmal nur bei der Berechnung von der Route nicht so viel weiter.
Das heißt, was können wir machen? Wir können es einfach mal wegstreichen, einfach mal löschen. Was wir dann machen können, dann können wir uns angucken, dass wir es nach dem Attribut Speed gruppieren. Und das heißt, alle Kanten, die das gleiche, die gleiche Speedwert haben, können wir zusammen verbinden.
Was dann dabei rauskommt, ist, wir haben jetzt nur noch zwei Kanten. Das heißt, wir haben eine Kante und einen Knoten entfernen können. Und herzlichen Glückwunsch, wir haben somit unsere erste Grafenkontraktion durchgeführt. Jetzt kann man sich natürlich noch überlegen, ja, was ist, wenn wir noch die Kante A und B zusammenfügen können oder wollen?
Das können wir jetzt momentan noch nicht machen, da das Attribut Speed nicht den gleichen Wert hat. Aber vielleicht ist das Attribut Speed ja für uns eigentlich unwichtig für unseren Routing-Algorithmus.
Und hier ist es ganz besonders wichtig, dass wir uns überlegen, welche Attribute sind für uns wichtig? Was brauchen wir und was nicht? So, warum machen wir das Ganze? Wie ihr wahrscheinlich wisst, sind die meisten Algorithmen bei der Performance, wenn es darum geht,
ist es wichtig, dass die Komplexität so gut wie möglich ist. Und bei Routing-Algorithmen kommt es eigentlich immer darauf an, wie viele Kanten oder wie viele Knoten oder auch wie viele Kanten und Knoten unser Datenset beinhaltet. Das heißt, sobald wir unsere Anzahl an Knoten und Kanten reduzieren können,
wissen wir, dass die Performance von unserem Algorithmus auch besser wird. Wir haben uns jetzt überlegt, ja, dass sowas möchten wir haben, sowas brauchen wir. Unsere Anforderungen waren ganz klar, wir wollen, dass das schnell ist, soll Performance sein
und sich auch einfach in unsere bestehende Infrastruktur integrieren lassen. Und was er natürlich zulassen soll, er soll die Kontraktion auf den von uns bestimmten Attributen ausführen können. Da gab es dann verschiedene Möglichkeiten, verschiedene Technologien, die man einsetzen kann.
Und am Ende haben wir uns dafür entschieden, dass wir einfaches S-Grail mit Puskis benutzen. Und hier haben wir dann geguckt, genau diese Anforderungen, die wir hatten, gab es leider noch nicht in der Standard-Library von Puskis.
Deswegen haben wir dann eine Custom-Implementierung gemacht. Also, nochmal ganz kurz zusammengefasst, wenn ihr Performance-Probleme habt, solltet ihr euch mit Grafenkontraktionen beschäftigen. Hierbei geht es darum, dass ihr unwichtige Attribute entfernt und dann die Kanten verbinden könnt.
Und wir haben eine Custom-Implementierung gemacht. Und an diesem Punkt möchte ich auch gerne nochmal Laurelaine erwähnen. Sie hat diese Implementierung durchgeführt und einen Blogbeitrag geschrieben. Und auf diesem Blogbeitrag basiert auch dieser Vortrag hier. Und mit dem QR-Code könnt ihr direkt zu dem Blogbeitrag kommen.
Ich empfehle euch ihn euch anzugucken und euch mal die Implementierung anzugeschauen. Und Laurelaine und ich, wir arbeiten zusammen bei Camp2Camp. Und wir sind hier auch eben auf der Puskis mit einem Stand. Und ihr könnt gerne mal bei uns vorbeikommen.
Vielen Dank.