All Versions
92
Latest Version
5.0
Avg Release Cycle
46 days
Latest Release
755 days ago

Changelog History
Page 9

  • v0.11 Changes

    September 12, 2018
    • ๐ŸŒ web resources for dropwizard web framework (no servlets anymore) #1108
    • ๐Ÿ‘€ prefix -Dgraphhopper. for command line arguments necessary, see docs/web/quickstart.md or docs/core/quickstart-from-source.md#running--debbuging-with-intellij for details
    • delegated reading properties to dropwizard, i.e. the new format yml is not read again in GraphHopper.init
    • ๐Ÿ”„ changed file format for landmarks #1376
    • convert properties into new yml format via: https://gist.github.com/karussell/dbc9b4c455bca98b6a38e4a160e23bf8
  • v0.10 Changes

    February 26, 2018
    • introduce path details
    • โž• added handcoded API java client to this repository
  • v0.9 Changes

    June 13, 2017
    • โœ‚ remove war bundling support #297
    • 0๏ธโƒฃ rename of DefaultModule to GraphHopperModule and GHServletModule to GraphHopperServletModule
    • EncodedValue uses Math.round(value/factor). This can change the retrieved values for EncodedValues #954
    • EncodedDoubleValue and EncodedValue requires maxValue/factor to be a natural number #954
    • 0๏ธโƒฃ default base algorithm for all modes is bidirectional A* (except speed mode)
    • introduced landmarks based hybrid mode, #780
    • moving all prepare.xy configs to prepare.ch.xy and e.g. disallow the old
    • โœ‚ removed deprecated methods in GraphHopper (setCHWeighting, setCHWeightings, getCHWeightings, setCHWeightings, getCHPrepareThreads, setCHPrepareThreads), Path.calcMillis, findID of LocationIndex and all implementations
  • v0.8 Changes

    October 18, 2016
    • ๐Ÿ”จ refactoring to Weighting class, see #807
    • โœ‚ removed FlagEncoder from parameters as weighting.getFlagEncoder can and is used
    • all properties with prefix "osmreader." changed to "datareader." and osmreader.osm changed to datareader.file
    • maven/gradle dependency graphhopper is now split into graphhopper-core and graphhopper-reader-osm, i.e. if you previouls depend on 'graphhopper' artificat you should now use graphhopper-reader-osm except environments like Android where you just load the graph and do no import
    • ๐Ÿ‘‰ use GraphHopperOSM as base class instead of GraphHopper
    • ๐Ÿ“ฆ OSM reader separated from core, use new graphhopper-core package
    • ๐Ÿ“ฆ moved subnetwork code into own package com.graphhopper.routing.subnetwork
    • ๐Ÿ“ฆ moved weighting code into own package com.graphhopper.routing.weighting
    • ๐Ÿ‘€ code format has changed, so it is important to change your PRs too before you merge master, see discussion #770
  • v0.7 Changes

    June 15, 2016
    • โž• added snapped points to output JSON for every path
    • the foot routing is now much smoother and only considers safe paths, to use beautiful roads (i.e. prefer hiking routes etc) use the new 'hike' profiles, see #633
    • ๐Ÿšš vehicle constants have moved to FlagEncoderFactory
    • ๐Ÿ‘€ several constants changed to under score notation see #719 with a few breaking changes, e.g. use lower case names for flag encoders or jsonp_allowed instead of the jsonpAllowed annotation
    • moving all string parameter constants into the Parameters class
    • ๐Ÿ‘€ no more acceptedRailways set see #662 for more information
    • ๐ŸŒ web API: content type of gpx export is now application/gpx+xml if not explicitly specified
    • ๐Ÿ‘‰ use prepare.ch.weightings instead of prepare.chWeighting e.g. for disabling CH use prepare.ch.weightings=no
    • ๐Ÿ”จ GraphHopper class is refactored regarding RoutingAlgorithmFactory in order to fix problem when integrating flexibility routing, most of the CH related stuff is moved into CHAlgoFactoryDecorator, several methods are deprecated to use the methods of the decorator, see #631
    • WeightingMap is now named HintsMap
    • ๐Ÿ‘€ use the correct graphHopperFolder as no automatic fallback to 'folder-gh' is happening anymore, see #704
    • ๐Ÿ”จ refactored FlagEncoder.handleFerryWay to getFerrySpeed to make it possible to fix #665
    • โœ‚ removed setWeightLimit as too unspecific for arbitrary weights, use setMaxVisitedNodes instead
    • missing renames for Path.setEdgeEntry -> setSPTEntry and AbstractAlgorithm.createEdgeEntry -> createSPTEntry
  • v0.6 Changes

    February 08, 2016
    • โœ‚ removed methods deprecated in 0.4 and 0.5
    • ๐Ÿ“‡ renamed EdgeEntry to SPTEntry and AStar.AStarEdge to AStar.AStarEntry
    • ๐Ÿšš parameter force removed from AbstractFlagEncoder.applyMaxSpeed
    • GHResponse now wraps multiple PathWrapper; renamed GraphHopper.getPaths to calcPaths as 'get' sounded too cheap; a new method RoutingAlgorithm.calcPaths is added; see #596
    • moving lgpl licensed file into own submodule graphhopper-tools-lgpl
    • renaming of Tarjans algorithm class to TarjansSCCAlgorithm
    • more strict naming for Weighting enforced and more strict matching to select Weighting (equals check), #490
    • specify the preferred-language for way names during graph import (ISO 639-1 or ISO 639-2)
    • ๐Ÿ‘ renaming of getCHWeighting to getCHWeightings due to supporting multiple CH weightings, #623
    • ๐Ÿ—„ deprecation of setCHWeighting, please use setCHWeightings instead, #623
  • v0.5 Changes

    August 12, 2015
    • ๐Ÿ‘€ Several names have changed see #466, #467, #468
    • โšก๏ธ GraphHopper.optimize removed use postProcessing instead
    • method GraphHopper.getGraph() changed to getGraphHopperStorage()
    • the interface GraphStorage does no longer extend from the Graph interface. Use GraphHopperStorage (which implements the Graph interface via the base graph) or only Graph instead
    • now it is necessary to call baseGraph/chGraph.freeze in order to use the chGraph (to simply determine when an edgeId is a shortcut)
    • LevelGraphStorage is now a GraphHopperStorage with an additional ch graph (CHGraphImpl)
    • GraphHopperStorage implements now the Graph interface and delegates all necessary methods to the underlying base graph. To do routing you call getGraph(CHGraph.class or Graph.class) where the parameter Graph.class returns the base graph and the behaviour is identical to GraphHopperStorage itself
    • renamed LevelGraph* to CHGraph*
    • ๐Ÿ“‡ renamed NoGraphExtension to NoOpExtension
    • โœ‚ removed visitedNodes method in GraphHopper replaced with per response information: response.getHints().getLong(" visited_nodes.sum", 0)
    • โž• added ability to store hints in GHResponse which will be forwarded to the json too
    • ๐Ÿ’ฅ breaking change in HTTP API: error JSON format changed to be message:"" instead of within info.errors, see updated api documentation
    • ๐Ÿ—„ made GHResponse.getMillis, Path.getMillis, GPXEntry.getMillis deprecated, use getTime instead
    • ๐Ÿ—„ in AbstractFlagEncoder, parse*() and getStr() are now deprecated, use properties.get* instead
  • v0.4 Changes

    March 18, 2015
    • 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
  • v0.3.0 Changes

    May 13, 2014
    • ๐Ÿ›  introduced prefer bits, now bike uses more bits and 3 bike encoder do not fit into 32 bit anymore, will be fixed later
    • ๐ŸŒ moved Translation argument into Path.calcInstruction for more fine grained control, instructions are now uncached and GHRequest: new locale parameter
    • ๐Ÿšš CoordTrig and the like are removed, GHPlace is mostly replaced by GHPoint and so GHRequest has now methods ala addPoint instead
    • โœ‚ removed isBoth from AbstractFlagEncoder, moved canBeOverwritten and associated test to PrepareEncoder
    • โœ‚ removed unused directory.rename
    • ๐Ÿ”จ refactor edge.copyProperties into copyPropertiesTo to have similar semantics as Graph.copyTo
    • calcWeight now contains reverse boolean to calculate correct direction dependent weight
    • ๐Ÿ‘€ completely different web API response format. see docs/web
    • swapDirections is renamed to reverseFlags (EncodingManager and FlagEncoders)
    • edgeState.detach has now a reverse parameter, just use false to get previous results
    • ๐Ÿ— web api: buildDate contains now timezone, algoType is replaced with weighting
    • dijkstraNative is now dijkstraNativebi
    • ๐Ÿ›  fixed #151
    • calcWeight now contains reverse boolean to calculate correct direction dependent weight
    • EncodingManager always takes the encoders in constructor, to force always init
    • ๐Ÿ”จ GraphHopper.setMemory(true, true/false) was refactored to GraphHopper.setMemory(true/false), use mmap config via GraphHopper.setMemoryMapped()
    • โšก๏ธ incompatible edges => you need to re-import data and/or update the edges file
    • ๐ŸŒ the instructions of the web response does not contain times (string) but instead millis (long)
    • โšก๏ธ PrepareContractionHierarchies.setPeriodicUpdates is now in percentage not in absolute counts
    • ๐Ÿ‘Œ improved bike routing #132, #138, #139, #150
    • ๐ŸŒ gpx export via API, HTTP (route?type=gpx) and web interface is possible: #113, #136, #141
  • v0.2.0 Changes

    November 23, 2013
    • ๐Ÿ”„ change inconsistent default settings for contraction hierarchies in the API - see https://lists.openstreetmap.org/pipermail/graphhopper/2013-December/000585.html
    • ๐Ÿ›  fixed issues with android:
      • graphhopper: use maps from 0.2 path; updated maps
      • mapsforge: use mapsforge-map dependency; merged #461; avoid duplicates otherwise mapsforge-core would be duplicate ( ?)
    • ๐Ÿ”จ refactored/renamed classes and methods:
      • refactor 'flags' from int to long (still only int is stored)
      • replacing Graph.edge(a,b,dist,edgeFlags) by Graph.edge(a,b).setDistance().setFlags()
      • FlagEncoder.flags => use FlagEncoder.setProperties or separate setAccess and setSpeed method
      • renamed LocationIDResult to QueryResult and Location2NodesNtree to LocationIndexTree
      • renamed Location2IDIndex to LocationIndex
      • renamed WeightCalculation to Weighting and getWeight to calcWeight, the URL parameter algoType in web module is now deprecated and 'weighting' should be used
      • removed GHDijkstraHeap, GHDijkstraHeap2
      • made DistanceCalc into interface (new DistanceCalcEarth implementation)
      • made GraphStorage into interface (new GraphHopperStorage implementation) move some methods from Graph into GraphStorage -> optimize + node removal stuff -> not necessary in algorithms
    • 0๏ธโƒฃ incompatible storage layout due to: pluggable endianness (#103) -> changed default endianness to LITTLE
    • โž• add highly experimental UnsafeDataAccess to speed up search ~15%
    • ๐Ÿ›  several small bug fixes and improvements
    • different edge insert
    • important bug fix for edge retrieval which leads to massive speed up in prepare + CH algos
    • ๐Ÿ›  finally fixed major feature request #27 to allow gps-to-gps queries instead of only junction-to-junction ones.
      • follow up in #52 and #115
      • slower but more precise and necessary edge distance calculation
    • ๐Ÿ›  fixed bug #105 for disconnected areas
    • ๐Ÿ›  fix which made CH preparation ~5% faster
    • more align API for all algorithms. and initCollection is called via 1000 not something depending on the graph size
    • API changed
      • case of vehicle now case does not matter
      • returned distance is in meter now
    • ๐Ÿ‘ better i18n support
    • ๐Ÿ›  fixed major bug #102 when removing subnetworks
    • ๐Ÿ›  fixed bug #89 for trams on roads
    • completed improvement #93 for ferries
    • edge explorer makes none-CH algorithms ~8% faster
    • ๐Ÿ”— link to all closed issues: https://github.com/graphhopper/graphhopper/issues?milestone=2&state=closed