... the user friendly GPS tool


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
GraphHopper Routing Exception
#11
(05.08.2019, 12:11)routeconverter Wrote: Eine Frage aus Neugier: Warum hast Du in DownloadableFinder nicht

public Downloadable getDownloadableFor(BoundingBox routeBoundingBox) 

auf eine Liste von Downloadable aufgebohrt?

Weil ich das erst mal als Option neben dran stehen haben wollte (ggf. das als zweite Option sogar konfigurierbar mach).

Man könnte der Methode einen Parameter für die Länge des Resultats zu geben und wenn man sie auf 1 zwingt hat sie quasi deine Signatur und Semantik und die eigentliche Selektion könnte man dann noch von diesem RoutingTileInfo in einen Comparator ziehen, dann sieht man dort wirklich welche Strategie implementiert wird für das Karten-Suchen.

(05.08.2019, 12:11)routeconverter Wrote:
(04.08.2019, 06:59)thomas.friese Wrote: Von der Idee her: was kann da systematisch schief gehen, wenn ich fireDownloading() und downloadAndWait() im Error-Handling für ggf. response Errors in der GraphHopper.getRouteBetween() Funktion aufrufe?

Man erwartet es nicht. GraphHopper#getRouteBetween() sollte keine Fehlerbehandlung und Notifications machen sondern nur ein Routing durchführen.

Schon, aber du hast da ohnehin ein Error-Handling, was eben die Exception weiter wirft, genau an der Stelle muss man ja intervenieren weil der GraphHopper selbst seinen Fehler so signalisiert.

Ich stimme dir gefühlsmäßig vollkommen zu, man müsste eigentlich dann aber vermutlich drumherum noch weitergehend aufräumen und schon in den Interfaces und dem ganzen Flow drumherum diese Möglichkeit vorsehen, dass das Routing schief geht und man es noch mal probieren sollte mit der zweitbesten Karte usw.. Dabei würde man auch die Timer gescheit aufräumen etc. ... für den Proof of Concept hab ich das jetzt nicht gemacht.


(05.08.2019, 12:11)routeconverter Wrote: Schwierig finde ich

    private List<Downloadable> routingTileInfoList;

Denn eigentlich sollte doch

    private java.io.File osmPbfFile;

auf eine Liste aufgebohrt werden, oder?

Ja, im Prinzip schon, auch hier aber wieder: ich wollte nix aufbohren sondern einen parallelen Pfad einziehen, den ich zum Vergleich an und aus schalten kann - nächster Schritt wäre eh mal einen Test schreiben der bei deinem aktuellen Code mit dem bekannten Fehler failed, mein Code aber erfüllt. Danach würde ich es dann sauber einbauen.
Außerdem hab ich befürchtet, dass du das osmPbFile wie ein Flag verwendest, weil du es mal explizit auf null setzt.
Reply
#12
(06.08.2019, 18:36)thomas.friese Wrote: Ich stimme dir gefühlsmäßig vollkommen zu, man müsste eigentlich dann aber vermutlich drumherum noch weitergehend aufräumen und schon in den Interfaces und dem ganzen Flow drumherum diese Möglichkeit vorsehen, dass das Routing schief geht und man es noch mal probieren sollte mit der zweitbesten Karte usw.. Dabei würde man auch die Timer gescheit aufräumen etc. ... für den Proof of Concept hab ich das jetzt nicht gemacht.

Der Proof of Concept ist sehr gut. Ich möchte mal schauen, wie man das elegant als Default in den Code hereinbekommt. Könntest Du mir ein einfaches Beispiel schicken, das bei Dir scheitert? Gerne per Mail. Das würde bei mir etwas herumprobieren vermeiden helfen.
--
Christian
Reply
#13
Ich habe 2 Varianten implementiert: die naive lädt erst alle Routingdaten aber meistens viel zu viel, da sie gar nicht abbricht.
https://github.com/cpesch/RouteConverter...exceptions

Die zweite dreht am Algorithmus und verschiebt das Laden und Initialisieren der Daten in die Kalkulation der Route. Das erlaubt "Lazy Loading":
https://github.com/cpesch/RouteConverter...ceptions_2

Ich würde jetzt die letzte Variante intensiver testen und verfeinern.
--
Christian
Reply
#14
(09.08.2019, 16:35)routeconverter Wrote: Ich würde jetzt die letzte Variante intensiver testen und verfeinern.

Ja, halte ich auch für die bessere Lösung als die andere.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)