gravitystorm / openstreetmap-carto

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

Bus stops should have priority over shelters #2431

Open Robot8A opened 7 years ago

Robot8A commented 7 years ago

Hi, I've noticed that when you map the shelter next to a bus stop, on the render the shelter icon always overrides the bus stop icon. I consider that the bus stop icon is significantly more important that the shelter one for the general public. An example can be found here: http://www.openstreetmap.org/?mlat=41.66628&mlon=-0.88670#map=18/41.66629/-0.88670

You could do that when a shelter is placed next to a bus stop (or when a shelter that has the tag shelter_type=public_transport) the bus icon is displayed before the shelter icon. Thanks in advance.

HolgerJeromin commented 7 years ago

Another tagging options is the attribute shelter on the bus_stop. But a detailed mapping should be possible, yes.

manfredbrandl commented 7 years ago

@HolgerJeromin here the shelter is mapped as an area and the bus_stop is mapped as a point. Do you have an idea how to combine these two features?

Robot8A commented 7 years ago

@manfredbrandl There is a stop_area relation: https://www.openstreetmap.org/relation/5552716

Robot8A commented 7 years ago

Here you have another example: https://www.openstreetmap.org/relation/5519522

Robot8A commented 7 years ago

Key:public_transport in the wiki: https://wiki.openstreetmap.org/wiki/Tag:public_transport%3Dstop_area#Members

kocio-pl commented 6 years ago

Is anybody ready to add the code which shows bus shelters on z19+? I'm willing to help if somebody likes to try.

Tomasz-W commented 6 years ago

related to #964

DerDings commented 3 years ago

Just an idea, I don't know if this is possible:

Currently blue is used for public transport features, but grey for shelters. Since the shelters mentioned here are also public transport features, I think we should make them blue if they are tagged public_transport=yes, otherwise keep the current colour. In many places, like this example, grafik this will look very similar to bus stop squares.

As an optional, second step, the shelters rendering importance may be reduced. Since bus stop shelters and other shelters are different things now, this probably can be done easily for the bus stop shelters only, without modifying the other shelter types. Thus, its less likely that this change has unwanted results elsewhere.

masterofnoroad commented 3 years ago

I suppose someone thought about it before, but maybe it would be better to just make special version of bus stop icon with shelter? Something like OSMAnd is doing. It could also render in similar way public transport shelters.

When I'm on the road cycling and sometimes I need to find shelter from the rain fast, I prefer to have shelter icon rendered but bus stop icon is more important generally :D

142004926_264999038356534_7080675383208415647_n

DerDings commented 3 years ago

I suppose someone thought about it before, but maybe it would be better to just make special version of bus stop icon with shelter? Something like OSMAnd is doing. It could also render in similar way public transport shelters.

When I'm on the road cycling and sometimes I need to find shelter from the rain fast, I prefer to have shelter icon rendered but bus stop icon is more important generally :D

[image]

Are you talking about one object tagged as highway=bus_stop shelter =yes?

3124 is about this case.

If there are two separate objects, one highway=bus_stop and one amenity=shelter shelter_type=public transport it would truly be useful to show that as you suggested, but I think it is not efficiently possible combining those two features during rendering.

masterofnoroad commented 3 years ago

Yes, indeed I was thinking highway=bus_stop shelter =yes. Its a pity that it was not introduced.

If combining two separate objects is hard to implement, it would be maybe better to come back to #3124 solution and then prioritize bus stop with shelter icon over amenity=shelter? When Im reading the discussion I understand it died on lack of good readable and similar to existing bus stop icon. So maybe it would be better to just work little bit more on the design and not drop the idea entirely? It doesnt need to be different icon, it just need to be existing bus stop icon + small roof on top of it as I showed in OSMand.

jajajaneeneenee commented 3 years ago

Some notes to the first message in this issue of 2016:

Hi, I've noticed that when you map the shelter next to a bus stop, on the render the shelter icon always overrides the bus stop icon. I consider that the bus stop icon is significantly more important that the shelter one for the general public. An example can be found here: http://www.openstreetmap.org/?mlat=41.66628&mlon=-0.88670#map=18/41.66629/-0.88670

@Robot8A: The bus_stop icon is shown in this example in zoom level 19. Has it been moved further away from the shelter since your posting in 2016? Or did you want to see it also in zoom level 18 (or lower)? Or did anything change in the style since 2016?

I have an example from my city where the bus_stop icon is not even shown in zoom level 19: https://www.openstreetmap.org/node/273533270. (The distance from the node to the shelter is only 0.6 m – its position is perhaps not perfectly correct, because normally it's a distance of at least 1 or 2 m – but perhaps it's a good example ...).

You could do that when a shelter is placed next to a bus stop (or when a shelter that has the tag shelter_type=public_transport) the bus icon is displayed before the shelter icon. Thanks in advance.

I am not very familiar with the restrictions of the rendering in openstreet map carto and its style, and I am not 100% sure what you meant by "the bus icon is displayed before the shelter icon" and I wanted to ask a maybe stupid question (perhaps this is also what you meant with "before"?):

Why can the bus_stop icon not be rendered over the shelter area (and its icon), and if it's very near to the shelter, also with an overlapping? This also happens with other icons which are very near, e.g. natural=tree and tourism=information/information=guidepost oder natural=tree and historic=memorial and surely others. Is this a problem for the styling?

It would look like this – and wouldn't that be ok? (And easy to implement in the style? – I don't know ... sorry.) And much better than no bus stop icon at all?

bus_stop_and_shelter_72dpi (Some variants depending on the position of the bus_stop node; and this shelter has a size of 3 x 1.5 m).

And if shelters with shelter_type=public_transport would be painted in a blue (cyan) colour – the same as the bus icon – it would look like this:

bus_stop_and_shelter_blue_icon_blue_72dpi

Or like this (if the shelter icon keeps its grey colour):

bus_stop_and_shelter_blue_icon_grey_72dpi

But the visually best variant is probably the first ... And also with regard to the importance of the two objects – because the bus_stop icon is in the foreground visually.

imagico commented 3 years ago

Why can the bus_stop icon not be rendered over the shelter area (and its icon), and if it's very near to the shelter, also with an overlapping?

Because Mapnik collision handling is too primitive for that. You can either place a symbol adhering to collision detection (i.e. not place it if it would collide) or place it ignoring collisions. But you can't place it allowing collisions with some other symbols but not with others. I quickly looked into that in context of drinking water sources - see here. I think the only way you could do what you indicate would be to generate aggregate svg symbols outside of mapnik.

Independent of these technical issues your idea would only work if you implement some sort of displacement to avoid cases where the bus stop and the shelter symbol would be placed directly on top of each other which would not be readable.

DerDings commented 3 years ago

bus_stop_and_shelter_72dpi (Some variants depending on the position of the bus_stop node; and this shelter has a size of 3 x 1.5 m).

And if shelters with shelter_type=public_transport would be painted in a blue (cyan) colour – the same as the bus icon – it would look like this:

bus_stop_and_shelter_blue_icon_blue_72dpi

Or like this (if the shelter icon keeps its grey colour):

bus_stop_and_shelter_blue_icon_grey_72dpi

The idea was to only make the icon blue.

The area of the shelter currently isn't rendered at all. The brown area in your example is the rendering of building=*. It is only because someone added building=* to that shelter. In my opinion, the building's colour shouldn't be altered.

Blue shelter icon + blue bus stop icon would look acceptable in my opinon, if the current minimal collison distance is not altered.

bgo-eiu commented 2 years ago

I agree with this

BertMule commented 1 year ago

Please change this. I ran into exactly the same problem, and wanted to report it. This issue is already 7 years old.

Shelters are hiding the bus-stops, of which only the name is visible (if any). If one is looking unsuspectedly for a bus-stop, one won't find it.

Her is a cluster of 3 stops plus shelters, none is visible (slightly depending on zoom level). https://www.openstreetmap.org/#map=19/51.44462/4.92706

kaneap commented 1 year ago

Would it be an acceptable solution to simply render bus stops with higher priority than other amenity points? I was able to achieve this fairly easily in my fork of the repo. Before: before bus After: after bus

imagico commented 1 year ago

Would it be an acceptable solution to simply render bus stops with higher priority than other amenity points? I was able to achieve this fairly easily in my fork of the repo.

Changes to amenity-points that make it - fully or partially - adhere to prioritization by starting zoom level would be seen favorably. Specifically prioritizing bus stops over amenity=shelter (same starting zoom level) would be fine as well (but not really feasible without giving everything else a consistent order of priority as well).

Prioritizing bus stops over everything else, however, would not be seen favorably because it would cause more problems than it solves.

See #3880, #4676.

k-yle commented 11 months ago

It would be nice to apply the same logic to ferry terminals as well as bus stops.

Example: the transit shelter obscures the ⚓ icon image

Elefant-aus-Wuppertal commented 7 months ago

Regardless of this, I could also imagine that amenity=shelter with shelter_type=public_transport should only be rendered in the last two zoom levels.

dch0ph commented 7 months ago

[Proposal to postpone rendering of public transport shelters continued on #3483, which is more directly connected.]

Yes, I've been testing the above and it works nicely. A public transport shelter is something small that you take advantage of, rather than a shelter you head to from a distance. It does clutter the map to render these from Z15.

Happy to submit a PR if general enthusiasm.

imagico commented 7 months ago

Please note this issue is about the relative prioritization of shelters and bus stops. Changing the starting zoom level of shelter_type=public_transport is covered in #3483, see also #3124 and #4317.

dch0ph commented 7 months ago

Thanks for the links. Suggest consolidating discussion on #3483, since this seems the route with the most overall support.