Wenn ich von Linz nach Graz unterwegs bin, kommt es manchmal vor, dass ich irgendwo auf der Strecke tanken muss. Jetzt gibt es seit einigen Jahren den tollen Spritpreisrechner, welcher die günstigen Tankstellen in meiner Nähe anzeigt. Die Ergebnisse können aber nur für einen Ort (bzw. für ein gewisses Gebiet) und nicht auf einer längeren Strecke angezeigt werden und es kommt nicht selten vor, dass die Preise auf der Strecke stark variieren. Die Spritpreisrechner API erlaubt ein Gebiet über ein Rechteck zu definieren. Wenn dieses Rechteck jedoch von Linz bis Graz reicht, kann es sein, dass eine Tankstelle nahe St. Pölten als die Günstigste aufscheint, was nicht gerade hilfreich ist.
Im FAQ des Spritpreisrechners findet man sogar die Frage „Warum kann man im Spritpreisrechner nicht nach Routen suchen?“ mit der Antwort „Eine Routensuche in Verbindung mit der Vorgabe, jeweils nur die fünf günstigsten Preise anzuzeigen, macht wenig Sinn, da es sehr wahrscheinlich ist, dass die jeweils günstigsten Tankstellen entlang einer bestimmten Strecke relativ nah beieinander liegen und so die Auskunft über die ganze Strecke hinweg wenig Information bringt.“ Diese Antwort ist nicht sehr hilfreich, da man ja nicht genau weiß wo dieses Gebiet mit den günstigen Tankstellen auf der Strecke ist. Ist es in Linz, oder Graz oder irgendwo dazwischen? Diese Frage blieb bislang unbeantwortet.
Ich habe einen Nachmittag investiert und nach einem 5h-Hackathon die Spritpreis Routensuche implementiert, welche das besagt Problem löst. Das Tool ist unter http://spritroutensuche.isvoi.org verfügbar. Es erlaubt die Eingabe von Start und Ziel und liefert alle bzw. alle offenen Tankstellen auf dem Weg. Die fünf günstigsten Tankstellen sind zusätzlich grün hervorgehoben. Der Code ist – wie nach einem Hackathon üblich – zwar nicht besonders schön oder strukturiert, aber auf Github abrufbar. Wer den Drang zu einem Refactoring verspürt, nur zu. Wer Features vermisst, bitte einen Pull Request oder ein Kommentar hinterlassen.
Aus technischer Sicht wird zuerst ein Routing-Request via Google Directions API ausgeführt. Danach werden entlang der Strecke alle 25 km die Spritpreise über die Spritpreisrechner API ermittelt und doppelte Ergebnisse sowie Tankstellen ohne Preisinformation (die API liefert den Preis nur für die Top 5 Ergebnisse) herausgefiltert.
Viel Spaß damit!