gravitystorm / openstreetmap-carto

A general-purpose OpenStreetMap mapnik style, in CartoCSS
Other
1.53k stars 817 forks source link

Render railway=traverser the same as railway=turntable #4377

Open claysmalley opened 3 years ago

claysmalley commented 3 years ago

A traverser or transfer table is a short segment of track that moves side-to-side, allowing vehicles to switch between parallel tracks. These are similar to turntables, where the short segment of track instead rotates around a central point. Traversers are mapped as a rectangular area.

Currently, railway=traverser does not render. There are two in this screenshot, one north and one south of the parallel track segments that run through the two buildings:

Screenshot from 2021-04-18 19-46-37

https://www.openstreetmap.org/#map=18/39.05640/-95.66088

Here is how railway=turntable renders:

Screenshot from 2021-04-18 20-01-55

https://www.openstreetmap.org/#map=18/41.61315/-87.35308

I suggest rendering railway=traverser the same as railway=turntable, considering they serve similar functions, and they can be visually distinguished by the shape of the area (rectangular vs. circular).

imagico commented 3 years ago

We don't render railway=turntable, what you see in the second case is the rendering of barrier=retaining_wall.

Given the poor mapping semantics of either of these tags (no clear convention on how these represent the connectivity function between adjacent rails) i don't think we should render either of these at this time.

claysmalley commented 3 years ago

We don't render railway=turntable, what you see in the second case is the rendering of barrier=retaining_wall.

Well that's weird. Could you explain to me what is being rendered in this case?

Screenshot from 2021-04-19 12-51-39

https://www.openstreetmap.org/way/197979144

no clear convention on how these represent the connectivity function between adjacent rails

Could you clarify what you mean by this? My understanding is that it's visually apparent how these connect adjacent rails (from any track, to any track).

mboeringa commented 3 years ago

Given the poor mapping semantics of either of these tags (no clear convention on how these represent the connectivity function between adjacent rails) i don't think we should render either of these at this time.

Actually, from almost all turntables and traversers I have seen tagged in OSM, it is clear people actually intend them to be rendered as areas, not as part of a routable railway network, so connectivity is not an issue.

In my opinion, turntables and traversers should be moved to area rendering, to show the extend of the feature, which is clearly what most people want to see.

Traversers and one turntable rendered as areas in Copenhagen in very light grey (both also tagged with a barrier=retaining_wall, but this is rendered as separate layer):

afbeelding

imagico commented 3 years ago

Sorry, my bad - it seems that railway=turntable is rendered with a barrier like line signature. This code has not been touched since the early days of this project.

no clear convention on how these represent the connectivity function between adjacent rails

Could you clarify what you mean by this? My understanding is that it's visually apparent how these connect adjacent rails (from any track, to any track).

OSM is not a rendering database meant exclusively for visualization purposes. It is meant to record semantically meaningful data for all kinds of purposes. And as said there does not seem to be a clear convention how either railway=turntable or railway=traverser are meant to do that.

claysmalley commented 3 years ago

Are you saying railway=traverser and railway=turntable are not semantically meaningful? This is baffling to me. They are well-defined features with clear functions and purposes. Do you need more information on what traversers and turntables are, and why people find it important to map them on OSM?

I'm sure every railway mapper would consider them just as semantically meaningful as railway=rail. Trains travel on all of these features. Am I missing something here?

mboeringa commented 3 years ago

Are you saying railway=traverser and railway=turntable are not semantically meaningful? This is baffling to me. They are well-defined features with clear functions and purposes. Do you need more information on what traversers and turntables are, and why people find it important to map them on OSM?

As I wrote in https://github.com/gravitystorm/openstreetmap-carto/issues/4377#issuecomment-822726926, I think the confusion stems from the fact that openstreetmap-carto chose to render (almost) all way objects with railway tag, as linear object, under the assumption that every way tagged with railway=x is supposed to be part of a routable railway network.

Yet, from the personal rendererings I have done of traversers and turntables tagged as ways, it is clear people intend these to be rendered as areas, not line objects. There are even cases, and the Copenhagen image I showed is a clear example of this, where people deliberately add one or more railway=rail/siding/spur/yard tagged way objects on top of the traverser / turntable as tracks, which represent the "routable" network aspect of the traverser / turntable.

If you look carefully at the image I posted, you will notice that the left most traverser has two railway tracks at the top part, and the middle and right traverser and the turntable a single track.

In all of these cases, people added "bridge=yes" as well (https://www.openstreetmap.org/way/92924038#map=17/55.66084/12.55120), to represent the actual moving part of the traverser / turntable.

Not that strange actually to add a bridge tag. I know a nice example of a historic former rotating railway bridge in Amsterdam, now serving as a restaurant, that very much has the same technical layout as a turntable:

afbeelding

imagico commented 3 years ago

Are you saying railway=traverser and railway=turntable are not semantically meaningful?

No, i am saying that the semantics of the use of this tag are poorly defined (both in documentation and in actual use) beyond the level of map painting (the mappers essentially drawing by hand what they want to see rendered in the map rather than semantically documenting the feature in its function). As a result the only thing you can do easily with this data is reproducing directly what the mappers have painted in a primitivism-like fashion. Any more sophisticated interpretation of the actual function of the feature would require fairly complex and error prone reverse engineering of this from the painted geometries (like the pivot point and the diameter of the turntable or the orientation, operating length and width of the traverser and in both cases which nearby/intersecting rails actually connect to the feature and for which it can provide a pass-through connection).

It is not our place as a map style to insist on mappers mapping this in a certain way. But we should be careful in positively communication to mappers that a simple hand drawn polygon outlining the feature without adherence to specific semantic rules and documenting its functional parameters in a non-ambiguous fashion is a good way of mapping this.