Graphhopper v0.4 Release Notes
Release Date: 2015-03-18 // about 9 years ago-
- translation key turn changed and merged with left etc into turn_left, turn_right etc
- create location index before preparation in the GraphHopper class
- 🚚 encodingManager.getSingle() is removed and flagEncoder list is no longer sorted, the first vehicle is used for CH preparation
- ✂ removed LocationIndexTreeSC, use new LocationIndexTree(levelGraph.getBaseGraph(), directory) instead
- getLevel and setLevel do no longer automatically increase node count, use getNodeAccess.ensureNode for that
- 👀 normal algorithms are now possible on prepared graph use getBaseGraph, see #116
- GHResponse no longer has isFound method, use !hasErrors instead
- 🔀 merged unused Edge class into EdgeEntry
- astar and astarbi are now both none-heuristic and take parameters for beeline approximation: astar.approximation=BeelineSimplification|BeelineAccurate or astarbi.approximation=...
- 👍 making GPX export according to the schema to support import from various tools like basecamp
- 🔨 refactoring: AllEdgesIterator.getMaxId is now named getCount
- 🚚 major change of internal API: moved method "Path RoutingAlgorithm.calcPath(QueryResult,QueryResult)" to a helper method QueryGraph.lookup, call queryResult.getClosestNode for the calcPath(nodeFrom,nodeTo) method
- no cachedWays and cachedPoints in Path anymore
- 🚚 Path.findInstruction was moved to InstructionList.find
- if start and end point are identical an algorithm will find the path consisting only of one node, one point and one instruction (finish instruction), but without edges
- 0️⃣ astarbi has new default values for approximation (false) and approximation_factor (1.2) in RoutingAlgorithmFactorySimple
- instead of strings use the variables in AlgorithmOptions to specify an algorithm
- 👉 use RoutingAlgorithmFactorySimple instead of RoutingAlgorithmFactory, also more consistent algorithm preparation handling due to new AlgorithmOptions, therefor removed NoOpAlgorithmPreparation
- 👀 GHResponse.getXX methods now fail fast (throw an exception) if an error while route calculation occurred. See #287
- renamed less often used URL parameter 'min_path_precision' to way_point_max_distance which makes it identical to the setWayPointMaxDistance method used for simplification at OSMImport
- ✂ removed douglas.minprecision from Java API ghRequest.hints => use wayPointMaxDistance instead
- 👍 encoder.supportTurnCost is replaced by encoder.supports(TurnWeighting.class)
- 📜 CmdArgs is now a Map instead Map. The value will be parsed up on every getXY call, makes storing string vs. object less error-prone
- ✂ removed GHRequest.getHint, instead use the provided methods in GHRequest.getHints().getXY and GHRequest.getHints().put
- important graph incompatibility as properties cannot be loaded. renamed osmreader.bytesForFlags to graph.bytesForFlags, renamed config property osmreader.acceptWay to graph.flagEncoders
- ✅ default weighting is now fastest, fixing #261
- 👀 moved method GraphHopper.main into tools module and class com.graphhopper.tools.Import, see #250
- 🔨 refactored GraphHopper.createWeighting to accept more than one configuration option, see #237
- 🔨 refactored GraphHopper.disableCHShortcuts to setCHEnable(boolean)
- moving the boolean parameter of GraphHopper.setInMemory into a separate method setStoreOnFlush
- renaming of GraphHopper.setCHShortcuts to setCHWeighting, as well as the property prepare.chShortcuts to prepare.chWeighting
- 👀 jsonp is disabled by default. You need to enable it in the config.properties, see the config-example.properties
- 🔧 EncodingManager cannot be null in GraphHopperStorage. If you need to parse EncodingManager configuration from existing graph use EncodingManager.create
- 🔧 no reflection done in EncodingManager which improves portability and makes configuration of encoders possible before adding to manager
- ✂ removed dijkstraNativebi as no performance advantage but maintenance disadvantage and similar to oneToManyDijkstra
- 📚 to provide context for turn costs we needed to add prevEdgeId into Weighting.calcWeight, see new documentation
- 🔒 with the introduction of lock protection mechanism (see #112) GraphHopper needs always write access, see also #217
- 🆕 new GraphHopper.clean method to remove the graph directory via Java API