Skip to content

Instantly share code, notes, and snippets.

@extratone
Created May 6, 2025 02:26
Show Gist options
  • Save extratone/03105bd32f1e75fbed3332c0958cc2e5 to your computer and use it in GitHub Desktop.
Save extratone/03105bd32f1e75fbed3332c0958cc2e5 to your computer and use it in GitHub Desktop.

The Missouri state highway system, maintained by the Missouri Department of Transportation (MoDOT), is comprised of interstate highways, U.S. numbered highways, and state routes (also called state highways). All such highways in Missouri should be mapped with route relations according to the established tagging consensus for the specific network: interstate highway route relations, U.S. numbered highway route relations, or Missouri state route relations. This article specifically covers Missouri state routes.

Table of Contents

State Routes

Each state route in Missouri can generally be classified into one of two categories: numbered or lettered.

Numbered routes

The numbered routes are generally aligned so that even numbers run east and west while odd numbers run north and south[1], but Route 112 is a notable exception to this rule. (If there are more exceptions, add them here.) Shield signs along the numbered routes feature the route number on a white silhouette of Missouri with a black background. A wide variant of the shield is used for three-digit route numbers.[2] Route relations for non-special numbered Missouri routes use .

<gallery> File:MO-2.svg|Shield for Route 2 File:MO-141.svg|Shield for Route 141 </gallery>

Lettered routes

The lettered routes, formally known as supplemental routes, are more irregularly aligned than the numbered routes. This is because their alignments were typically chosen for county roads that were taken over by the state in an effort to provide "a state-maintained road within at least 2 miles of more than 95 percent of all rural family units - a family unit being a farm home, school, church, cemetery or store."[3] As of July 2023, the state maintains 2,660 lettered routes[4] (19,010 miles total[5]). Many of these lettered routes are undivided two-lane highways, especially in rural areas. According to MoDOT, double-letter routes are usually farm-to-market routes that "end at county roads" or that are "former alignments of other highways". The letters G, I, L, Q, and S are avoided. When the letter R is used the route connects to a state park or another recreational place (Route AR, a non-recreational route south of Bakersfield, is the only exception to this.).[2] Shields for the lettered routes feature the route letters on a white rectangle with a black border. A wide variant of the shield is used for double-letter routes.[2] Route relations for lettered Missouri routes use or for lettered spur routes (not to be confused with the lettered branch routes 64A or 64B).

<gallery> File:MO-supp-B.svg|Shield for Route B File:MO-supp-FF.svg|Shield for Route FF File:Missouri Supplemental Routes B and FF, Nodaway County.jpg|Routes B and FF concur in Nodaway County File:Spur N.jpg|Spur Route N splits from Route N in Cedar County </gallery>

Relations

All relations should use this scheme. In particular, tag the relation with these tags:

Key Value Explanation
name Missouri Route # (required) The hashtag represents the route number/letter. If it is a special route (alternate, business, spur), put the modifier after the route number/letter along with the city name in parentheses. Lettered/supplemental routes should also have the name of the county(s) (alphabetical order) in parentheses. Examples: "Missouri Route 13", "Missouri Route 13 Business (Lexington)", "Missouri Route D (St. Louis City County/St. Louis County)", and "Missouri Route K Spur (Cass County)". Sometimes, a supplemental route will be repeated in a county, so you have to add an extra directional suffix. Example: "Missouri Route Z (Randolph County) (East)". The county(s) for each lettered route is shown in the completion tables below, but not all routes have been added to the table yet.
type route (required) This is a "route" relation (as opposed to other types of relations)
route road (required) This route is part of the roadway network for automobiles (as opposed to a bus route, hiking route, cycling route, etc.)
network US:MO (required) This route is a Missouri state route, one that is signed with numbers. For supplemental routes (ones that use letters, e.g. Route MM) use 'US:MO:Supplemental'. For business routes use 'US:MO:Business', for alternate routes use 'US:MO:Alternate', and for spur routes use 'US:MO:Spur'.
ref xx (required) The route number/letter, e.g. '13' or '291' or 'B'
symbol url (optional) A URL to an image of the route 'shield', preferably an SVG image. You can find these in Wikimedia Commons, just follow the link to Wikipedia in the table below and use the image. Example: http://upload.wikimedia.org/wikipedia/commons/d/da/MO-66.svg
modifier Alt / Business / Spur (optional) Use any of these on bannered routes. The bannered route should be in a separate relation from the 'parent' route. For example, highway 37 is one relation while Business 37 is another relation.
is_in:state MO (recommended) The route completely resides within the state of Missouri.

Once a way is added to the relation, please delete the corresponding name from the way since this is now redundant information. For example, remove 'name=State Highway xx' and 'tiger:name_*=*' where appropriate.

One exception is to leave "old" route names in place, such as 'name=Old highway xx' since these ways are usually not a part of the route relation.

Unfortunately the route shields are not yet rendered by Mapnik, but don't be discouraged as the OpenStreetMap Americana project considers this high priority.

Data Sources

Overpass Turbo

You can use Overpass Turbo to query the OpenStreetMap database in complicated ways. This section has some example queries that can be helpful for mapping Missouri state routes. Click the icon next to a code block to execute that query in the browser.

Get all route relations

The following query gets all route relations for Missouri state routes. This is currently not comprehensive.

Get all numbered route relations

This query gets all non-supplemental route relations. This includes the numbered routes and their special routes (e.g. business loops, spurs, etc.).

Get all supplemental route relations

This query gets all supplemental route relations. This includes spur routes. This is currently not comprehensive.

Hunt for undiscovered supplemental routes

Progress is ongoing to get every single state route into a route relation including supplemental routes. This query finds all ways with tags that look like supplemental routes but aren't yet members of any supplemental route relations. Before adding a supplemental route relation you should verify the route with open data sources. The TIGER import made many subtle mistakes along supplemental routes (and also obvious ones like forks), and these mistakes were mostly preserved in the ref tags.

Completion

Do not expand "St." or other contractions in city names as these are their official names.

Route Relation Status Relation Formatted Correctly Notes
1 Checked 8/12/2022 by ilikeeditingandcontributing
2 Checked 8/12/2022 by ilikeeditingandcontributing
3 Checked 8/12/2022 by ilikeeditingandcontributing
5 Checked 8/12/2022 by ilikeeditingandcontributing
5 Business (Ava) Checked 6/17/2023 by ilikeeditingandcontributing
5 Business (Camdenton) Checked 6/17/2023 by ilikeeditingandcontributing
5 Business (Milan) Checked 6/17/2023 by ilikeeditingandcontributing
6 Checked 6/17/2023 by ilikeeditingandcontributing
7 Checked 6/21/2023 by ilikeeditingandcontributing
7 Business (Pleasant Hill) Relation (3/4)
8
9
10
10 Business (Richmond)
10 Spur (Excelsior Springs) MoDOT calls it a spur (travelways 5387/5388), but it's unsigned
11
12
13
13 Business (Bolivar)
13 Business (Branson West) Not a state route. Stone County classifies it as a county road literally named "Business 13"
13 Business (Clinton)
13 Business (Collins)
13 Business (Higginsville)
13 Business (Humansville)
13 Business (Lexington) Checked 6/17/2023 by ilikeeditingandcontributing

Watch out! MoDOT maps have Bus. 13 concurrent with U.S. 24, but signs route it along MO 224. We chose the latter. TyFi (talk)
13 Business (Osceola)
13 Business (Richmond) No Relation
13 Business (Warrensburg)
13 Spur (Battle of Lexington State Historic Site) Checked 6/17/2023 by ilikeeditingandcontributing; Unsigned
14
15
15 Spur (Paris)
16
17
18
19
20 Check endpoints
21
21 Business (Hillsboro)
22
23
25
25 Business (Malden)
27
28
30
31
32
32 Business (Park Hills)
33
34
34 Spur (Jackson)
37
37 Business (Butterfield)
37 Business (Cassville)
37 Business (Purdy)
37 Business (Seligman)
38
39
39 Business (Mount Vernon)
41
41 Spur (Arrow Rock)
41 Spur (Miami)
42
43
45
46
47
48
49
51
52
52 Business (Deepwater)
53
58
58 Spur (Centerview)
59 Incomplete through McDonald Co.
64
64A
64B
66
68 Check south end
72
73
74
75
76
77 Check south end
78
79
80 Check east end
81
82
83
84
84 Spur (Caruthersville)
85 Check south end
86
87 Check and fix endpoints
89
89 Spur (US Route 50)
90
91 Check east/south end
92
92 Spur (Tracy)
94
95
96
97
98
99 Un-straighten US 160
100
101
102 Check south end
103 Check south end
104
105
106
106 Spur (Deer Run State Forest)
107
108
109
110
111
111 Spur (Craig) Verify this
112
112 Spur (Roaming River State Park)
113
114
115
116
117
118
119 Check south end
120
121
122 Check west endpoint
123
124
124 Business (Centralia)
125
126
127
128 Check north end
129
130
131
133
134 Check south end
135
137
138 Check west end
139
141 Exits complete and Relation verified 11/04/2015 per Brett Lord-Castillo
142
143
144
145
146
147 Check north end
148
149
150
151 Check north end
152
153
154
156
157
158
161
162 Check east end
163
164 Check east end
165
168
171
172 Check east end
173
174
175
176
177 Check south end
179
180
180 Spur (Pagedale)
181
185 Realigned in Sullivan?
185 Spur (Meramec State Park) Check east end
187 Check west endpoint
190
202
210
213
215
215 Spur (Brighton)
221
224 Checked 6/18/2023 by ilikeeditingandcontributing
231
240
240 Alternate (US Route 40)
240 Business (Glasgow)
240 Spur (Rocheport)
242
245
246
248 Verify route through Reeds Spring
249 TIGER data incomplete due to construction
254
265
266
267
269
273 Check south end
273 Spur (Tracy)
291 North endpoint is broken
340
350
360
364 Extension under construction
366
367
370
371 Check south end
376
413
465
571
740
744
752
759 Check both ends
763
765
799 Unsigned

Supplemental Routes (table not complete, add as needed; route letter then county sort order):

Do not expand "St." or other contractions in county names as these are their official names.

Sources for these routes include these county maps and the MoDOT Traveler Information Map.

Every supplemental route in Jefferson County, St. Louis County, St. Louis City County, and St. Charles County as of now (6/20/2023) have been put into this table. Each route was taken from the county maps link above, comprehensively checking each inch of said maps.

Route Relation Status Relation Formatted Correctly Notes
A (Jefferson County)
A (St. Charles County)
AA (Jefferson County)
AB (St. Louis County) Checked 6/19/2023 by ilikeeditingandcontributing
AC (St. Louis County) Please check
B (Jefferson County)
B (St. Charles County)
B (St. Louis County) Checked 6/19/2023 by ilikeeditingandcontributing; this route can only be seen on this MODOT county pdf map, not the Traveler Info Map. (Unsigned)
BA (St. Louis County) Checked 6/19/2023 by ilikeeditingandcontributing
BB (Jefferson County)
C (Jefferson County)
C (St. Charles County) After the road meets the river, the road turning left (after the straightforward section to the river) is called "Old Highway C" on the county map for St. Charles.
CC (Jefferson County)
CC (St. Louis County) Conflicting sources on path, MoDOT Traveler Information Map and this MODOT county pdf map.

PDF says revised in 2011, so it was probably realigned in the last decade. Bing StreetSide from 2020 shows two route markers at https://www.bing.com/maps?cp=38.667185%7E-90.617809&lvl=20.0&pi=-7.8&style=x&mo=om.1&dir=218.3 and https://www.bing.com/maps?cp=38.659637%7E-90.618016&lvl=19.3&pi=-4&style=x&dir=52.8 along the route as currently mapped. TyFi (talk) 23:25, 2 July 2023 (UTC)
D (St. Charles County)
D (St. Louis City County/St. Louis County) East end was fixed, but it may be unsigned. It is shown on the traveler information map (MoDOT).
DD (Jefferson County/Ste. Genevieve County)
DD (St. Charles County)
E (Jefferson County/St. Francois County)
EE (Jefferson County)
EE (St. Louis County) Checked 6/19/2023 by ilikeeditingandcontributing
F (Franklin County/Jefferson County) Please check
F (St. Charles County)
FF (Jefferson County)
H (Jefferson County/Washington County)
H (St. Charles County)
H (St. Louis City County) Checked 6/20/2023 by ilikeeditingandcontributing This road ends at an administrative boundary (St. Louis City County - St. Louis County) unlike other supplemental routes.
HH (Franklin County/Jefferson County) Only a very small sliver enters Jefferson County in the middle of the route, and then it re-enters Franklin County.
HH (St. Louis County) Please check
J (St. Charles County)
JJ (Jefferson County/St. Francois County)
JJ (St. Louis County) Conflicting sources on path, MoDOT Traveler Information Map and this MODOT county pdf map.
K (St. Charles County)
M (Jefferson County) Should this be tagged as ?
MM (Jefferson County)
N (St. Charles County)
N (St. Louis County) Please check
NN (Franklin County/Jefferson County)
P (Jefferson County)
P (St. Charles County)
PP (Jefferson County)
T (Franklin County/St. Louis County) Please check
T (Jefferson County)
T (St. Charles County/Warren County) Checked 6/21/2023 by ilikeeditingandcontributing
TT (Jefferson County)
U (St. Louis County) Please check
V (Jefferson County)
V (St. Charles County)
W (Jefferson County) Despite its symbol being on the St. Louis County map, it is only in Jefferson County. The "END" sign is south of the border between them.
Relation added and topology is good but ways could be a little smoother. TyFi (talk) 22:10, 22 June 2023 (UTC)
W (St. Charles County)
WW (Jefferson County/Washington County) Only a very small sliver enters Washington County in the middle of the route, and then it re-enters Jefferson County.
Y (Jefferson County)
Y (St. Charles County)
Z (Jefferson County)
Z (St. Charles County)

Notes

References

  1. a b
  2. a b c d
  3. a b
  4. a b
  5. a b

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment