Road with access=destination ignored

Hi,

We’ve found that the route optimization when using car_delivery as the profile seems to ignore the road that the destination is on and instead snaps to a nearby road which does not actually provide access to the address.

Here is the route on GraphHopper maps: GraphHopper Maps | Route Planner

And the same route via the optimization API:

{
	"configuration": {
		"routing": {
			"calc_points": true,
			"consider_traffic": false,
			"fail_fast": false,
			"network_data_provider": "openstreetmap",
			"return_snapped_waypoints": true,
			"snap_preventions": [
				"motorway",
				"tunnel",
				"ferry"
			]
		}
	},
	"objectives": [
		{
			"type": "min",
			"value": "completion_time"
		}
	],
	"relations": [],
	"services": [
		{
			"address": {
				"curbside": "any",
				"lat": 51.7708035,
				"location_id": "hWC07t66mpkAK5gKwATC",
				"lon": -0.9428901,
				"name": "Haddenham & Thame Parkway, Aylesbury",
				"street_hint": "Haddenham"
			},
			"allowed_vehicles": [
				"GOSOpqtTIDYbWOueNBcZ"
			],
			"duration": 600,
			"group": "medium",
			"id": "hWC07t66mpkAK5gKwATC",
			"name": "Haddenham & Thame Parkway, Aylesbury",
			"priority": 2,
			"size": [
				1
			],
			"time_windows": []
		}
	],
	"shipments": [],
	"vehicle_types": [
		{
			"capacity": [
				2147483647
			],
			"profile": "car_delivery",
			"service_time_factor": 1,
			"speed_factor": 1,
			"type_id": "vhc_GOSOpqtTIDYbWOueNBcZ"
		}
	],
	"vehicles": [
		{
			"earliest_start": 1714647600,
			"min_jobs": 1,
			"return_to_depot": false,
			"start_address": {
				"curbside": "any",
				"lat": 51.7771128,
				"location_id": "YJs7SzSKx3ytPY
![Screenshot 2024-05-03 at 10.55.11|690x462](upload://x4h1mUZ0LEd1Bn9iNt3YU0bu3iv.jpeg)
KxvVdg",
				"lon": -0.9687678,
				"name": "Thame Freight Services Ltd, Long Crendon",
				"street_hint": "Unit 19 Notley Farm"
			},
			"type_id": "vhc_GOSOpqtTIDYbWOueNBcZ",
			"vehicle_id": "GOSOpqtTIDYbWOueNBcZ"
		}
	]
}

The correct access to the address is from the red arrow direction in this screenshot:

The only thing unusual seems to be that the service road is marked as access: destination in OSM: Way: 97825188 | OpenStreetMap

I’ve tried using a custom model through the graphhopper open source repo, and it was able to plan the route correctly, but only after I removed this condition from the car profile:

{ "if": "!car_access", "multiply_by": "0" }

Is there something about access: destination that means that car_access is not granted or do you know if there’s something else happening here?

I think the problem is this locked barrier: Node: 2639629886 | OpenStreetMap
(if locked=yes it will overwrite any access tags and we do not consider opening_hours unfortunately)

From south this footpath: Way: 23752571 | OpenStreetMap forbids access.

Ah makes sense, thanks! I was thinking the road was the issue because I was planning routes along the road and it still was snapping away, but I guess the road ends up getting “pruned” because of the lack of access so that makes sense.