Background
This trail database system was started in late 2018 as a unique feature of the original Wild West Jeep Club website. The goal was to provide easily accessible trail data for Nevada and surrounding states, specifically for those trails frequently run by the club.
Over the years, it has become somewhat of a hobby of mine, and has evolved beyond what I originally planned for it. It's become a highly interactive, community driven resource for the western US offroad community.
Following the dissolution of the club in early 2024, I decided to re-home the entire database and all its features to its own domain, thus the creation of Wild West Offroad Trails, a name that's familiar to those who have enjoyed its use before, and intriguing to those who are finding it for the first time.
Tech Info
Mapping & Geocoding Services
All interactive maps and static map images on this website are provided by Mapbox (www.mapbox.com) using their GL JS and Static Images APIs.
Geocoding services (used to convert geographic coordinates into a human-readable address or location description) provided by a combination of Positionstack (www.positionstack.com) and Mapbox Geocoder APIs.
Weather
Weather data is retrieved using APIs from either the National Weather Service (www.weather.gov) -OR- OpenWeather (www.openweathermap.org).
Visual Graphs
Visual graphs are generated using a non-commericial license of CanvasJS (www.canvasjs.com).
GPX Upload Processing
When a GPX file is uploaded to this site, onboard custom scripts scan the file for validity, then iterate through the waypoints and track/route segments, extracting necessary data, which is then stored in geoJSON format in a database. The original uploaded file is stored for diagnostic purposes, but not used again by the system.
Elevation Data
During upload processing, each GPX file track or route point is checked for elevation data. If an elevation value is missing from a location point, it is added automatically using lookups from onboard data from NASA's Shuttle Radar Topography Mission (SRTM). Currently, I am using SRTM data with a resolution of 3 arc seconds (about 90 meters). I plan to update this to a higher resolution, starting with the more mountainous areas.
Static Track Previews and Thumbnails
Thumbnails/track previews are generated using slimmed down versions of the full track. Mapbox's Static Images API has a maximum query length. First, the coordinate point array is run through a script to delete every other array element until the array contains less than 1,000 coordinate points. Then, the array is converted to a Google Maps Encoded Polyline, then URL encoded and passed to the API to generate the map image with the track overlay.
File Downloads
When a user downloads a file for a trail, internal scripts dynamically create the file from the database each time a download is requested. This ensures that the user is getting the absolute latest data. The scripts construct files in compliance with the GPS Exchange Format, Keyhole Markup Language XML and GeoJSON RFC 7946 schemas.
Water Flow Data
As of June 28, 2024, we are experimenting with capturing and storing water flow rates for rivers/streams that intersect or closely parallel the trails. The way this works right now is every hour, on the hour, data is downloaded from DreamFlows (www.dreamflows.com) for target rivers and stored in our database. There is a historical graph on some of the trail info pages with associated flow rate data that can be interacted with.** This is experimental. The methods we use to capture data may change as this evolves. Right now, we are only pulling data that is updated twice per hour, and in some cases, not at night.
Changelog
11/19/2024
Explore
added a visual indicator for which rating is selected if using the filter
added an alert if no matches are produced with the rating filter
11/15/2024
Help
repurposed the old "resources" page into a new "help" section with info and guides about trails and mapping, app use, etc.
General
fixed an issue where dynamic Facebook OG images were not properly generated anymore because of the switch to WEBP trail thumbnails
renamed "LIST" page to "EXPLORE" to be more adventerous and interesting sounding
implement Fuse.js for fuzzy trailname searches on both the home and explore pages
fix special characters in thumbmail attributes breaking fuzzy searching
de-cluttered some stuff here and there
Trail info
hide download buttons if visitor is using Facebook's in-app browser, since it blocks downloads anyway (add note to prompt visitor to launch the page in normal browser)
justify alignment for text in description, weather and recommendations blocks
11/14/2024
General
bump to Mapbox GL JS v3.8.0
Trail info
small improvements to weather forecast retrieval
Trail uploader
tightened the duplicate trail check threshold for start and end points to 500 meters
11/13/2024
Trail info
gallery now showing images in descending order of when they were uploaded (newest first, instead of newest at the end)
testing out a slight layout change so that a bigger map is displayed when viewed from a PC
Image uploader
prepending uploaded images to gallery instead of appending (to go along with the above change)
storing all available EXIF data now for later use
11/05/2024
Other
fixed a spelling error on the privacy policy page
9/30/2024
Downloads
fixed an issue where GPX and KML filenames were missing
9/29/2024
Downloads
fixed MIME types for KML and GPX
using direct content stream for downloads vs saving and serving a temporary file
9/28/2024
Trail info
clicking on start or end coordinates from the trail data table now intelligently selects a map opening method depending on the device (iOS opens Apple Maps, Android opens Google Maps, and desktop opens a new tab to the Google Maps website)
9/27/2024
GPX uploader
misc improvements to various calculations
9/26/2024
Database
now using spatial data and indexing for separate track start and end points
dropped download count columns since we are using another table for this
GPX uploader
new logic to check for duplicates based on start/end point proximity with existing trails using geospatial inquiries
General
converted all thumbnail image files to WebP
9/21/2024
General
framework and testing started for 3DEP 1 Arc Second, 1/3 Arc Second and 1 Meter DEM replacement for SRTM 3 Arc Second data.
9/18/2024
Image & GPX uploader
added a progress bar for a more visually appealing experience
fixed some file check logic
General
minor improvements to misc JS & PHP code
added some ADA compliance things
9/14/2024
Trail info
added button near the top that links to the main map and pans/zooms to the trail
General
misc improvements to various Javascript code to make map loading more efficient
9/13/2024
Trail info
added a button to display more information about water flow data and how it relates to crossing in an offroad vehicle
9/07/2024
Map
fixed an issue preventing ranger district and forest info from showing when USFS layer clicked
Explore
removed a few sorting options that don't make a lot of sense, and also removed those things from the thumbnails
improved clarity of rating and distance info on thumbnails
9/06/2024
Downloads
added GeoJSON format to download options - GeoJSON files are constructed in compliance with RFC 7946 specifications
revised the method for tracking number of file downloads and reporting on trail info pages and index stats grid
Image upload
implemented sha1 hashing for future duplicate image checks
9/01/2024
Map
experimenting with USFS data popups on main map
added a new layer style called "USFS" which overlays Forest Service Ranger District regions on a satellite basemap
attached bufferless Ranger District click handler to USFS style only
fixed a couple small bugs
8/31/2024
General
redesigned the mobile nav menu button to be more visually appealing especially on iOS devices
8/30/2024
General
bump to Mapbox GL JS v3.6.0
added new "About" page with more visually appealing tech info and changelog
Explore
added reset function to clear rating filter and show all trails again
8/26/2024
Image upload
fixed an issue where uploads would fail if the image contained partial or no GPS exif data
Map
added buffer to click events to make tapping a specific track much easier on touch devices
added mouseover highlight styling to tracks
Explore
made rating legend clickable to filter list
8/23/2024
General
upgrade to jQuery 3.7.1
Map
updated MapBox default map style versions
themed and fixed positioning of style selector for mobile devices
added position controls to map
fixed positioning of fullscreen map to account for iPhone safe area inset
GPX uploader
improvements to point reduction for polyline encoding
8/22/2024
Water flow data
fixed issue where graph not displayed properly if historical period min/max flows are both 10 or less (math is hard)
8/21/2024
Trail details
added fun topo background to desktop view of trail info and map
fixed trail stats table alignment
darkened the navbar so that it doesn't look so plain at the top of the page
Explore
added a rating color legend
General
other misc visual improvements
8/17/2024
General
MIGRATION TO NEW WEBSITE COMPLETED
Trail details
fixed weather icons once again, as they seem to have returned to the API response
removed South/North region concept
8/15/2024
Explore
fixed ugly gray search box placeholder text
fixed sorting
7/14/2024
Trail details
removed weather icons because they're deprecated on the API
6/29/2024
Trail details
introduced historical water flow data graph in place of text data
switched to fill charts because they look cooler
6/28/2024
Trail details
first rollout of experimental water flow data
fixed weather icons
General
bump to Mapbox GL JS v3.4.0
10/12/2023
Image upload
fixed an error where images would get deleted as soon as they were uploaded due to an issue with Gmail automatically scanning the admin email links
08/05/2023
General
bump to Mapbox GL JS v2.15.0
02/01/2023
General
bump to Mapbox GL JS v2.12.0
9/24/2022
Image uploader
image uploader now reads geotag data from images and stores lat/lon in database for later use
9/23/2022
Trail details
weather forecast details now load asynchronously and therefore the page will no longer break if the forecast cannot be loaded
added weather icons from weather.gov API to extended forecast
9/21/2022
Image uploader
updated image uploader with multi-file drag/drop style, removed description/name inputs
09/18/2022
General
bump to Mapbox GL JS v2.10.0
08/21/2022
Trail details
disabled the waypoint add function because no one uses it
07/24/2022
General
bump to Mapbox GL JS v2.9.2
07/10/2022
Trail details
fixed an issue where if the weather forecast did not load from the weather.gov API, many other parts of the page would also fail to load, and cause various backend errors
05/16/2022
Downloads
downloads are now tracked individually by trail ID, time, IP address and file type
05/08/2022
Trail details
additional weather forecast periods are now displayed in a popup window by clicking "MORE" under the first period
05/04/2022
Trail details
trail details page now has weather forecasts for a predefined number of periods, using the National Weather Service API
04/25/2022
General
bump to Mapbox GL JS v2.8.2
04/16/2022
General
added number of US states covered to database stats grid
Map
added experimental map style changer to toggle map styles on the fly
04/08/2022
General
bump to Mapbox GL JS v2.8.0
04/02/2022
General
added some things to the database stats grid
03/28/2022
Map
slight update to hover/click handlers on the main map
03/27/2022
GPX uploader
original files are now stored again (separately) for diagnostic purposes only
user is now given the option to choose whether or not to upload the waypoints in their GPX file
03/25/2022
GPX uploader
uploaded tracks are now compared with the database and potential duplicates are flagged, giving the uploader a notice to review
03/24/2022
Trail thumbnails
fixed text fitment of trail details at bottom of thumbnail
03/19/2022
GPX uploader
region and state are now determined at upload for sorting later
fixed thumbnail preview to match rating color
03/17/2022
Map + trail details
track color corresponds to difficulty rating, same as thumbnails
03/13/2022
GPX uploader
new uploader supporting drag/drop & client-side size/extension validation
03/11/2022
Explore
added sort by region, and region designators on thumbnails
03/09/2022
Trail thumbnails
added rating, distance, downloads and views to thumbnails
changed thumbnail track color convention to a rating scale rather than region
03/07/2022
General
fixed some longstanding formatting issues on various pages
Explore
added a button at the bottom of the list that brings the viewer back to the top of the page
02/06/2022
General
bump to Mapbox GL JS v2.7.0
01/24/2022
Trail details
moved elevation profile graph closer to map
General
number format applied to index page stats
Gpx
added minified GPX back in as a download option
12/01/2021
General
bump to Mapbox GL JS v2.6.1
Trail details
enabled cooperative gestures for trail info page map
Kml
trail waypoints added to KML downloads
07/10/2021
Trail details
added active weather alerts for trail location using weather.gov API [TEMPORARILY REMOVED FOR IMPROVEMENTS]
06/23/2021
General
bump to Mapbox GL JS v2.3.0
05/15/2021
General
bump to Mapbox GL JS v2.2.0
Trail details
all GPX downloads are now minified
added basic KML download option (waypoints not yet included)
03/17/2021
Trail details
added "-mini" to end of filename for minified GPX downloads
03/10/2021
Map
added USFS Ranger District vector data, which will soon be query-able so that a user can click inside a district and get more info
03/05/2021
Trail details
city, state and county added using Mapbox's geocoder API
02/14/2021
General
bump to Mapbox GL JS v2.1.1
01/27/2021
General
bump to Mapbox GL JS v2.0.1
GPX uploader
added start/end markers to the trail preview image
01/26/2021
Trail details
added some more weather data from openweathermap.org API
Explore
added ratings to trail titles in format "Trail Name | R#"
01/25/2021
General
started support for trail groups, which can hold multiple trails belonging to the same region
Explore
added support for sorting by page views
improved performance of thumbnail loading by only querying the full track if needed (this seems to have greatly improved the loading speed of the list page)
01/24/2021
Index
restructure of statistics section
Trail details
added current trailhead temperature, cloud cover and wind speed using the openweathermap.org API
Explore
added ability to sort by name, rating, length, date added and number of downloads
added ability to toggle sort order between descending and ascending
GPX uploader
added support for tracks that have no elevation data and are outside the scope of the SRTM datasets
01/11/2021
GPX uploader
fixed an issue where an extra space at the beginning or end of the trail name would result in a hyphen being added in the URL safe name
12/28/2020
Image uploader
fixed an issue with the image uploader where images smaller than 1000x1000 pixels get a blank thumbnail
12/19/2020
Explore
fixed trail name font sizing on index and list pages
12/18/2020
Trail details
added distances to elevation profile graphs on X axis
added min and max elevations for profile graphs, rounded to whole 100's (makes the graph more interesting)
added a corresponding location marker to small map when elevation profile line is hovered over
12/10/2020
Map
fixed an issue where trails could not be clicked on when map zoomed out
changed 3D terrain to appear at all zoom levels
added sun calculations to determine sky atmosphere depending on map location and local time (also updates when map is panned)
12/08/2020
Map
trails clustered using centerpoint at zoom level 8 and out for better visibility and searching
clicking within 50px of part of a trail will still select that trail (easier to click with touch)
3D terrain now available starting at zoom level 7 and in
General
bump to Mapbox GL JS v2.0.0
12/07/2020
Map
sorted out ability to add vector overlays for BLM data (map controls to follow!)
restricted main map to US bounds to prevent excessive loading of tiles in other countries
Trail details
some nicer styling applied to the elevation profile graphs
added links to weather.gov for trail endpoint locations within their markers on trail info pages
General
bump to Mapbox GL JS v1.12.0
12/04/2020
General
dynamically generated opengraph tags for sharing trail info links on social media
began making provisions for geographical polygon support (defined areas)
miscellaneous performance tweaks
Trail details
elevation profile graphs working using CanvasJS
12/02/2020
Index
added some statistics to the trail homepage
General
trail thumbnail tracks are now dark orange for northern region and light green for southern region
Trail details
placeholder added for trail notices: system under construction for submitting trail closures, weather, restrictions and such
11/27/2020
Trail details
added an option to download a condensed, or "minified" version of a GPX file (smaller file size, but not formatted for human readability)
11/16/2020
Trail details
added ability to upload pictures to a trail info page (supported: jpeg, jpg, png and gif)
10/12/2020
Trail details
new function on trail details page to add a waypoint to that trail
added lat/lon to end markers on trail info page maps
10/05/2020
General
converted track and waypoint storage to associative arrays and updated all necessary files to support the conversion
added GPX file download counter
added unique identifier to download temp files to prevent mid-transfer overwriting
Trail details
added support for waypoint descriptions
10/02/2020
Maintenance
cleaned up older tracks to round all numbers to proper point precision, add elevations if missing, and delete duplicate points
GPX uploader
added a function to ignore duplicate points in newly uploaded files
Trail details
updated trail view page to count location points dynamically and no longer store a fixed number in the database
09/25/2020
Trail details
Better interface for trail details page
Added ascent and descent calculations to trail details page (no track smoothing, these values may be different than other apps or websites)
09/24/2020
GPX uploader
New upload interface with trail preview and statistics before finalizing (pre-upload)
DEM data now automatically added to any points missing elevation
Ascent and descent calculations added to pre-upload stats
Added support for uploading GPX files containing a route
Waypoints are now extracted and stored for use later
Explore
Search bar added to explore page (search by name)
General
Added custom dynamic GPX file generation script for downloads
New landing page, user experience and design improvements, new ratings & resources pages
Trail details
Added waypoints to trail page map
11/04/2019
GPX uploader
elevation and timetamps are now extracted and stored for use later
All tracks are now placed into regions: Northern Nevada and Southern Nevada. Tonopah-ish is the latitudinal divider
Trail details
New trail information page when a track is clicked on from the main map
10/28/2019
General
Changelog started, all work completed before this date is undocumented.