Best way to map cross-border checkpoints and customs control


Are there any rules of how to map cross-border checkpoints? What classification for roads to choose?

Here are some examples:


Belarus-Poland (via Brest)

The main differences here:

  1. All roads are mapped as “highway=primary” in the first example, whilst we have only one primary road and multiple “highway=service” roads in the second example.

  2. All roads have names in the first example. And names are based on the purpose of the lane (for buses, trucks, etc.).

My own concerns are:

  1. All roads cannot be mapped as “primary”, because according to wiki “primary” road is a major highway linking large towns, in developed countries normally with 2 lanes.
    So, “highway=service” seems to be the best in my opinion. But what should be in “service” tag?

  2. I like approach with naming of roads by purpose, but these are not official names, so probably we cannot use “name” tag for them. Such tag as “alt_name” would be more appropriate, but “alt_name” does not allow language suffixes, which are also necessary here.

So, what is the best solution for mapping of cross-border checkpoints? What do you think about items provided?

The use of names is definitely wrong. I’d also say alt_name was also wrong. Description is about the only place that causeway (buses) could go.

Old and (closed) should not appear in "Old Woodlands Checkpoint (closed). It should not have a name at all, but “Woodlands Checkpoint” might, in some circumstances, be a valid old_name, although I doubt it in this case.

The roads are highway=service, in my view, but I’m not sure of the type. I’m not familiar with “causeway” used in this context, but maybe use something based on that.

There need to be access tags on the “causeways”, rather than parenthesised text in the names.

There are already established tagging schemes for buses, trucks, etc so that should’nt be in the name.
Tag “name” is for name only, not for purpose. Please read

I agree with the others that any form of name tag would be wrong. The longstanding policy of “name is the name only” definitely applies here. If these roads aren’t actually named “Causeway (Heavy Vehicle)”, etc. (which seems very likely), then these ways shouldn’t have a name at all. Any access restrictions should be tagged using the relevant access tags and then data consumers can decide how they want to handle each case.

On a side note, there’s nothing wrong with using language suffixes on any name-related tag if that’s approriate. I’m not sure where you saw that this is not allowed. It’s only logical that int_name, nat_name, alt_name, old_name, etc. could potentially exist in multiple languages.

I haven’t seen that it’s not allowed, but I’ve seen that “name:” is allowed :slight_smile:

Ok. It’s clear now with names, and many existing mappings of cross-borders seem to be incorrect.

But what about road classification to use there?

Ignore my “causeway” suggestion. That relates to the water crossing. It is not uncommon to use highway=service without service=*.

If you are sure they are wrong, just fix them.

For road classification, If there are roads with restrictions, i would keep the same classification for all roads, to not force routing algorithms to try a low class road.

Abuse of name to replace meta data seems to be endemic in the Singapore Malaysia boundary area. I think it would be quite a big undertaking to fix it all, and really needs a local mapper to take ownership.

I have added a map note.

(More generally, violations of “name is name only” seem to appear in almost every example map quoted on the forum, so I think that understanding of this rule is not good amongst most new mappers, so fixing it could become a major, multi-person project, in its own right. I certainly wouldn’t want to take ownership of every case I see here.)

Hi guys :slight_smile:

Actually, as a regular OSM contributor and a and OsmAnd user, I do agree on the fact we should use those “hgv”, “motorcar”, “motorcycle”, “bus” tags.
I also agree that the road classification of each lane should be the same (unless, of course, it is a lane leading towards a Duty Free or towards toilets, for instance.)

However, there is one thing I do not agree with: the absence of names!
Those “barrier=border control” tags should systematically have names. Why?

Sure you can play with the tags I mentioned above when it comes to bus lanes, truck lanes etc. Those tags are extremely important (and not always filled) for your GPS to lead you through the lane corresponding to your vehicle while transiting.

However, this won’t help in any way to plan your trip to a specific spot on the border checkpoint. Even worse: it won’t help you differentiate a couple of lanes with criteria that do not exist on access tags on OSM.
For instance:

  • Entering the EU, you’ve got “EU, EEA, CH lanes” and “all passports lanes”, all differentiated additionally by “nothing to declare” and “goods to declare”. Example below at the Lavoriškės (Lithuania) border checkpoint:
  • Entering Belarus, you’ve got those “Green channel” (for Russian Customs Union cars) and “Red Channel” (for cars from other countries). Example from the Bieniakoni border checkpoint below:

When you do differentiate clearly “green channel, red channel, all passports …”, it helps people to choose the right lane. Even better: it helps them planify their journey to that specific border checkpoint. Especially given the fact sometimes that info is so badly signed you need a microscope to understand where you need to go (those who tried the Lithuanian Medininkai and Šalčininkai border checkpoints know what I’m talking about) :laughing:

Names are even more important if we take in account the fact that some border checkpoints’ names totally differ from the city/town/village they are on.

  • Before the Schengen era, Poland had the “Ogrodniki” border checkpoint with Lithuania, which was not situated in the eponymous village, but in the village of Hołny Mejera. If you added no name, your GPS wouldn’t find that checkpoint. Just a couple of villages called “Ogrodniki”. Same at a couple of (former) border checkpoints around: Kalvarija in Lithuania, etc. I could find lots of such examples.
  • A couple of years ago, the nowadays’ Brest border checkpoint was called “Varšaŭski most” (someone recently unnecessarily reverted that name). If there were no name, it would be impossible to find that border checkpoint because there is no locality called “Varšaŭski most”.
  • Additionally, if I didn’t have any look at the Belarusian border committee’s website, I would have no clue that the above mentioned “Brest” border checkpoint is only for cars and for buses, whereas the nearby Kazłovičy border checkpoint is only for trucks. When you drive to Brest, it is indicated nowhere early enough to make you change your decision on-time.
  • You’ve also got a lot of border checkpoints for “local traffic only” or “only for citizens of country A and country B”. If you don’t include that in the info, there is no way your GPS will ask you “do you live in that area?” or “are you a citizen of country A or country B” before you plan your journey. :frowning:

For all the reasons above, despite aesthetically it doesn’t always look good, including names+additional info is essential while mapping those border checkpoints. If you add no name including an additional info to the “barrier:border control” tag, forget that people will understand why they can’t drive through. They will be clicking like crazy “why can’t I drive there if I have a car?”

We are lucky enough to work on an open-source map. This means we can discuss the rules between ourselves and change them. OSM is not a rule museum! :laughing: And most importantly: we must also bear in mind that lots of apps use OSM as their source, which means we must always be much more user-oriented than map-freak-oriented while mapping. :slight_smile: If we provide insufficient or wrong info, that info is automatically reflected on all those apps.

I don’t agree that green channel, red channel and EU channel are names. I would argue that you don’t actually need the map at that stage anyway as you can see the signs (and, although they are unlikely to re-arrange, except possibly for Brexit, you should be looking for the signs anyway, as the map may be out of date).

If it is important to distinguish, there should be a customs_channel (name coined, without research) tag, rather than putting the information in the name.

It’s OK to name the whole checkpoint area, as long as that name is either physically present or very commonly known. The problems I had with the name on one building was that:

  • it was no longer the name;
  • Neither old nor disused should be used in names simply to indicate that the name is no longer in use;
  • I suspected the name actually applied to something larger than just the building.

Do you mean that we can create a boundary for cross-border checkpoint and name that boundary instead of naming the building?

O.K. hadw.

In this case, do you propose another solution in order to distinguish those channels?
As I wrote above: they are rarely signed beforewards (or sometimes microscopically - which is dangerous while driving).
If there is an enormous queue at the border, you may be wasting your time waiting in the wrong lane unnecessarily because you can’t see such info on your map. It happened to me at Medininkai, for instance.

I personally know people who plan their trip first to a specific border checkpoint. When they noticed the lanes were starting to be differentiated on (green channel etc.), they were more than glad because they started using the data on that “barrier:border control” tag. Not all users just use the final arrival point on their GPS-es without having a look at their routes!
Hence, I really don’t see any other solution because the current technology doesn’t allow us to do that. But perhaps you will correct me if you see another solution? Maybe there is an OSM trick I don’t know? IMHO, sticking strictly to the “name and name only rule” in this specific case may look aesthetically better, but it brings more confusion to final users.

Regarding the problems you mentioned above:

  • This is checkable while driving there or, as above, on borderguard website sources (I privilege local knowledge, which is why I noticed the Brest border checkpoint had changed)
  • For this case, the “old_name” tag should be used.
  • Can’t this be resolved by creating a grouping relation between the border checkpoint buildings and the area?

About the “customs channel” tag - I would appreciate if you explained because this is not one thing on which I am an expert. Nevertheless, let us bear in mind there are numerous border checkpoints with borderguards only (and without customs officers).
Signing all the area as “border control” is wrong, because the border control doesn’t take place in all the area, just at specific spots within those areas.


That is what I was doing at the beginning.
It looked pretty nice on OSM
It looked pretty horrible on, Galileo and OSMAnd. Because it made appear and additional “barrier:border control” spot (точка) in a random part of the area. So I stopped doing that and I had to correct my own work.

The correct way of dealing with meta data that is essential for a particular purpose is to define appropriate meta data tags and have the renderers for that purpose render it appropriately.

None of the renderers on the page are intended for end user use by private motorists. The default is intended for mappers. Cycles is intended for cyclists. Transport is intended for public transport users and, although I’m not sure of the exact target audience of Humanitarian, and I don’t think it is your use case either.

Putting meta data in a name to force it to render, results in it rendering on maps that are not intended to be used for the purpose for which it was added, and creates a disincentive for maps and routers that were so intended to handle that information correctly, creating a vicious circle that reinforces the mis-use of the name. (Mapper: I use the name because the special tags are not rendered. Renderer developer: there is no need to spend time on implementing the tags as no one uses them.)

I’d like to return to this, because it’s still not so clear. Keeping road classification (all roads are primary) seems like mapping for software (“not force routing algorithms”). Because logically all those roads just cannot be primary.

Can someone clarify these please?

By that logic there can be only one primary road in the entire world. I think that word doesn’t mean what you think it means (at least not in this context).


I think, this definitely differs from those numerous small roads at border checkpoint :slight_smile: