2016-11-23 9 views
1

Ich möchte bestimmte Straße blockieren und vermeiden Sie es, wenn Sie Route generieren.Blockieren Sie bestimmte Straße in Graphhopper

Ich bin mit dem Graphhopper basic map sample

ich diesen Code gefunden Weighting. Ich glaube, das ist die Funktion, nach der ich suche, aber ich habe kein Glück, sie zu integrieren.

Ich schätze wirklich jede Hilfe, wenn ich zeige, wie ich die zwei Codes zusammensetzen kann. Ein Beispielcode wird sehr geschätzt.

Vielen Dank im Voraus.

+0

einen Blick in dieser Klasse haben: https://github.com/graphhopper/graphhopper/blob/master/core/src/main/java/com/graphhopper/routing/weighting/AvoidEdgesWeighting.java oder diese repository: https://github.com/karussell/graphhopper-traffic-data-integration – Karussell

+0

Danke sir @karussell, ich untersuchte die Probe aber leider kann ich nicht herausfinden, die beiden Codes zu kombinieren. Tut mir leid, dass ich Neuling bin. Gibt es ein einfacheres Beispiel, das ich mir ansehen kann? Etwas, das einen grundlegenden grapphopper Kartencode zeigt, eine Gewichtsklasse oder die Kante in dem grundlegenden Grapphoer Beispielcode vermeiden nennt. Vielen Dank im Voraus – Mellorine

+0

Sehen Sie diese sehr aktuelle Pull-Anfrage https://github.com/graphhopper/graphhopper/pull/890 – Karussell

Antwort

2

Also, ich werde meine Code-Beispiele teilen, die zeigen, wie ich benutzerdefinierte Gewichtung implementiert, aber sie sind ähnlich wie example Sie erwähnt.

Zuerst müssen Sie die Klasse GraphHopper erweitern und die Methode createWeighting(WeightingMap weightingMap, FlagEncoder encoder) außer Kraft setzen.

Dann implementieren Sie benutzerdefinierte Gewichtung, wo Sie in Ihrem Fall Logik der Blockierung einiger Straßen implementieren.

Und jetzt, vielleicht der wichtigste Teil für Sie, der zeigt, wie Sie diese beiden Teile des Codes verbinden. Wenn Sie eine neue Anfrage erstellen, müssen Sie die Gewichtung auf eine benutzerdefinierte Anfrage setzen (die, die Sie implementiert haben). Auf diese Weise wird Ihre benutzerdefinierte Gewichtung mit einigen gesperrten Straßen verwendet, während die optimale Route berechnet wird.

public static void main(String[] args) { 

    MyGraphHopper hopper = new MyGraphHopper(); 
    hopper.setOSMFile(OSM_FILE_PATH); 

    hopper.setGraphHopperLocation(GRAPH_FOLDER); 
    hopper.clean(); 
    hopper.setEncodingManager(new EncodingManager("car")); 
    hopper.setCHEnable(false); 
    hopper.importOrLoad(); 

    GHRequest req = new GHRequest(startPoint.getX(), startPoint.getY(), finishPoint.getX(), finishPoint.getY()) 
      .setWeighting(Consts.CURRENT_TRAFFIC) 
      .setVehicle("car") 
      .setLocale(Locale.US) 
      .setAlgorithm(AlgorithmOptions.DIJKSTRA_BI); 

    GHResponse rsp = hopper.route(req); 

} 
Verwandte Themen