How to interpet highway=construction?

I used OSM2PGSQL to load in many road type information.
According to OpenStreetMap guidelines, when construction is going on in a road, the road type is updated to highway: construction. Then, another tag should be added that says (e.g. construction: trunk_link). Not all of the roads that have highway:construction seem to have the construction tag as well. How can I get what type of road a road tagged as construction is? Are there other columns I can use? Is there a proper way to interpret highway=construction?

The construction=* key is what indicates the future road type. If it isn’t present in the data, then it’s a gap in the data. In some cases, you might be able to infer the highway classification based on adjoining roadways, but there’s no guarantee that the inference would be accurate. For example, a primary road under construction might connect to an already completed highway=tertiary that will automatically become primary as soon as construction on the other road is done.

1 Like

highway=proposed (or proposed:highway=*) should be interpreted for what it is, i.e. a future road for which construction hasn’t even started. I don’t know what you want to achieve exactly, but if you want to route people or vehicles, you should obviously ignore any way with such tags.

1 Like

Just to clear up some possible confusion, because I think there’s maybe a misunderstanding.

highway=construction is not really for when there is construction (roadworks) going on on an existing road. When a road - or just one lane - is closed for a week for resurfacing or utility works we do not update the road type to construction. We don’t normally map that at all (at least not in my area).

The tag is mostly for when a road is being built for the first time. That’s why it doesn’t always have construction=: sometimes when all you see a building site, it’s not actually clear what is being built.

We do sometimes use construction when the whole road is dug up and closed for months or years, that’s when a tag might be updated, for example, from highway=tertiary to highway=construction construction=tertiary and then back to highway=tertiary when the work is finished.


No. You (usually) cannot infer this from other tags. As pointed out by @Minh_Nguyen , if the construction=* tag is not present, then the information about the future highway=* type is missing.