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

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

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

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

Trail list

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

upgraded to Mapbox GL JS v3.6.0

added new "About" page with more visually appealing tech info and changelog

Trail list

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

Trail list

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

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

Trail list

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

Trail list

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

upgraded 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

upgraded to Mapbox GL JS v2.15.0

02/01/2023

General

upgraded to Mapbox GL JS v2.12.0

9/24/2022

Trail details

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

Trail details

updated image uploader with multi-file drag/drop style, removed description/name inputs

09/18/2022

General

upgraded 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

upgraded 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

upgraded 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

upgraded 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

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

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

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

Uploader

new uploader supporting drag/drop & client-side size/extension validation

03/11/2022

Trail list

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

Trail list

added a button at the bottom of the list that brings the viewer back to the top of the page

02/06/2022

General

upgraded 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

upgraded 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

upgraded to Mapbox GL JS v2.3.0

05/15/2021

General

upgraded 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

upgraded to Mapbox GL JS v2.1.1

01/27/2021

General

upgraded to Mapbox GL JS v2.0.1

Uploader

added start/end markers to the trail preview image

01/26/2021

Trail details

added some more weather data from openweathermap.org API

Trail list

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

Trail list

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

Trail list

added ability to sort by name, rating, length, date added and number of downloads

added ability to toggle sort order between descending and ascending

Uploader

added support for tracks that have no elevation data and are outside the scope of the SRTM datasets

01/11/2021

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

Uploader

fixed an issue with the image uploader where images smaller than 1000x1000 pixels get a blank thumbnail

12/19/2020

Trail list

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

upgraded 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

upgraded 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

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

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 , rather than a track

Waypoints are now extracted and stored for use later

Trail list

Search bar added to trail list 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

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.