OpenStreetMap

A limited time weight reduction offer

Posted by Minh Nguyen on 3 October 2020 in English (English). Last updated on 31 December 2020.

The other day, while adding some Ohio county roads to route relations, I came across a baffling weight limit sign:

Lilly Chapel–Georgesville Road looking north from London–Lockbourne Road

As complicated as it can be, OpenStreetMap’s maxweight tagging is designed around explicit numeric values. What good is a 10% discount when you don’t know the full price?

A state bridge inspection manual pointed out that this sign was once standardized as sign R12-H7 in the Ohio Manual of Uniform Traffic Control Devices (OMUTCD), but the sign was removed from the standard in 1997 in favor of explicitly posting the specific weight restrictions by axle count. (Old signs like this often remain until they wear out and the local highway department needs to replace them.)

At the same time, I discovered that a similar percentage-based sign has remained in the standard, now renumbered as R12-H17. Counties and townships are allowed to post it on roads and bridges to protect them during thawing season. (Other northern states have similar provisions.)

OMUTCD R12-H17

After a few days of research, I managed to come up with a machine-readable representation of R12-H17. The sign implicitly refers to a complex section of the state legal code that defines the legal truck configurations and weight limits associated with each configuration. I tried to distill that down into the usual conditional tagging syntax. It’s a mouthful compared to what’s literally on the sign:

maxweight:conditional=12 st @ (Feb 1-May 15)
maxweight:hgv:conditional=12 st @ (Feb 1-May 15 AND axles=2); 36800 lbs @ (Feb 1-May 15 AND axles=3); 43200 lbs @ (Feb 1-May 15 AND axles=4); 49600 lbs @ (Feb 1-May 15 AND axles=5); 55600 lbs @ (Feb 1-May 15 AND axles=6); 31 st @ (Feb 1-May 15 AND axles>=7)
maxweight:hgv_articulated:conditional=32 st @ (Feb 1-May 15)

As far as I can tell, there are currently eight legal truck configurations in Ohio: 2F1, 3F1, 4F1/SU4, SU5, SU6, SU7, and 5C1. The SU* configurations are for special hauling vehicles (SHVs), also known as single unit vehicles, for example cement trucks and garbage trucks. The single unit configurations appear to be uniform throughout the country, but the others may vary by state.

Unreduced weight limits by configuration
ConfigurationAxlesArticulatedUnreduced legal limit
2F12No15 short tons (14 t)
3F1323 short tons (21 t)
4F1427 short tons (24 t)
SU4
SU5531 short tons (28 t)
SU6634¾ short tons (31.5 t)
SU7738¾ short tons (35.2 t)
5C15Yes40 short tons (36 t)

The configurations are primarily known by the number of axles, and secondarily by whether the truck is a single unit (including a special hauling vehicle with closely spaced axle groups) or a truck-trailer combination. The general-purpose weight limit sign, R12-H5, identifies the configurations by these two aspects. However, the regulations are very particular about the spacing between any two axles and how much weight is applied to each axle. In some configurations, the axles are unevenly spaced and have different weights applied to them. For both signs, I ignored everything except for the axle count and unit count. I’m assuming that any truck configuration that’s illegal in the State of Ohio would be out of scope for the maxweight key anyways.

OMUTCD R12-H5

I alternated between expressing some limits in short tons and others in pounds. In Ohio, the authorities use pounds and kips in regulations and manuals, but they only post tonnages on signage. (Compare to Texas, which only uses pounds on signage.) I only used pounds for some cases because the percentage reduction would’ve resulted in a fractional limit and ambiguity about rounding and significant digits.

Given that the weight limit reduction sign is relative to unsignposted state laws, the actual values will change the next time the law changes. This is unfortunate but, in my opinion, an acceptable tradeoff for keeping data consumers from having to navigate the complexity of legal load limits that vary by state. The relevant state law was last updated in 1993, though the SHV configurations were introduced more recently, around 2016. I don’t expect the laws to change frequently. But just in case, I’ve also been mapping traffic_signs and also adding ad-hoc tags like maxweight:relative=-10% and maxweight:start_date=1989-09-12, which will make it easier to find these roadways to update.

This effort was only for a single standard sign design in Ohio, but hopefully the reasoning here will help others as they try to make sense of regulations and signage in other U.S. jurisdictions.

Photo courtesy of jbthemilker, hero of Ohio’s armchair mappers, and licensed under CC BY-SA 4.0.

Location: Fairfield Township, Madison County, Ohio, United States

Comment from Sanderd17 on 4 October 2020 at 10:05

That’s quite a difficult sign to understand. I wonder how many truck drivers can do the math while driving past that sign…

But I would propose to make a key source:maxweight in analogy to source:maxspeed. We use that source:maxspeed tag to encode which sign is used. So if legislation changes (and updates default rural or urban speeds), all roads with wrong maxspeeds can be found.

I.e. something like source:maxweight=US:R12-H17(-10%,Feb 1-May 15)

Documenting it in the wiki would also be handy ;)

Comment from Minh Nguyen on 5 October 2020 at 07:02

That’s quite a difficult sign to understand. I wonder how many truck drivers can do the math while driving past that sign…

I guess the state expects truck drivers to know the current load as a percentage of the general legal load limit for their vehicle configuration. It’s a tall order for a router, though.

But I would propose to make a key source:maxweight in analogy to source:maxspeed. We use that source:maxspeed tag to encode which sign is used. So if legislation changes (and updates default rural or urban speeds), all roads with wrong maxspeeds can be found.

I.e. something like source:maxweight=US:R12-H17(-10%,Feb 1-May 15)

I added source:maxweight=sign, but I refrained from putting the extended traffic_sign syntax in the source:maxweight key, because tag values that require string processing are more difficult to consume or query for. Instead, I added traffic_sign=US:OH:R12-H17 nodes and tagged them with start_date and maxweight:relative, which will make these cases much easier to find when the relevant law changes. (I prefixed the sign code with US:OH:, not just US:, because this sign is specific to Ohio’s statewide sign standard rather than the national standard.)

The percentage-based signs I’ve encountered so far are problematic because they’re obsolete signs that technically don’t correspond to any current standard code. However, I’m taking advantage of the fact that they’re very similar to R12-H17, except with a start date instead of a range of days out of the year.

The next time the law changes, we can use this Sophox query to find weight limits to update. (This query only considers year-round limits like the ones I encountered, but Sophox can parse more complex conditional restrictions, such as in the case of a seasonal R12-H17 sign.)


Login to leave a comment