What's in a name?

by multimob — written on 2022-04-13


Naming a bus stop correctly can be tricky.

Simple case

In the most simple case, the operator provides the name of the stop. This can be used as name in OSM. End of the story.

In many cases, this is not so simple.

When a name contains a mistake

An obvious mistake must be corrected, this is part of OSM rules. If the operator made a typo and wrote "Franklin Rosevelt" and if you are sure that they meant Franklin Roosevelt (the US President), you must change this. We must also fix accented characters or special characters which operators frequently overlook: Ecole should become École. Also, TEC provides town names as 7-bit ASCII all uppercase characters: NEUFCHATEAU must become Neufchâteau, BELOEIL should become Belœil.

But then we have a problem, because name does not match what the operator provides.

This is where an extra tag is used. For De Lijn we use name:De_Lijn. For TEC we use name:TEC. This tag will store the name of the stop exactly as the operator says. If you write scripts trying to match OSM data against what the operator provides, you should test name first; if it does not match, then test against this other tag. Only then you can report an error.

When the name includes extra information

A common case: a large bus station in front of a railway station, with a dozen stops, each with a dedicated platform. For convenience, the operator assigns a number to each platform. Each bus stop gets its own ref code but the name indicated on official data is not just the name but a compound value concatenating the stop name and the platform, e.g. name=Leuven Station - perron 1, name=Leuven Station - perron 2 and so on.

If we reproduce the entire text string on the map, it will make the map fairly ugly and would prevent some renderers like the popular Transport Layer from identifying them as a single stop. As a consequence, ordinary stops on a small road would be correctly joined together but all the stops inside the same bus station would not.

This is where name:De_Lijn comes to rescue. Exactly like in the previous situation (name containing a mistake) we can normally set name=Leuven Station and name:De_Lijn=Leuven Station - perron 1, which will validate perfectly. The Transport Layer also has a feature to render platform numbers without requiring this to be inside the name tag.

Multiple operators using the same stop

Here is another interesting case. It happens near country or region borders.

A bus stop sign in Brussels with 3 operators, each posting a sign with a different name

The bus stop on this image has 3 stop poles because 3 different operators use it. Yet, this is a single stop, which should be one single node in OSM.

Some tags must be joined: operator and network tags should use compound values separated by the semicolon character.

Here is the recommended approach for the name:

Multilingual area

Yes, we map in Belgium and there are 3 languages here. Not every part is bilingual but some are. An additional difficulty is that there is a sort of grey zone as to whether the so-called facilities municipalities are bilingual or monolingual. We usually try to go with the flow: if street names and other public service objects are written in two languages we will do the same for bus stops; if everything is written in one language we’d better stick with bus stops in one language.

If a stop name has to be written in two languages, you must determine which language comes first. Supposing the order is FR then NL, it requires adding 3 tags: translations in every language + compound name as the main name. In Belgium, all multilingual names use the " - " text string as a separator.

How TEC deals with multilingual names

TEC provides a really strange name and stops in bilingual territories look like this in GTFS data: "FLOBECQ/VLOESBERG Briqueterie/Steenbakkerij". The structure is therefore: "TOWN(fr)/TOWN(nl) name(fr)/name(nl)".

Such a name should never be written like this on a good-looking map. We must always break it down in write names correctly.

This will become: name=Flobecq Briqueterie - Vloesberg Steenbakkerij. Additional tags per language are required, hence: name:fr=Flobecq Briqueterie and name:nl=Vloesberg Steenbakkerij.

Finally, name:TEC=Flobecq/Vloesberg Briqueterie/Steenbakkerij can be added for those who really care to match OSM data with GTFS source data. We consider that the town name can be written in normal case, it won't matter much if we use ALL-CAPS. If you want to validate text string, make sure to do a case-insensitive search.


Permalink: https://blog.multimob.be/zzs14hulvb.htm

Back to the index

Screenshots with maps are © OpenStreetMap contributors