A ferry route is conventionally mapped as a single route=ferry
way from terminal to terminal, with a duration
tag so routers don’t have to assume the boat’s speed. But occasionally it becomes necessary to split the way and join the ways with a route=ferry
relation. Logically, the relation would have a duration
tag, but should each member way also have a duration
tag? If so, should each way have the same overall duration or some fraction of the duration based on its length?
For example, this car ferry between Manitowoc, Wisconsin, and Ludington, Michigan, is a popular alternative to driving all the way around Lake Michigan. It’s supposed to take around 4½ hours. Unlike a similar ferry to the south, the Manitowoc–Ludington ferry is currently represented by two route=ferry
ways that meet at the Wisconsin–Michigan state line (which is also the Central–Eastern time zone boundary). The entire route is part of U.S. Route 10, which, like every U.S. Route, is split into a separate relation per state. (In principle, the same thing could happen with two routes belonging to different networks.)
The differing relations requires us to maintain multiple ways. The relation approach used extensively for situations like this. However, the documentation is silent on how to determine the duration
of each member way. When this ferry’s way was split in 2018, the duration
remain unchanged at 4½ hours. Unfortunately, if you get walking directions from GraphHopper, OSRM, or Valhalla, the estimated travel time is a whopping 9 hours:
But if you drive, some ostensibly faster options become available. GraphHopper and Valhalla avoid the ferry in favor of a parallel ferry to the south between Milwaukee, Wisconsin, and Muskegon, Michigan. This ferry route needs only one way because it doesn’t belong to any highway route. Its faster boat takes only 2½ hours, but it’s so out of the way that it adds about 2 hours to the trip, for a total travel time of 6½ hours:
BRouter, Openrouteservice, and OSRM take a detour all the way around the lake via Chicago, taking 6½–7½ hours for what was supposed to be a 4½-hour trip:
As for mobile applications, I couldn’t get either OsmAnd or Organic Maps to calculate a route between these two endpoints, but Magic Earth prefers driving on the Manitowoc–Ludington ferry. It thinks the ferry takes only 3 hours, probably because it ignores the duration
tag:
In this case, ignoring the duration
is probably better than giving an unhelpful route around the lake. If the ways lack duration
tags, then perhaps routers could know to consult the relation. Or maybe it’s OK to just tag each way with half the duration. Both edits are easy, but I’m curious if others have come across a similar situation elsewhere. Whichever interpretation is correct, we should be consistent and document our expectations so that routing engines can ensure reliability.