gravitystorm / openstreetmap-carto

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

Render public transport platforms and stops (new scheme, relation-free implementation for now) #311

Closed stefanct closed 4 years ago

stefanct commented 10 years ago

Since supporting the new/alternative tagging scheme of public_transport=* completely is not trivial due to the heavy use of relations, let's start with some easy bits: https://github.com/gravitystorm/openstreetmap-carto/issues/134?source=cc#issuecomment-23501892

That is: rendering of public_transport=stop_position (like railway=tram_stop i.e. a small blue square, or like highway=bus_stop (if bus=yes but no other transports are tagged) and public_transport=platform (like railway=platform for areas and ways, and maybe shelters for nodes with shelter=yes?).

smehrer commented 10 years ago

+1

AndiG88 commented 10 years ago

Is just found this. Are there any plans to make this happen?

wolfbert commented 10 years ago

I support this.

pnorman commented 10 years ago

311 has some tag suggestions.

sabas commented 10 years ago

public_transport=platform should be rendered as an area. Osmose reports as an error the area=yes on every platform and when someone fix it the renderer draws the platform as a closed area. cc: @frodrigo

PolyglotOpenstreetmap commented 10 years ago

I'm sticking my head in the sand and give up in despair. To please JOSM's validator I'll tag bus stops with public_transport=platform, bus=yes and to get them rendered I'll double tag them with highway=bus_stop.

All 70000 of them for one country alone.

I like the new scheme for public transport. It makes sense to me, but apparently not for the people who work on the rendering side of things. I started out holding my breath and tagging simply highway=bus_stop, but then JOSM does not assign roles automatically and the valdidator complains, so since a few months I'm filling the DB with redundant data. So be it.

Jo

matthijsmelissen commented 10 years ago

We have around 400 open bugs, and only a handful of people working on the code. It might take some time before things get fixed, but that doesn't mean we believe things 'don't make sense'. If you would like to help speed things up, feel free to write a pull request.

dieterdreist commented 10 years ago

2014-06-19 19:29 GMT+02:00 PolyglotOpenstreetmap notifications@github.com:

I like the new scheme for public transport. It makes sense to me,

It solves some problems and defines complex mapping schemes which allow to insert highly detailed information, agreed. On the other hand in the case of bus stops it doesn't improve the situation IMHO, rather it requires 2 tags what can be expressed without information loss with one in the old scheme.

pnorman commented 10 years ago

:-1: to this. Encouraging a less-common way of tagging bus stops only hurts everyone trying to use the data.

PolyglotOpenstreetmap commented 10 years ago

We can just keep tagging them redundantly then. Everybody happy, except maybe the people who backup the data or need to transfer the lot. But that's what we have data compression for, I guess.

Now I need to go find that one bus stop where I only put public_transport=platform, bus=yes as a test case and add highway=bus_stop to it after all.

I had hoped that moving to the new rendering scheme would resolve this, but apparently not. Maybe it's a good idea that somebody amends the wiki page about the 'new' scheme for tagging public transport then to indicate that you can try to use it all you want, but nobody cares if you do. And if you try to use exclusively the 'new and improved' scheme, your data won't be rendered.

Cheers,

Jo

matthijsmelissen commented 10 years ago

@gravitystorm's comment in the substation discussion probably also applies here:

But changing tags has much larger consequences than changing whitespace, or changing a variable name. It is, more or less, our external interface to OpenStreetMap data, and have a look to see how much ABI breakage in the kernel is frowned apon. If we change a tag, then every system that uses that tag needs changing too. Every installation of openstreetmap-carto needs updating. Every customised fork of openstreetmap-carto needs updating. Every stylesheet that uses the original tag needs updating, and every cartographer needs to find the time to investigate and make the changes. And every server that hosts any copy of those stylesheets needs updating. And every customer support request from a user of a map using OpenStreetMap data where their maps are missing some features needs investigating, and every manager needs to figure out where all these man hours are going.

sb12 commented 10 years ago

I like the public_transport scheme and use it a lot. It's great for detailed tagging of platforms, bus stops and stations, and it looks also great on special purpose maps (e.g. http://www.öpnvkarte.de/).

BUT: It's a night mare for general purpose renderers where a single icon of a bus in the centre of the bus stop would be sufficient. There are a lot of questions and issues coming up:

BTW: Do you know any other renderer that supports the public_transport scheme? How do they solve these issues?

It's also difficult to handle for a beginner who just wants to add the bus stop in his town or when you don't know exactly where the platform or stop position is.

And I think this complexity is the reason, why the public_transport is not accepted as well as you want to.

I don't understand why the complex public_transport scheme needs to replace simple tags like railway=station and highway=bus_stop. Actually I can't find any place in the wiki where it is recommended to not use highway=bus_stop. In my opinion public_transport should extend but not replace highway=bus_stop.

matthijsmelissen commented 10 years ago

Does the public transport layer handle the new scheme?

AndiG88 commented 10 years ago

Where do we want to render the symbol (on the platform or on the stop position or in the middle of the stop_area)?

You have the same issue with highway=bus_stop icon. 10% are actually placed on the street and not at the stop sign. With the public_transport scheme you at least know where it ends up.

How do we tell if it's a bus stop, a tram stop or a train stop?

How do you do it now? railway=tram_stop + buy=yes is basically ignored. http://www.openstreetmap.org/?mlat=48.36712&mlon=10.89771#map=19/48.36712/10.89771 is just as much a tram stop as it is a bus stop. Maybe we simply should not have a bus icon, but rather something simple like you can see there or some kind of general stop icon, in Germany we for example have this:

We need many additional keys in the database (public_transport, bus, train, tram, light_rail etc.)

We need them just as much now. But as pointed out above we simply chose to ignore combined stops.

It's also difficult to handle for a beginner who just wants to add the bus stop in his town or when you don't know exactly where the platform or stop position is.

Doesn't the platform exactly match the bus_stop?

In my opinion public_transport should extend but not replace highway=bus_stop.

What's the difference between a highway=bus_stop extended with public_transport compared to a stop just tagged with the public_transport schema - apart from the highway=bus_stop (which then would be 1:1: public_transport_platform)?

matkoniecz commented 10 years ago

see also https://trac.openstreetmap.org/ticket/4381 and https://trac.openstreetmap.org/ticket/2798

kocio-pl commented 10 years ago

I agree with AndiG88, but don't know how to make nice quotes here. =} I think highway=bus_stop should be eventually fully replaced (some sunny day), just ask yourself: what type of highway is bus stop?... It was just a dirty hack, probably because there was no evidence we need something more deliberate and consistent at that time.

Now it's a shame to not use the new, properly designed tagging scheme, at least in the main and public transport rendering styles. And I don't mean "burn all the highway=bus_stop!", but for now just promote corresponding public_transport=platform+bus=yes to be the first class citizen in rendering (plus others, as proposed in https://trac.openstreetmap.org/ticket/2798). The code for it is probably straight, but if I would try to write it and test, I want to know it won't be ignored. Is it a fair proposition, or something else is needed too?

dieterdreist commented 10 years ago

Am 09/lug/2014 um 02:22 schrieb kocio-pl notifications@github.com:

what type of highway is bus stop?... It was just a dirty hack, probably because there was no evidence we need something more deliberate and consistent at that time.

I don't see a problem with the highway namespace. For one these are generally tagged on nodes, but even if there was a way (for the "platform") highway = bus_stop this would IMHO be a valid representation for what is actually on the ground and how people would refer to this stretch of asphalt in the real world

matthijsmelissen commented 10 years ago

I think waiting areas for buses are too specific to render as area on a general purpose map, especially if these areas consist of not much more than one painted line on the pavement.

Is there an easy way to distinguish between bus and train platforms?

AndiG88 commented 10 years ago

I think waiting areas for buses are too specific to render as area on a general purpose map, especially if these areas consist of not much more than one painted line on the pavement.

Most of them are highway=pedestrian anyway. Also thisissue is not really about that. It's more about having some kind of icon for a public_transport= stop.

dieterdreist commented 10 years ago

Am 21/lug/2014 um 01:47 schrieb math1985 notifications@github.com:

I think waiting areas for buses are too specific to render as area on a general purpose map

when it matters the mapper could add highway =pedestrian and area=yes (the latter might be implicit)

matkoniecz commented 10 years ago

if bus=yes but no other transports are tagged

public_transport tag is available, but bus is not. So it is impossible to check whatever element is a bus stop. To replace current style, without losing ability do display bus/tram/etc stops in a different ways database change is necessary. (also @gileri)

ximex commented 8 years ago

If i see it right, public_transport=platform isn't rendered yet!? This should be possible without the database reimport. Or is this here an other problem: https://www.openstreetmap.org/relation/5988332

here should be the right point in the code i think: https://github.com/gravitystorm/openstreetmap-carto/blob/master/roads.mss#L2015 first the definition of public_transport_platform is required, right?

PolyglotOpenstreetmap commented 8 years ago

The problem is the unwillingness to also add bus/tram/metro/train and whatnot to the rendering DB. I don't see this change happen in the nearby future, it hasn't changed for the half decade we're already asking for this, so you'll have to double tag them as railway=platform as well, even though there are no rails on those platforms. You might consider dropping the 'new' scheme public_transport tags, but then JOSM will not add roles properly if you add them to v2 route relations. So double tagging it is and never mind the waste of bits and bytes. Jo

kocio-pl commented 8 years ago

If i see it right, public_transport=platform isn't rendered yet!? This should be possible without the database reimport.

I guess not, since the public_transport=* key is currently absent in the rendering database.

pnorman commented 8 years ago

I guess not, since the public_transport=* key is currently absent in the rendering database.

public_transport is currently in the rendering database.

ximex commented 8 years ago

so it should be possible to add it to render!?

Rondom commented 8 years ago

As far as I know (should be further up in this issue) keys such as bus, tram etc. are missing

ximex commented 8 years ago

as i see the rendering of a platform is rendered the same for bus/train/... so it shouldn't be required

PolyglotOpenstreetmap commented 8 years ago

Those public_transport=platform can also be used on nodes and there a different icon is used for bus stops and tram stops.

ximex commented 8 years ago

i thought the icon comes from highway=bus_stop and not from public_transport=platform/bus=yes and we could only render an area (and way) of public_transport=platform

matkoniecz commented 8 years ago

Yes, public_transport key is available, but bus key is not. So it is impossible to check whatever element is a bus stop. To replace current style, without losing ability do display bus/tram/etc stops in a different ways database change is necessary.

deubeuliou commented 8 years ago

Hi,

(please note that I'm new to OSM)

I got here because I recently tried to do some janitorial work on a bus line, including using the PTv2 scheme; after doing that, it was pointed out to me that the bus stops I worked on disappeared from the map... It felt like I was breaking something. I do, however, understand how you, maintaining the rendering style, would see the PTv2 scheme decision as not taking rendering concerns into account.

That being said, the way I understand it, there is no need for an additional column in the database. I looked at mapnik and it seems that this issue could be solved by transforming (in the ".style" file) the public_transport=platform + bus=yes combination into highway=bus_stop.

Am I missing something? Maybe this only works with the Lua style files, which you are not using... Could it be worth using them? It can probably solve other future issues.

dieterdreist commented 8 years ago

sent from a phone

Il giorno 25 mag 2016, alle ore 23:41, David Wagner notifications@github.com ha scritto:

I got here because I recently tried to do some janitorial work on a bus line, including using the PTv2 scheme; after doing that, it was pointed out to me that the bus stops I worked on disappeared from the map

Actually you don't have to remove the highway=bus_stop tag to add ptv2 tags. You should be really careful changing tags, especially if you are new, because there isn't- unfortunately- complete documentation about the tags, and the available docu has sometimes bugs, e.g. the wiki.

pnorman commented 8 years ago

Am I missing something? Maybe this only works with the Lua style files, which you are not using... Could it be worth using them? It can probably solve other future issues.

A change to use lua (or changing existing lua transforms) would be an osm2pgsql style change, just like adding columns.

jojo4u commented 8 years ago

After deliberating about the problems of public_transport=platform as a physical feature (platform) and logical feature (waiting area) I came up with a proposal: https://wiki.openstreetmap.org/wiki/Proposed_features/Public_Transport_Platform_no_Infrastructure

Before RFCing it I'd like to ask one question to osm2pgsql savvy:

a) Consider a linear way tagged with

After database reload, with the possibilities of this style: Could the way rendered like a platform (based on highway=platform) and with a bus symbol in the centre (based on the other two tags)?

b) Consider a closed way tagged with

Could the area rendered like a platform (based on highway=platform, area=yes) with a bus symbol in the centre (based on the two remaining tags)?

jojo4u commented 7 years ago

My question above still remains open and database reload comes closer and closer :)

nebulon42 commented 7 years ago

My answer to your questions would be that both could be rendered as a platform based on public_transport=platform and bus=yes. The icon could be placed along the linear feature, but you would get repetitions depending on the length of the way. It would be very hard if not impossible to ensure that there is only one icon of any length of line. The icon could be easily placed in the interior of the closed way.

pantierra commented 6 years ago

Big 👍 for this.

Most people I know (including myself) who map public transport in OpenStreetMap use PTv2 (especially if you want to do something with the data and not exclusively look at OSM-carto) and attach highway=bus_stop to the point where they want it to be rendered in OSM-carto. This has been a practice for years now and unfortunately has led to two parallel existing data schemes. While it is worth mentioning that most of today's disagreements on how to map public transport in OSM is about PTv1 (like if the stop_position or the platform should be tagged with highway=bus_stop, etc..). IMHO PTv1 only makes sense, still, because of this open ticket, all other active initiatives in OSM, which I know, dealing with transport want and rely on PTv2.

kocio-pl commented 6 years ago

What we lack now is somebody who would make the proper code and test it. Could you try to do this?

aceman444 commented 5 years ago

Yes, this should be done.

matkoniecz commented 5 years ago

I am not sure whatever it should be done. It's it really desirable to encourage not tagging for example standard highway=bus_stop on bus stops?

pnorman commented 5 years ago

It's it really desirable to encourage not tagging for example standard highway=bus_stop on bus stops?

It's not desirable to encourage people not to tag it.

PolyglotOpenstreetmap commented 5 years ago

I've tried to tag stops with just public_transport=platform/bus=yes (on a node). Gave up on that.

More recently I tried to tag the bus stop nodes with just highway=bus_stop. That doesn't work either anymore. JOSM complains if I put a platform role on them in the route relations and it doesn't add the platform role automatically when adding them to the route relations.

So I guess we're stuck with tagging the stop nodes as

highway=bus_stop public_transport=platform bus=yes

or railway=tram_stop public_transport=platform tram=yes

I guess it doesn't really matter.

Polyglot

On Sun, Dec 23, 2018 at 2:00 AM Paul Norman notifications@github.com wrote:

It's it really desirable to encourage not tagging for example standard highway=bus_stop on bus stops?

It's not desirable to encourage people not to tag it.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/gravitystorm/openstreetmap-carto/issues/311#issuecomment-449607121, or mute the thread https://github.com/notifications/unsubscribe-auth/ABYcVXUMajGI52WkVlj9ID2qcupc_FBmks5u7tXKgaJpZM4BZLp9 .

matkoniecz commented 5 years ago

Given failure of "new" public transport using scheme to provide tagging scheme that would be more useful than "old" tagging scheme and that it is desirable to keep tagging with highway=bus_stop (and other simple tags) and

It's not desirable to encourage people not to tag it.

I am planning to close this feature request as declined. If someone thinks that more detailed explanation would be useful - let me know and I will explain in more detail.

gileri commented 5 years ago

I am planning to close this feature request as declined. If someone thinks that more detailed explanation would be useful - let me know and I will explain in more detail.

I, like multiple people in this thread, support and use PTv2 for reasons explained on this issue and other resources. I would still like to see PTv2 rendered, but understand that there is still work to do for that to happen.

Please do not close this issue. Even if it was not yet implemented/tested/demoed (no blame thrown here), I feel that this change is something doable, positive, and realistic.

mkyral commented 5 years ago

I's not used because it is not visible. And it is not rendered because it is not used :-(

PolyglotOpenstreetmap commented 5 years ago

Actually, it IS used, both tagging systems are used in combination. One to get the stops to render, the other because it's supposedly more expressive. Unfortunately, it did not solve the problem it was supposed to solve. Instead it even led to people adding details on more than a single OSM object for the same stop.

In some places you'll find a stop_position node in combination with a platform way, in others you'll find platform nodes and in yet other places even all 3 of them, sometimes with the stop's details replicated among them. A maintenance nightmare, but alas.

And, of course, there are also sill places where the stops are mapped next to the highways, with just a highway=bus_stop tag on them. I tried to to back to that way of tagging. It's not that it doesn't work, it does, but somehow I got used to tagging public_transport=platform/bus=yes additionally on those stop nodes.

As far as I'm concerned the most important aspect, is to not have a stop's details on more than a single object per stop. If we could agree to use a node for this object, it would be possible to declare that

highway=bus_stop

is equivalent to

public_transport=platform bus=yes

And thus start rendering that combination the same as highway=bus_stop.

Then you wait 5 years and you check whether people start replacing the use of highway=bus_stop with that combination.

Of course, it may be that this won't work, because there will also be mappers who say:

Hey, we use public_transport=stop_position as the main object

That's where we want to put railway=tram_stop and tram=yes.

Oh well,

Polyglot

On Wed, Dec 26, 2018 at 10:12 PM Marián Kyral notifications@github.com wrote:

I's not used because it is not visible. And it is not rendered because it is not used :-(

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/gravitystorm/openstreetmap-carto/issues/311#issuecomment-450027025, or mute the thread https://github.com/notifications/unsubscribe-auth/ABYcVWVDb25ybopJczl8yS72BhwViHneks5u8-Y7gaJpZM4BZLp9 .

matkoniecz commented 5 years ago

Ok, I will write in more detail. But in short: I consider

highway=bus_stop is equivalent to public_transport=platform bus=yes And thus start rendering that combination the same as highway=bus_stop.

to be undesirable as I consider using multiple tags where one sufficies and is already widely used and supported to be undesirable.

kocio-pl commented 5 years ago

There are uses that are far beyond bus and tram scenario, so it makes sense to render it:

Use public_transport=platform to identify the places where passengers board or alight from public transport of any type, including boarding facilities at airports, bus stations, ports, railway stations, as well as for ski lifts and at roadside bus stops, taxi ranks.

https://wiki.openstreetmap.org/wiki/Tag:public_transport%3Dplatform

kocio-pl commented 5 years ago

Rough estimation - currently 72.83% has highway=bus_stop (80.77% has highway=*) and 6.05% has railway=*, which means that ~5% (~60k - well beyond 5k limit) is not related to bus, tram or railway, so it is a unique type of objects we don't render yet:

https://taginfo.openstreetmap.org/tags/?key=public_transport&value=platform#combinations