Adding the Hillsborough River Path in OpenStreetMap

I had the crazy idea last night that I should bundle Ethan the Dog into the bicycle trailer and ride out to the Dog Fun Park near the Queen Elizabeth Hospital so that he could get some exercise. This despite Ethan the Dog never having been in the bicycle trailer before, despite the 26ºC temperature, despite the Dog Fun Park seeming impossibly far from our house, and despite there being a chance that the Dog Fun Park wouldn’t actually be open, as it’s undergoing expansion.

Surprisingly, given all of this, it all went relatively smoothly. I did discover that a bicycle trailer is not a naturally comfortable place for dogs, at least on the first ride, so Ethan was a little ornery. Fortunately I was able to strap him in with his car seatbelt, so there was no danger of him leaping out of the trailer to chase a squirrel; he did, however, manage to nose his way through the mesh cover on the front of the trailer.

Ethan in the bicycle trailer

The highlight of the trip, for me at least, was discovering that it’s possible to cycle almost the entire distance from Joe Ghiz Park to the Dog Fun Park on a paved cycle trail that runs up Riverside Drive and then around the Queen Elizabeth Hospital along the Hillsborough River. The City of Charlottetown has a brochure that describes both trails:

11. Riverside Drive Path Distance 1.5 KM
The asphalt path begins at Park Street and runs along Riverside Drive and ends at Murchison Lane.
12. Hillsborough River Path Distance 1.2 KM
This asphalt path begins at the corner of Riverside Drive and Murchison Lane, and runs along the Hillsborough River, ending at Hillsborough Hospital.

I’d known about these two paths from many trips out to the hospital and to the dog park, but this was my first timing seeing them up close, so I turned on Google Fit for the cycle ride home and it made me a nice map of the route:

Google Fit map of my cycle ride to the Dog Fun Park

Google Fit has the distance from Dog Fun Park to home at 4.89 km, making the round trip 9.78 km. So, not “impossibly far,” but still longer than I’ve cycled in a long time.

Looking at OpenStreetMap this morning I discovered the both the path along Riverside Drive and the path along the Hillsborough River were missing; this is likely because they’re both difficult to make out from satellite imagery. I remembered that Google Takeout should allow me to export my ride from last night, which I should then be able to import as a trace into OpenStreetMap and use as a basis for adding the paths.

Sure enough, I found an option to export my Google Fit data in Takeout:

Google Takeout screen shot showing Google Fit export

I choose “Include all Fit data” and, a couple of minutes later, I had an 8 MB ZIP file with every single data point from Google Fit I’ve accumulated since I installed it in 2015. In the “Activities” folder inside the ZIP file was a file named 2018-07-09T18_43_53-04_00_PT35M3S_Cycling.tcx that contain the log of my cycle trip back from the dog park. The “.tcx” file extension is a Garmin-originated file format called Training Center XML that’s like GPX, but formatted to represent activities rather than just points. Here’s how it starts out:

<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase
    xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2"
    xmlns:ns2="http://www.garmin.com/xmlschemas/UserProfile/v2"
    xmlns:ns3="http://www.garmin.com/xmlschemas/ActivityExtension/v2"
    xmlns:ns4="http://www.garmin.com/xmlschemas/ProfileExtension/v1"
    xmlns:ns5="http://www.garmin.com/xmlschemas/ActivityGoals/v1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
    <Activities>
        <Activity Sport="Biking">
            <Id>2018-07-09T22:43:53.636Z</Id>
            <Notes>Biking</Notes>
            <Lap StartTime="2018-07-09T22:43:53.636Z">
                <Track>
                    <Trackpoint>
                        <DistanceMeters>0.0</DistanceMeters>
                        <Time>2018-07-09T22:43:53.636Z</Time>
                    </Trackpoint>
                    <Trackpoint>
                        <DistanceMeters>29.938282012939453</DistanceMeters>
                        <Time>2018-07-09T22:43:54.000Z</Time>
                        <Position>
                            <LatitudeDegrees>46.26018524169922</LatitudeDegrees>
                            <LongitudeDegrees>-63.097129821777344</LongitudeDegrees>
                        </Position>
                        <AltitudeMeters>-6.199999809265137</AltitudeMeters>
                    </Trackpoint>

That first “Trackpoint” is the Dog Fun Park, and it continues with Trackpoints all the way home.

OpenStreetMap won’t read TCX files, but it will read GPX files, and GPSBabel will helpfully convert from one to the other:

Screen shot of GPSBabel, showing the conversion from TCX to GPX

The result of the conversion was a file cyclepath.gpx, ready for import into OpenStreetMap.

From the OpenStreetMap Upload GPS Trace page, I uploaded the GPX file:

Screen shot of OpenStreetMap Upload GPS Trace page

After a few minutes for processing, OpenStreetMap had the trace ready for use.

OpenStreetMap screen shot showing GPS trace processed

The Riverside Drive Path turned out to be easy to trace from satellite imagery, so I did that first, creating lines for parts of the path and for the crosswalks along the way, and adding them all to an OpenStreetMap Relation called Riverside Drive Path.

For the Hillsborough River Path, which is obscured by the tree canopy, I turned on the GPS Traces layer in the OpenStreetMap editor, and my cycle route appeared as a green line on the map:

Turning on GPS Traces in OpenStreetMap

Once I started adding the cycle path I realized that there are actually two paths involved in the journey from the corner out to the dog park: along the river to Hillsborough Hospital is the Hillsborough River Path, but once you turn inland it becomes the Hillsborough Park Path, which the city describes as:

13. Hillsborough Park Path Distance 0.8 KM
This asphalt path connects to Hillsborough River Path and runs along Murchison Lane and turns left and runs along Patterson Drive, ending at Pioneer Avenue.

So I started by adding a new OSM Relation called Hillsborough Park Path, and added all the lines and crosswalks to the relation. I then created a Hillsborough River Path relation, and combined some existing lines near the hospital with new lines over my GPS traces, and some new crosswalks.

With all of this in place, all three paths appear not only on OpenStreetMap itself, but on derivative works like Waymarked Trails, where you can now see all three:

Screen shot of Waymarked Trails, showing the three new paths

I’m happy that our night’s outing not only resulted in exercise for me, exercise for Ethan, but also some new open data for the community to profit from.

Comments

Bryson's picture
Bryson on July 10, 2018 - 11:47 Permalink

Nicely done, Peter. I'm getting a little rusty on my OSM skills - good to see another track added to the other updates in the Charlottetown area.

Peter Rukavina's picture
Peter Rukavina on July 10, 2018 - 15:13 Permalink

OSM is so much improved these days from an editor’s perspective compared to when you started out (bless your heart). Do you think Island Trails would sponsor a workshop for new mappers?

Chuck McKinnon's picture
Chuck McKinnon on July 12, 2018 - 16:38 Permalink

As always, I admire your commitment to open data, Peter. I have conversations out here in Calgary where I often reference your site for just that, and I quote "PDF is where data goes to die" to employers, clients, and friends on the regular.