Graphhopper v4.0 Release Notes

Release Date: 2021-09-29 // 2 months ago
    • faster node-based CH preparation (~20%), (#2390)
    • ๐Ÿ‘ more flexible ElevationProvider interface, support providing elevation via node tags (#2374, #23281)
    • โž• added country encoded value for all countries (#2353)
    • bike improvements (#2357, #2371, #2389)
    • ๐Ÿ‘Œ improved handling of barriers (#2345, #2340, #2406)
    • โœ‚ removed spatial rules, replaced by country rules and custom areas (#2353)
    • โœ‚ removed api module and moved it into web-api, no more Jackson MixIns (#2372)
    • flag encoders are no longer versioned (#2355)
    • JSON route response contains now bbox if start and end are identical
    • renamed PriorityCode enums: AVOID_IF_POSSIBLE -> SLIGHT_AVOID, REACH_DEST -> AVOID, AVOID_AT_ALL_COSTS -> AVOID_MORE, WORST -> BAD
    • โž• added smoothness encoded value, used to determine bike speed (#2303)
    • maps: custom_model is now included in URL (#2328)
    • maps/isochrone: works for different profiles now (#2332)
    • ๐Ÿš€ there is no stable tag anymore, either use master or one of the release branches like 2.x, 3.x, ...
    • ๐Ÿšš moved custom model editor to github.com/graphhopper/custom-model-editor
    • PointList#getSize() -> PointList#size()
    • โœ… migrated tests from junit 4 to 5 (#2324)
    • ๐Ÿ‘€ barriers do no longer block by default for car; remove block_barriers config option (see discussion in #2340)

Previous changes from v3.0

    • โœ‚ removed the stable tag (was pointing to commit dd2c20c763e4c19b701e92386432b37713cd8dc5)
    • ๐Ÿ›  fix location lookup with point hints for curved roads, #2319
    • custom_model_file only accepts file names without path. Use custom_model_folder instead.
    • ๐Ÿšš the load method in GraphHopperWeb (client-hc) was removed
    • ๐Ÿ‘ routing.ch.disabling_allowed and routing.lm.disabling_allowed configuration options are no longer supported
    • ๐Ÿšš moved the graphhopper-reader-osm module into core, use the graphhopper-core module directly instead. GraphHopperOSM is deprecated, use GraphHopper instead.
    • subnetwork removal has changed and for every LocationIndex lookup one needs to explicitly include the new 'subnetwork' EncodedValue, see #2290
    • 0๏ธโƒฃ DefaultEdgeFilter was renamed to AccessFilter. Use DefaultSnapFilter for the location lookup to make sure the query points do not snap to subnetworks. Previously subnetwork edges' access was set to zero, but this is no longer the case. Now subnetworks need to be identified by the subnetwork encoded value.
    • ๐Ÿšš moved the graphhopper-isochrone module into graphhopper-core
    • โœ‚ removed setEncodingManager use setProfiles instead or for more custom requirements use GraphHopper.getEncodingManagerBuilder
    • CustomWeighting language breaks old format but is more powerful and easier to read; it also allows factors >1 for server-side CustomModels
    • ๐Ÿ“‡ renamed GHUtilities.setProperties to setSpeed
    • ๐Ÿ‘€ Helper.createFormatter is using the ENGLISH Locale instead of UK, see #2186
    • the name of an encoded value can only contain lower letters, underscore or numbers. It has to start with a lower letter
    • ๐Ÿ”€ default for GraphHopperMatrixWeb (client for Matrix API) is now the sync POST request without the artificial polling delay in most cases
    • โ™ป๏ธ refactored TransportationMode to better reflect the usage in source data parsing only
    • customizable routing is included in the endpoint /route (under the "custom_model" entry) and does not need to be enabled
    • ๐Ÿ‘€ the format of customizable routing completely changed but the maps demo includes a simple editor to learn it easily (#2239). See #2209 and #2251. See examples in this blog post: https://www.graphhopper.com/blog/2020/05/31/examples-for-customizable-routing/
    • โœ‚ removed Dockerfile
    • the second argument of the VirtualEdgeIteratorState constructor is now an edge key (was an edge id before)
    • โœ‚ removed instruction annotations(cycleway, off_bike, ford, ferry, private, toll)
    • the boundaries file is now expected to provide the countrycodes via the ISO3166-1:alpha3 property