Is it necessary to specify miles in railway:position=*?

Or more broadly: is it semantically meaningful to prefix the value of railway:position=* with mi: or other units?

Railways, being linear features, usually describe locations with linear referencing. In other words, railway features like signals, switches and stations have an inherent position, described as a single number (railway:position=*) indicating the distance, following the path of the railway, to a designated zero benchmark point. This number is not always labeled in real life on the feature itself, though nearly all railway lines worldwide have evenly-spaced milepost signs (railway=milestone) that are used as intermediate benchmarks to interpolate the position of features in between them.

Since the majority of the world has standardized on metric units, OSM tags default to metric units when unspecified. In the case of railway:position=*, the default unit is kilometers. However, throughout the North American conventional rail network (yes, including Mexico and Canada), mileposts indicate US customary miles instead of kilometers.

But here’s the kicker: at least in North America, the distance between mileposts is not always one mile. The vast majority of mileposts are one mile apart, but occasionally there are “short miles” and “long miles” that can be anywhere from 0.1 to 1.9 miles long. A variety of circumstances bring these into existence: a construction project to straighten a curve may shorten a railroad mile, or the acquisition of one railroad corporation by another may introduce long miles to make milepost equations easier where the two railroad systems meet. The position of a feature falling along a long or short mile is still interpolated equally between the two nearest mileposts—for example, if mileposts 24 and 25 on a particular railroad are only 0.6 miles apart, a station at “mile 24.5” would actually be 0.3 miles away from both mileposts.

Another quirk of North American railroads is that some operators assign a letter prefix to all their mileposts to uniquely identify which line they’re on. This conflicts with the idea that railway:position=* must be a numerical value with defined units. As I understand it, this tag is semantically more like a name=* or ref=* than it is a measurable numeric value. Although miles may have been used in the very first survey of these lines, one cannot determine the railway:position=* of a feature simply by measuring from the zero benchmark. One needs to know where the nearest two mileposts are and interpolate a decimal value in between them, regardless of what units the line was originally surveyed with.

After all, a short mile could end up being exactly a kilometer—should that change the value of railway:position=*? Is it even meaningful to specify units in the first place? I’m not convinced that there’s any use to retaining unit prefixes in this tag.

Wouldn’t that be the same procedure as for maxspeed, defaults to km?

  • maxspeed=30

  • maxspeed=20 mi

No need for a ‘prefix’ ‘mi:’?

Well, seems that ‘mi:’ is preferred as documented in the Wiki

But why is this differently handled for this one and maxspeed then?

Wouldn’t that be the same procedure as for maxspeed, defaults to km?

Speed limits are a measurable numeric value, with standardized units. In North America, a railroad line with a speed limit of 50 miles per hour would be tagged maxspeed=50 mph. In this case, a mile is a mile is a mile, and 50 mph is always the same speed regardless of whether the two nearest mileposts to the train are truly one mile apart.

For railway:position=*, though, a railroad mile is not always a US customary mile. I’m not sure what the situation is elsewhere, but I wouldn’t be surprised if there were short and long kilometers in other places. We could debate whether the unit belongs in a prefix or suffix, but my point is that the unit is meaningless in this case.

In GB most rail speed limits are in mph. Lines with ETCS ( are in km/h. This is on the Cambrian line and HS1. Distances are in miles and chains which are visibly signed at level crossings (Along with an Ordinance Survey grid reference).

Let me guess: hysterical raisins historical reasons, or some railway map expecting that.

1 Like

Can we stop talking about the units of speed limits here? They’re irrelevant to the headline question, which is “should we treat the values of mileposts as values, or as essentially reference-labels that don’t have any intrinsic meaning due to the presence of short/long miles/km and so on?”

Also, I can think of cases offhand in the US where prefixes are used to disambiguate the same milepost value within the same subdivision even though they aren’t found on “normal” mileposts in that subdivision, so keep that in mind during this discussion as well.