Cycling-regular "Unable to find a route between points"

Hi, I am running the ORS service on-premise, on Romanian maps but cannot seem to get rid of this error in cycling routes OR matrix.

I am using ORS version 6.3.1 with these maps:
https://download.geofabrik.de/europe/romania-latest.osm.pbf

I also have an older version 6.1.0 deployed where it works.
On profile driving-car it also works.

The problem seems to be around this coordinate: 21.228802063134708, when I reduce this to 21.228, I start getting results.

So I think we might be dealing with a snapping issue. But I’ve tried a) adding the radiuses paramter in the request and b) changing the app config, wihtout any success.
From the driving-car profile I was able to see it snaps at only 31 meters, so it really should be fine.

ORS Request
URL: /ors/v2/directions/cycling-regular/json

Request body:
{
    "coordinates": [
        [
            21.198999881744385,45.75767297920547
        ],
        [
            21.228802063134708,45.755681797440886
        ]
    ],
    "radiuses": [
        50000,
        50000
    ]
}


Response body:
{
    "error": {
        "code": 2009,
        "message": "Route could not be found - Unable to find a route between points 1 (21.1989999 45.7576730) and 2 (21.2288000 45.7556818)."
    },
    "info": {
        "engine": {
            "version": "6.3.1",
            "build_date": "2021-02-07T15:31:16Z"
        },
        "timestamp": 1612714193011
    }
}

app.config.json
{
“ors”: {
“info”: {
“base_url”: “https://openrouteservice.org/”,
“support_mail”: “support@openrouteservice.org”,
“author_tag”: “openrouteservice”,
“content_licence”: “LGPL 3.0”
},
“services”: {
“matrix”: {
“enabled”: true,
“maximum_routes”: 500000,
“maximum_routes_flexible”: 500001,
“maximum_search_radius”: 5000,
“maximum_visited_nodes”: 100000,
“allow_resolve_locations”: true,
“attribution”: “openrouteservice.org, OpenStreetMap contributors”
},
“isochrones”: {
“enabled”: true,
“maximum_range_distance”: [
{
“profiles”: “any”,
“value”: 50000
},
{
“profiles”: “driving-car, driving-hgv”,
“value”: 100000
}
],
“maximum_range_time”: [
{
“profiles”: “any”,
“value”: 18000
},
{
“profiles”: “driving-car, driving-hgv”,
“value”: 3600
}
],
“fastisochrones”: {
“maximum_range_distance”: [
{
“profiles”: “any”,
“value”: 50000
},
{
“profiles”: “driving-car, driving-hgv”,
“value”: 500000
}
],
“maximum_range_time”: [
{
“profiles”: “any”,
“value”: 18000
},
{
“profiles”: “driving-car, driving-hgv”,
“value”: 10800
}
],
“profiles”: {
“default_params”: {
“enabled”: false,
“threads”: 12,
“weightings”: “recommended”,
“maxcellnodes”: 5000
},
“profile-vehicles-hgv”: {
“enabled”: true,
“threads”: 12,
“weightings”: “recommended, shortest”,
“maxcellnodes”: 5000
}
}
},
“maximum_intervals”: 10,
“maximum_locations”: 200,
“allow_compute_area”: true
},
“routing”: {
“enabled”: true,
“mode”: “normal”,
“routing_description”: “This is a routing file from openrouteservice”,
“routing_name”: “openrouteservice routing”,
“sources”: [
“/ors-core/data/romania-latest.osm.pbf”
],
“init_threads”: 1,
“attribution”: “openrouteservice.org, OpenStreetMap contributors”,
“elevation_preprocessed”: false,
“profiles”: {
“active”: [
“car”,
“bike-regular”,
“walking”
],
“default_params”: {
“encoder_flags_size”: 8,
“graphs_root_path”: “/ors-core/graphs”,
“elevation_provider”: “gmted”,
“elevation_cache_path”: “/ors-core/cgiar_provider”,
“elevation_cache_clear”: false,
“instructions”: true,
“maximum_distance”: 100000,
“maximum_distance_dynamic_weights”: 100000,
“maximum_distance_avoid_areas”: 100000,
“maximum_waypoints”: 50,
“maximum_snapping_radius”: 400,
“maximum_avoid_polygon_area”: 200000000,
“maximum_avoid_polygon_extent”: 20000,
“maximum_distance_alternative_routes”: 100000,
“maximum_alternative_routes”: 3,
“maximum_distance_round_trip_routes”: 100000,
“maximum_speed_lower_bound”: 80,
“preparation”: {
“min_network_size”: 0,
“min_one_way_network_size”: 0,
“methods”: {
“lm”: {
“enabled”: true,
“threads”: 1,
“weightings”: “recommended,shortest”,
“landmarks”: 16
}
}
},
“execution”: {
“methods”: {
“lm”: {
“disabling_allowed”: true,
“active_landmarks”: 8
}
}
}
},
“profile-car”: {
“profiles”: “driving-car”,
“parameters”: {
“encoder_flags_size”: 8,
“encoder_options”: “turn_costs=true|block_fords=false|use_acceleration=false”,
“maximum_distance”: 100000,
“elevation”: true,
“maximum_snapping_radius”: 350,
“preparation”: {
“min_network_size”: 200,
“min_one_way_network_size”: 200,
“methods”: {
“ch”: {
“enabled”: true,
“threads”: 1,
“weightings”: “fastest”
},
“lm”: {
“enabled”: false,
“threads”: 1,
“weightings”: “fastest,shortest”,
“landmarks”: 16
},
“core”: {
“enabled”: true,
“threads”: 1,
“weightings”: “fastest,shortest”,
“landmarks”: 64,
“lmsets”: “highways;allow_all”
}
}
},
“execution”: {
“methods”: {
“ch”: {
“disabling_allowed”: true
},
“lm”: {
“disabling_allowed”: true,
“active_landmarks”: 6
},
“core”: {
“disabling_allowed”: true,
“active_landmarks”: 6
}
}
},
“ext_storages”: {
“WayCategory”: {},
“HeavyVehicle”: {},
“WaySurfaceType”: {},
“RoadAccessRestrictions”: {
“use_for_warnings”: true
}
}
}
},
“profile-hgv”: {
“profiles”: “driving-hgv”,
“parameters”: {
“encoder_flags_size”: 8,
“encoder_options”: “turn_costs=true|block_fords=false|use_acceleration=false”,
“maximum_distance”: 100000,
“elevation”: true,
“preparation”: {
“min_network_size”: 200,
“min_one_way_network_size”: 200,
“methods”: {
“ch”: {
“enabled”: true,
“threads”: 1,
“weightings”: “recommended”
},
“lm”: {
“enabled”: true,
“threads”: 1,
“weightings”: “recommended,shortest”,
“landmarks”: 16
},
“core”: {
“enabled”: true,
“threads”: 1,
“weightings”: “recommended,shortest”,
“landmarks”: 64,
“lmsets”: “highways;allow_all”
}
}
},
“execution”: {
“methods”: {
“ch”: {
“disabling_allowed”: true
},
“lm”: {
“disabling_allowed”: true,
“active_landmarks”: 6
},
“core”: {
“disabling_allowed”: true,
“active_landmarks”: 6
}
}
},
“ext_storages”: {
“WayCategory”: {},
“HeavyVehicle”: {
“restrictions”: true
},
“WaySurfaceType”: {}
}
}
},
“profile-bike-regular”: {
“profiles”: “cycling-regular”,
“parameters”: {
“encoder_options”: “consider_elevation=true|turn_costs=true|block_fords=false”,
“maximum_snapping_radius”: 350,
“elevation”: true,
“ext_storages”: {
“WayCategory”: {},
“WaySurfaceType”: {},
“HillIndex”: {},
“TrailDifficulty”: {}
}
}
},
“profile-bike-mountain”: {
“profiles”: “cycling-mountain”,
“parameters”: {
“encoder_options”: “consider_elevation=true|turn_costs=true|block_fords=false”,
“maximum_snapping_radius”: 350,
“elevation”: true,
“ext_storages”: {
“WayCategory”: {},
“WaySurfaceType”: {},
“HillIndex”: {},
“TrailDifficulty”: {}
}
}
},
“profile-bike-road”: {
“profiles”: “cycling-road”,
“parameters”: {
“encoder_options”: “consider_elevation=true|turn_costs=true|block_fords=false”,
“maximum_snapping_radius”: 350,
“elevation”: true,
“ext_storages”: {
“WayCategory”: {},
“WaySurfaceType”: {},
“HillIndex”: {},
“TrailDifficulty”: {}
}
}
},
“profile-bike-electric”: {
“profiles”: “cycling-electric”,
“parameters”: {
“encoder_options”: “consider_elevation=true|turn_costs=true|block_fords=false”,
“maximum_snapping_radius”: 350,
“elevation”: true,
“ext_storages”: {
“WayCategory”: {},
“WaySurfaceType”: {},
“HillIndex”: {},
“TrailDifficulty”: {}
}
}
},
“profile-walking”: {
“profiles”: “foot-walking”,
“parameters”: {
“encoder_options”: “block_fords=false”,
“maximum_snapping_radius”: 350,
“elevation”: true,
“ext_storages”: {
“WayCategory”: {},
“WaySurfaceType”: {},
“HillIndex”: {},
“TrailDifficulty”: {}
}
}
},
“profile-hiking”: {
“profiles”: “foot-hiking”,
“parameters”: {
“encoder_options”: “block_fords=false”,
“elevation”: true,
“ext_storages”: {
“WayCategory”: {},
“WaySurfaceType”: {},
“HillIndex”: {},
“TrailDifficulty”: {}
}
}
},
“profile-wheelchair”: {
“profiles”: “wheelchair”,
“parameters”: {
“encoder_options”: “block_fords=true”,
“elevation”: true,
“maximum_snapping_radius”: 50,
“ext_storages”: {
“WayCategory”: {},
“WaySurfaceType”: {},
“Wheelchair”: {
“KerbsOnCrossings”: “true”
},
“OsmId”: {}
}
}
}
}
}
},
“logging”: {
“enabled”: true,
“level_file”: “DEBUG_LOGGING.json”,
“location”: “/var/log/ors”,
“stdout”: true
},
“system_message”: [
{
“active”: false,
“text”: “This message would be sent with every routing bike fastest request”,
“condition”: {
“request_service”: “routing”,
“request_profile”: “cycling-regular,cycling-mountain,cycling-road,cycling-electric”,
“request_preference”: “fastest”
}
},
{
“active”: false,
“text”: “This message would be sent with every request for geojson response”,
“condition”: {
“api_format”: “geojson”
}
},
{
“active”: false,
“text”: “This message would be sent with every request on API v1 from January 2020 until June 2050”,
“condition”: {
“api_version”: 1,
“time_after”: “2020-01-01T00:00:00Z”,
“time_before”: “2050-06-01T00:00:00Z”
}
},
{
“active”: false,
“text”: “This message would be sent with every request”
}
]
}
}

Stack trace of the error
org.he igit.ors.exceptions.RouteNotFoundException: Route could not be found - Unable to find a route between points 1 (21.1989999 45.7576730) and 2 (21.2288000 45.7556818).
at org.heigit.ors.routing.RoutingProfileManager.computeLinearRoute(RoutingProfileManager.java:370) ~[classes/:?]
at org.heigit.ors.routing.RoutingProfileManager.computeRoute(RoutingProfileManager.java:306) ~[classes/:?]
at org.heigit.ors.api.requests.routing.RouteRequestHandler.generateRouteFromRequest(RouteRequestHandler.java:53) ~[classes/:?]
at org.heigit.ors.api.controllers.RoutingAPI.getJsonRoute(RoutingAPI.java:121) ~[classes/:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]

Thanks for reaching out!

I don’t actually think this is a snapping issue because then the error message would rather say “Cannot find point”. Besides, I don’t observe it in our live instance which has the same app.config setting "maximum_snapping_radius": 350 as you do, and it works for your car profile anyway. I suspect there might be some problem with the configuration of your routing algorithms. Maybe try adding entries for the ch method to your cycling profiles similar as you have them for the hgv profile to see whether this will make any difference.