OpenTrails (Open Trail System Specification) Converter & Validator

Subscribe to updates I use OpenTrails

Statistics on OpenTrails

Number of watchers on Github 35
Number of open issues 17
Average time to close an issue 20 days
Main language Python
Average time to merge a PR 3 days
Open pull requests 0+
Closed pull requests 2+
Last commit about 4 years ago
Repo Created over 4 years ago
Repo Last Updated 12 months ago
Size 9.35 MB
Homepage http://open-trail...
Organization / Authorcodeforamerica
Page Updated
Do you use OpenTrails? Leave a review!
View open issues (17)
View OpenTrails activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating OpenTrails for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Build Status

OpenTrails Converter and Validator


These in-development tools will allow park agencies and other trail stewards to upload and transform their existing shapefile data describing trail systems--including trail segments, trailheads, and the areas they traverse--into OpenTrails-compliant GeoJSON and CSV files.

Current Status

The converter tool currently transforms shapefiles containing trail segment data (lines), producing:

  • trail_segments.geojson
  • named_trails.csv
  • stewards.csv

Future functionality will provide a similar transformation for shapefiles describing trailheads (points) and areas (polygons).


OpenTrails is a Python Flask application that depends on Amazon S3 for storage of uploads.

  • Amazon Web Services configuration comes from the DATASTORE environmental variable, given in this form:

    s3n://<AWS key>:<AWS secret>@<S3 bucket name>

  • Set up a virtualenv

pip install virtualenv
virtualenv venv-opentrails
source venv-opentrails/bin/activate
  • Install the required libraries
$ pip install -r requirements.txt




OpenTrails uses a Procfile to get up and running. You can use a library like foreman or honcho to run the application locally.

foreman start


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License and Copyright

Copyright 2014 Code for America, MIT License

OpenTrails open issues Ask a question     (View All Issues)
  • over 3 years Converter and validator does not specify what version of spec it converts/validates to
  • almost 4 years Sample data is out of date, does not match spec
  • almost 4 years spec page is out of date, causes confusion
  • about 4 years Need to provide a way for agencies to be able to upload just trailheads
  • over 4 years output trail_segments.geojson contains name property
  • over 4 years "restrooms" is supposed to be acceptable
  • over 4 years update converter to accept data aggregated from multiple agencies
  • over 4 years Preparing data for OpenTrails: 1-to-many trailhead to trail segment relationships
  • over 4 years stewards.csv always assigns "0" as the steward_id in stewards.csv
  • over 4 years Change output fieldname "trail_ids" to "segment_ids" in trailheads.geojson
  • over 4 years Question: Multi-part polylines/pts?
  • over 4 years Produce helpful error message on upload timeout failure
  • over 4 years Style "only .zip files allowed" Validator error page
  • over 4 years Sort Validator Feedback Messages by File
  • over 4 years trailhead "osm_tag" creation
  • over 4 years trailhead "area_id" identification/creation
  • over 4 years osm_tags creation
OpenTrails list of languages used
Other projects in Python