Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add aerialways #755

Merged
merged 23 commits into from
Mar 7, 2023
Merged

add aerialways #755

merged 23 commits into from
Mar 7, 2023

Conversation

claysmalley
Copy link
Member

Fixes #500

Breckenridge, Colorado, US:
Screenshot from 2023-02-01 18-02-59 Screenshot from 2023-02-01 18-04-01

La Paz/El Alto, Bolivia:
Screenshot from 2023-02-01 18-04-50 Screenshot from 2023-02-01 18-05-58

Aletsch Arena, Valais/Wallis, Switzerland:
Screenshot from 2023-02-01 18-11-12 Screenshot from 2023-02-01 18-12-22

Medellín, Colombia:
Screenshot from 2023-02-01 18-13-35

@ZeLonewolf
Copy link
Member

The great American inspiration: James Niehues:
image

Definitely works better against a snow map. I suppose there's no way to differentiate skiing arialways from transportation ones.

The Bolivia case seems to get especially cluttered. I wonder if perhaps it would benefit from a strong knockout and a softer line color.

@claysmalley
Copy link
Member Author

Adjusted the width so that the knockout casing shows up better:

Screenshot from 2023-02-01 19-38-17
Screenshot from 2023-02-01 19-39-23

@@ -40,6 +41,10 @@ export const sections = [
name: "Railroads",
entries: RailLayers.legendEntries,
},
{
name: "Aerialways",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think “aerialway” is only a real word in OSM English. Both aerial trams and chair lifts count as aerial lifts.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chairlifts or gondolas on the east coast.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tram sounds like some quaint en_GB thing to me.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aerial lift sounds good to me as a general term.

The two transit-oriented aerial lifts I know of in the United States have tram in their names:

I think "aerial tramway" in US English is reasonably understood to be a transit-oriented aerialway=gondola or aerialway=cable_car. But at a ski resort, I'd definitely call that a gondola.

@jleedev
Copy link
Member

jleedev commented Feb 2, 2023

Shucks, landuse=winter_sports isn't in the tiles.

@ZeLonewolf
Copy link
Member

Yeah, a little background on that:
https://github.com/openmaptiles/openmaptiles-skiing

@wmisener
Copy link
Collaborator

wmisener commented Feb 2, 2023

The bright red makes these features very visually prominent, and thus by implication very important (though the width adjustment helped make them a bit more muted). That prominence makes sense enough on a map of a single ski resort, especially with their snow-white backgrounds, but I'm not sure it's right for a general purpose map. I don't know if these aerialways are that much more important to a typical user than, e.g., railways, which render much more subtly. This especially strikes me in the examples in urban settings.

On Americana so far, red has been reserved for freeways and trunk roads, so this would change/dilute the meaning of the color red in the style. The current casing style also makes them look quite similar to a trunk-expressway IMO. I wonder if it would be more consistent for these features to be purple, the designated "transportation" color (although I think airports are the only thing rendered in that class so far), as has been toyed with for busways in #477.

@1ec5
Copy link
Member

1ec5 commented Feb 3, 2023

I agree that it would be confusing to overload red to mean either an important road or something very different, especially since the two can cross. There’s a limit to how much inspiration we can draw from a site map of any kind, whether a ski resort, golf course, or shopping mall, since a site map can afford to deemphasize anything off-site considerably. If we need to maintain a connection to ski resort maps, perhaps pink (with a white casing) would be sufficiently distinct from a road, but it would need to be desaturated a bit to avoid overwhelming the map.

@claysmalley
Copy link
Member Author

claysmalley commented Feb 3, 2023

Here's a sample of purple, pink and red, all desaturated a little:

Screenshot from 2023-02-02 20-32-52
Screenshot from 2023-02-02 20-35-15
Screenshot from 2023-02-02 20-36-28

Screenshot from 2023-02-02 20-33-22
Screenshot from 2023-02-02 20-35-28
Screenshot from 2023-02-02 20-36-20

Screenshot from 2023-02-02 20-34-31
Screenshot from 2023-02-02 20-35-43
Screenshot from 2023-02-02 20-36-37

@quincylvania
Copy link
Contributor

Color aside, I think these might benefit from rendering little dots for the endpoints, any intermediate stations, and maybe at higher zooms the aerialway=pylon nodes. This would indicate the distinctive cable infrastructure and allow lines to stand out while having a thinner stroke. Like you could probably go down to one centered stroke here (showing just stations at this zoom, not poles):

Artboard

osm-carto takes a nod at this approach but doesn't use the actual locations of the poles, just a pattern, which I personally find a little misleading and silly-looking at high zooms.

Screenshot 2023-02-02 at 8 43 56 PM

@claysmalley
Copy link
Member Author

Aerialway stations tracked in #692. I think matching the color of aerialway lines is a good idea.

Unfortunately aerialway=pylon isn't present in the tiles, otherwise it would definitely be implemented in this PR.

@adamfranco
Copy link
Collaborator

+1 for the purple option. I like how it fits the transit theme and also its visual weight. It's distinctive enough to be able to follow through the myriad grayscale lines of Bolivia without jumping out too much.

@adamfranco
Copy link
Collaborator

Also, at very high zooms the knockout might be dropped to let the wires stand alone as they cross over buildings and other features at something approximating a realistic width. With pylons (at some point) that effect could be really neat.

@claysmalley
Copy link
Member Author

Changed to airport purple. Here are some aerialways near airports for context:

Screenshot from 2023-02-03 15-24-18
Screenshot from 2023-02-03 15-24-55
Screenshot from 2023-02-03 15-25-41

@claysmalley
Copy link
Member Author

Line gap now significantly widens at very high zoom:

Screenshot from 2023-02-03 16-11-16

@ZeLonewolf
Copy link
Member

The purple is definitely an improvement over the red. What is the distinction between the double-thin lines and the strong dashed lines?

@claysmalley
Copy link
Member Author

Dashed line, feet touch the ground. Two parallel lines, you're five stories up.

@claysmalley
Copy link
Member Author

Note in the Courchevel example above, there are two drag lifts (dashed lines) that pass under road bridges. Ideally, layer would be exposed here, but for most cases we can assume drag lifts are at layer=0 and aerial lifts are at layer=6.

@ZeLonewolf
Copy link
Member

For inspiration, an areial tram on SwissTopo.

Screenshot_20230203_165527_swisstopo.jpg

I like that it's desatured and thinner. Wondering if we can try that but with our purple hue. Also consider long-dashes.

paint: {
"line-color": Color.backgroundFill,
"line-width": casingLineWidth,
"line-gap-width": casingLineGapWidth,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The legend doesn’t correctly implement line-gap-width, making this legend entry look misleading: #770.

Roosevelt Island Tramway

@claysmalley
Copy link
Member Author

In case anyone was worried that drag lifts would clash with political boundaries:

Screenshot from 2023-02-07 20-24-18

@zekefarwell
Copy link
Collaborator

zekefarwell commented Feb 8, 2023

Of the three colors shown in screenshots so far, the pink looks best to my eyes. I also find the endpoint dots Quincy suggested help set the aerialways apart from other liner features. Something like that seems like a good idea.

The low zoom screenshots with a single line rather than a double were looking more chairlift-like to me. I wasn't sure why until I went looking at ski resort trail maps and remembered that they generally just use a single line. Maybe a single line would work well at higher zoom levels too?

image
image
image
image
image

Or maybe there are other types of maps that commonly show aerial lifts as double lines?

@claysmalley
Copy link
Member Author

Of the three colors shown in screenshots so far, the pink looks best to my eyes.

There seems to be some conflicting opinions on the color. I do like the purple, though I suspect whatever color we use here is likely to become the public transit color. Purple would make train stations and bus stops hard to find within airports.

I also find the endpoint dots Quincy suggested help set the aerialways apart from other liner features.

Aerialways always start and end at stations, which are POIs that I intend to implement separately. #692

The low zoom screenshots with a single line rather than a double were looking more chairlift-like to me. I wasn't sure why until I went looking at ski resort trail maps and remembered that they generally just use a single line. Maybe a single line would work well at higher zoom levels too?

Cables are typically 15-20 feet apart in real life. There aren't many high-zoom examples of aerialways on maps, but at a zoom level where indoor features could potentially show up, it looks clunky to me if this gap isn't present. I could probably adjust the threshold to a higher zoom level, though.

Screenshot from 2023-02-07 22-24-07
Screenshot from 2023-02-06 13-26-03

@1ec5
Copy link
Member

1ec5 commented Feb 14, 2023

Regarding the color, I think the bubblegum pink or the red has a certain flair that fits with the Pop Art labeling. Makes it feel sportier. But a more muted purple is fine too. The important thing is that no one would mistake it for a kind of road,1 and I think purple accomplishes that.

Footnotes

  1. Ironically, if we had chosen black or gray for runways, as many print maps do, we probably could’ve gotten away with making aerialways the same color. Readers wouldn’t have as much of an expectation that the color indicates the kind of conveyance.

@1ec5
Copy link
Member

1ec5 commented Feb 14, 2023

By the way, the screenshot in #755 (comment) seems to be showing an aerialway name of the format Line: Terminus ↔ Terminus, which is a controversial part of the PTv2 tagging scheme that places non-name data inside name. Is this a common occurrence, and are we expected to hide names used in this manner?

@claysmalley
Copy link
Member Author

By the way, the screenshot in #755 (comment) seems to be showing an aerialway name of the format Line: Terminus ↔ Terminus, which is a controversial part of the PTv2 tagging scheme that places non-name data inside name. Is this a common occurrence, and are we expected to hide names used in this manner?

I haven't seen that outside of Bolivia. I agree that the termini shouldn't be in the name, but that is a tagging issue for local communities to solve. I wouldn't bother with writing extra code to hide names that conform to suspicious PTv2 tagging.

@ZeLonewolf
Copy link
Member

While red would be great on a ski-specific map, I think having purple be the general-purpose transit color makes sense as visual language. And the doubling at high zoom is a nice touch.

The one thing that stood out to me is that the font descents obscure the lines a bit. Are we okay with that or should the text be offset a bit more?

image

@quincylvania quincylvania mentioned this pull request Feb 15, 2023
@claysmalley
Copy link
Member Author

I added a text offset, though it seems to be offsetting in the opposite direction half the time and I'm not sure why:

Screenshot from 2023-02-26 10-34-22

@claysmalley
Copy link
Member Author

claysmalley commented Mar 6, 2023

One last change: magenta. Because if we're gonna need to repurpose this color for public transit, it can't be the airport purple, since airports aren't necessarily passenger transport facilities. Also, I'm gay for transit 🏳️‍🌈🚡

I think this is as good as it's going to get for now. Tail work:

  • aerialway stations (part of Points of Interest #692)
  • aerialway pylons not present in tiles
  • text-offset is applied in the wrong direction on lines that appear right-to-left when line-gap-width > 0. Am I doing something wrong or is this a Maplibre bug?

Screenshot from 2023-03-05 21-30-38

Screenshot from 2023-03-05 21-48-20

Screenshot from 2023-03-05 21-49-12

Screenshot from 2023-03-05 21-50-38

Screenshot from 2023-03-05 21-52-17

@ZeLonewolf
Copy link
Member

Regarding:

text-offset is applied in the wrong direction on lines that appear right-to-left when line-gap-width > 0. Am I doing something wrong or is this a Maplibre bug?

Can you summarize what's different between aerialway rendering and road rendering that would cause this bug to appear in one case and not the other?

@claysmalley
Copy link
Member Author

text-offset is defined in src/layer/transportation_label.js, and it only applies to aerialways so far. When the direction of a line as mapped on OSM goes right-to-left across the screen, the offset seems to work in the opposite direction as expected.

line-gap-width may be a red herring, as it's only present in src/layer/aerialway.js.

@1ec5
Copy link
Member

1ec5 commented Mar 7, 2023

Here’s one of those test areas above:

text-keep-upright: true

Setting text-keep-upright to false illustrates the problem:

text-keep-upright: false

Essentially, we’re expecting text-keep-upright to flip the symbol onto the other side of the line, but all it does is flip the text itself around the text-anchor, which is currently set to bottom.

One workaround would be to set text-anchor to center, centering the text over just one of the lines:

No text-offset

With a wider knockout, it could do a good job of emphasizing that there are two parallel lines as opposed to a casing.

@1ec5
Copy link
Member

1ec5 commented Mar 7, 2023

Essentially, we’re expecting text-keep-upright to flip the symbol onto the other side of the line, but all it does is flip the text itself around the text-anchor, which is currently set to bottom.

Moreover, I think this GL JS behavior is pretty reasonable. For example, the boundary edge labels in #52 shouldn’t flip across the line based on text-offset, because that would overlap with the other side’s label. If we wanted a different behavior in the renderer, it would have to be some other text-anchor value that’s lower than bottom.

@claysmalley
Copy link
Member Author

Setting text-anchor to center and increasing the offset seems to have the effect we're looking for:

Screenshot from 2023-03-07 16-51-00

Screenshot from 2023-03-07 16-53-26

Screenshot from 2023-03-07 16-57-32

Copy link
Member

@ZeLonewolf ZeLonewolf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. I think it's time to get this change in the map!

@claysmalley claysmalley merged commit 45456a9 into main Mar 7, 2023
@claysmalley claysmalley deleted the clay-aerialway branch March 7, 2023 22:38
@wmisener wmisener mentioned this pull request Mar 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Aerialways
8 participants