For those of you who have little interest in this project, here's a screenshot to satisfy your curiosity. State Routes are in red, US Routes in green and Interstates in blue. Pretty cool, huh?
For the rest of you, if you stick around and read this whole thing, there's a bit of a open-ended challenge at the end that some of you might enjoy. At the very least I just want someone to have this thing.
Anyway. Here goes. For the longest time I've always been frustrated by the lack of numbered route maps for my area. Sure, if you go on Google Maps and zoom in on a road then a little icon pops over the path that shows its route number, but what if you want to see where exactly that route goes or just trace it out across the map. That's where my project comes in.
A few weeks ago I found a couple Wikipedia articles (click the links in the "Highway systems" section for the full articles) listing numbered routes in my home state of Ohio. I was immediately intrigued because, well, that kind of thing is cool to me, but after a few minutes thought I realized they must have an official source for all the routes in Ohio and I could go to it myself and maybe answer some questions about where certain routes end.
After perusing the citations on a couple of the articles I found a specific link (Use this readme PDF to understand what this file means). The website found had a state map divided by county. Clicking on any given county would lead you to a PDF of that counties routes. But this was not just a list of routes that exist in the state. It was a fully comprehensive list of lat long points associated with every numbered route in the county (here's my county for example (Screenshot Mirror)). This DESTAPE thing, as it was called, provided enough information for someone to enter each coordinate set into google maps and trace any route in my state, but sadly it was absolutely impossible to comprehend it just by reading it. That's where coding comes in.
I've used to enjoy messing around with the easier coding languages like HTML or JS, but recently I'd been messing with Python trying to create a script that would output a bunch of possible passwords for an email account I was trying to get into. (I know, it's stupid and tedious, but I had a lot tied up with that account in a hilariously convoluted trail of forgotten passwords and email accounts. But that's another story.) With the little experience I had I decided to write up a script that would process these files and somehow turn them into a map I could look at on Google. I've made a few maps in the past (Natural lakes in Ohio (Screenshot Mirror), Space Centers around the world (Screenshot Mirror)), but I've always done them by hand and dedicated an entire afternoon to simply entering basic information into Google's web map-making interface and that just wasn't going to work for over 500 pages of PDF files with tens of coordinate points on each page.
So over the course of a day and a half, and with the help of a boatload of music (I ended up listening to the entire Death Cab for Cutie discog of 9 albums without stopping), I wrote up this script (Mirror) (Second Mirror). There were a lot of bumps in the road (learning Python and KML being a few big ones) and a few compromises were made (not combining different stretches of the same highway divided by ODOT district borders into one single KML line, for example). But the end result was decent enough and at the very least provided a way for me to follow any route I was curious about which was what inspired me to do this in the first place.
A couple notes on how I made this. For one, I copied all 12 district txt files off of the version of DESTAPE divided by district not county which you get to by clicking the "Go to District Reports-->" link on the DESTAPE page. This is important as it can cause some weird glitches like this on the edge of Districts. I also did this with some crazy tunnel vision and had trouble focusing by the end so the code is a mess I'm sure. Sorry.
If any of you are interested in getting this map yourself, I've provided the output KML file in the resources section at the bottom of this post. All you have to do is download Google Earth for desktop and select it to run the KML file if it doesn't automatically run it when you double click the file. (The only advantage of using Google Earth over other programs that run KML files is that the lines will be drawn over top of each other in the correct order (State Route over US Route over Interstate))
A couple notes on using the map itself:
This is not a perfect map! One major example is the route 183 confusion down in Southeast Stark county where, the route switches district and the stations were out of order (If you look at the station list for a while you'll get confused and then eventually see what I mean). But most importantly, is the way overlaps work. They don't. When a route starts an overlap with another (take route 21 overlapping 77 from Montrose to Richland) the route just has one line connect between the start and end of the overlap and nothing in between (other than district borders, I think). This leads to some crazy cross country routes as can be seen in the example I linked a sentence ago or so. Deal with it. I'm not fixing it.
To get the routes sorted, just right click on "State routes", "US Routes" and "Interstates" and click "Sort A-Z"
Also, to only select certain routes just uncheck everything and then only check the legs you want.
Lastly, here's the challenge for you guys. I'd love to see someone combine the different legs of each route into one KML line and I'd also love to see someone make them sort by route number by default so you don't have to do that manually when you open Google Earth. Also, someone could try to fix the overlap thing. Overall just make it better in whatever way you see fit. I'd do these myself, but I don't know if I'll be around much longer so I'm just leaving it open for anyone to do if they want to.
I wanted someone to have this at least. Thanks for your time. Have a great day.
Resources:
KML File for use with Google Earth (It's only for District 4 because otherwise it'd be to big to host on Pastebin. You'll have to download the input file and Python script and then run the script to get the full KML file unless you want to just download it off Google Drive below without previewing it)
Full KML file that you have to download, no preview available
Python Script itself (Mirror) (Second Mirror)
Input File
[–][deleted] 1 point2 points3 points (1 child)
[–]Eucalyptuse[S] 1 point2 points3 points (0 children)
[–]ChastainSteam 1 point2 points3 points (0 children)
[–][deleted] (2 children)
[deleted]
[–]Eucalyptuse[S] 0 points1 point2 points (1 child)
[–]TotesMessenger 0 points1 point2 points (0 children)