Ooh that's a great application!
Since we're almost wrapped up, I'll walk you through some of the technical approach that we used for this, and by all means if you want more of an explanation, I'm glad to explain what I can.
The original version of the "trail line" came from this -
https://thetrek.co/thru-hiker-resour...teractive-map/ One of the GIS guys (Louis) grabbed the KML file and converted it to a File Geodatabase using ArcGIS. This gave us not only the trail line but also an indication of "parking areas." We looked at a couple of other "trail lines" including
http://topofusion.com/at-gps.php but despite having 300,000+ way points gives the length of the trail as only 2109.94 miles. But ultimately the trail line we used would be 2189.1 miles - close enough.
During a section where Harvey appeared to be off-track, we realized that the trail line we were using didn't include the most recent updates, so we grabbed the latest version from the NPS.
https://nps.maps.arcgis.com/home/index.html
(When we first started, the GIS page at the ATC didn't have the link available otherwise we would have just used that -
https://appalachiantrail.org/home/ex...trail/gis-data, but in retrospect, getting the data with the parking areas was a huge help)
From there we manually entered all of the road crossings from the 2018 AT Data book into a database which allowed us to easily know the distance between points. Using some kind of GIS magic, one of the guys (Matt) was able to highlight on the map all of the roads which crossed the trail, and with the data from the data book we were able to correct the mileage for each of those crossing (seriously, magic).
We then took and added way points for the daily stops for Stringbean, Jurek, and JPD (We didn't include Speedgoat for reasons I don't remember) so we could see where Harvey was ahead/behind of the goal.
We took and generated a couple of versions of the plan - one breaking each day using "Price is Right" rules (as close to 52 miles each day without going over), one that followed Stringbean's mileage but using road crossings instead of campsites, and a version that was frankly just a bit of "eh, that sounds good."
Once we got a hold of the InReach tracker, Matt started playing around with it and was able to get each waypoint written to an AWS database. So every 10 minutes a new point gets uploaded to inReach, we read that point from that site, and write it in to our own database (among other things this gives us a complete and permanent record that we don't have to pay inReach to store). Then in more "magic," Matt wrote a KML layer that reads data from the database and plots each point on a map with the most recent timestamped location getting the "Harvey head" marker and everything else indicated with a triangle.
So we had a map where we could track Harvey, see his position, and see where he was compared to others. Cool.
Then the work began to create a streamlined version that we could embed in the RoadiD tracking site that simplified the map a bit and removed any information about road crossing or competition. Matt worked with one of their developers and created the version that you see at
https://www.roadid.com/pages/wheresharvey.
There's a few other projects that we spun up for this (we kind of used this as a bit of a "real-world" learning exercise):
- Creation of a "Where's Harvey" skill for Alexa that allows someone to use the Alexa functionality to get an update on Harvey's current mileage. This was surprisingly useful (at least for me) to just be able to yell at Alexa and get the up to date mileage.
- Creation of a Perl based "HarveyTrack 3000" where from any starting point it would chart out the next 3 days with road crossings in a particular range (say 38-58 miles with a goal average of 51 miles per day). The final decision was made by Harvey's dad and the rest of the crew but we were at least able to tell them when a particular stop had the potential to cause problems down the line.
- A 3D tracking map. Not a lot of functionality but it looks cool.
3d_map.PNG
- Automatically embedding Facebook posts on the map based on timestamp. This one never got fully implemented, but we did a proof of concept where if Harvey did a video at 9 am, you would see a little icon on the map and be able to click it and watch the video.
And yes, the irony of spending hours of programming and technical skills on what fundamentally is a walk through the woods is not lost on me. I've spent hours inside to help others (who are also inside) be able to track the one guy who's moving all day long.