osm-americana / openstreetmap-americana

A quintessentially American map style
https://americanamap.org
Creative Commons Zero v1.0 Universal
183 stars 59 forks source link

Render ferry routes at lower zoom levels based on importance #720

Open quincylvania opened 1 year ago

quincylvania commented 1 year ago

Ferry routes are a fundamental part of the road network, whether connecting islands or saving hours of driving. Currently, americana renders all ferries at z11 and higher. This is fine for short, walk-on ferry routes, but isn't great for routes that essentially act as segments of interstate highways. Osm-carto renders all ferries at z8, but that makes dense ferry harbors messy and still ignores important ferries at low zooms.

I suggest that we find a way to classify ferry routes and display them based on their importance, the same way we do with roads. OSM doesn't really have ferry classifications (primary/secondary/etc.), but we could get a long way just looking at a way's length and its relations.

See #488 for the rendering of shields on ferry routes.

Long vehicle ferries:

Note that long non-vehicle ferries also exist, and should be treated differently than road ferries since you can't use them as links between highways. See #719 for the differentiating the rendering of vehicle ferries from non-vehicle ferries.

Long non-vehicle ferries:

ZeLonewolf commented 1 year ago

Rendering long ferry routes at lower zoom would be pretty feasible to implement in OMT. Are there examples of ferries that are part of road route relations and/or other tagging that could indicate importance?

quincylvania commented 1 year ago

Are there examples of ferries that are part of road route relations and/or other tagging that could indicate importance?

Simply having motor_vehicle=yes means a ferry should be treated like part of the road network. Unlike roads, ferries are mapped as one long way between endpoints, meaning the way length can be used as a proxy for importance.

The Cape May–Lewes ferry is part of US 9. The Ludington–Manitowoc ferry is part of US 10, but should arguably be shown at the same zooms as the Milwaukee–Muskegon ferry, which doesn't have any road relations. The network=Alaska Marine Highway routes are legally part of the national highway system and might warrant specific care.

1ec5 commented 1 year ago

488 tracks missing route shields along these important car ferry routes.

zekefarwell commented 1 year ago

Great idea. Would be nice if we could find some examples of other maps that show this distinction somehow. Here's a very short bike and pedestrian only ferry that connects two bike paths https://www.openstreetmap.org/way/283817460

Simply having motor_vehicle=yes means a ferry should be treated like part of the road network

It looks like neither the transportation or transportation_name layers of OpenMapTiles contain access tagging information yet. So that's a blocker.

ZeLonewolf commented 1 year ago

There is access tagging in the transportation layer. Adding new fields into the OMT database from OSM isn't really a big deal, but adding new attributes to the tiles takes a bit more care. In the transportation layer, we could perhaps populate the subclass layer with a value that indicates a vehicle ferry. And for the shields, it would just be a matter of extending the existing route logic to include ferries.

zekefarwell commented 1 year ago

Ok, yes I do see some access tagging in the transportation layer but it doesn't look like all access tagging is present all of the time. The bike ferry example is tagged bicycle=yes, foot=yes, horse=no, motor_vehicle=no but none of that is in the tiles.

Screen Shot 2023-01-21 at 12 59 19 PM
ZeLonewolf commented 1 year ago

That's right, only the main access tag is present, and only when set to a negative value.

1ec5 commented 1 year ago

Unlike roads, ferries are mapped as one long way between endpoints, meaning the way length can be used as a proxy for importance.

This is usually but not always the case. Car ferry service between Manitowoc, Wisconsin, and Ludington, Michigan, is represented by a relation consisting of two ways split at the state line, due to a concurrency with U.S. 10, which has a different route relation in each state. But it’s roughly the same length as the Milwaukee–Muskegon line.

1ec5 commented 1 year ago

In the transportation layer, we could perhaps populate the subclass layer with a value that indicates a vehicle ferry.

Let’s continue the discussion about distinguishing between passenger and car ferries in #719. This issue about long and short ferries would be blocked on different upstream changes and require different treatment on the client side.

ZeLonewolf commented 1 year ago

Regarding the specific question of length - what's the lowest zoom where we would actually want to render a ferry line -- purely from a cartographic perspective? It would be silly to render the ferry line to Tristan da Cunha at z0 even though it'd technically be visible.

quincylvania commented 1 year ago

Generally speaking I would show ferries at the same zooms as roads of corresponding importance. Since US interstates appear at z4, I'd try showing the major Alaska Marine Highway routes at this zoom too.

ZeLonewolf commented 1 year ago

Here is a sample rendering I generated using openmaptiles/openmaptiles#1486:

image

For lower zooms, we could probably de-emphasize the line treatment a bit.

1ec5 commented 1 year ago

Since US interstates appear at z4, I'd try showing the major Alaska Marine Highway routes at this zoom too.

I would’ve thought the Alaska Marine Highway would be analogous to the network of highway=trunk, which doesn’t come in until z5. Even Alaska’s unsigned Interstates aren’t even necessarily freeways.

ZeLonewolf commented 1 year ago

Long-distance ferries are now rendered at lower zooms now that openmaptiles/openmaptiles#1486 has been merged and will become generally available after the next openmaptiles/planetiler release.