Gooby is my Ruby-based open-source project for creating Google maps, as well as parsing data exported from Garmin GPS devices.
Future versions of Gooby will generate content for other Google APIs.
Map generation with Gooby is a multi-step process, summarized below.
- First, you do some event (running, cycling, hiking, etc) with a Garmin Forerunner GPS device!
- Next, use your computer to export the GPS (Global Positioning System) data from your Garmin device to an XML file. You do this with either your Garmin ForerunnerLogbook software (Forerunner models 201 or 301), or with the Garmin TrainingCenter software (Forerunner models 205 or 305). Garmin provides a USB cable which connects the device to your computer. See Garmin for information on their GPS devices.
- Use Gooby to parse the extremely verbose exported XML file into simple CSV (comma separated value) format. (samples: Garmin Forerunner 201 XML or Garmin Forerunner 205 XML/TCX). The exported XML files typically contain data for several events on different days. Gooby can split this data into separate CSV files for each event.
- Use Gooby to generate a Google Map of your event from one CSV file. The map consists of a HTML page with embedded JavaScript which conforms to the Google Maps version 2 API. The generated map will contain mileage marker points with split-time and calculated pace-per-mile values, as well as start and finish point markers. Note that you can manually modify the CSV file, as necessary, before map generation. See the Google Maps API site for information on their JavaScript based mapping API.
-
Post the generated HTML file on your web site. Note that you'll need a map key from Google in order for the map to appear properly. You embed your key value into the gooby_config.yaml configuration file, so that the generated HTML file contains your key value.
Here are a few example maps generated with Gooby:
- Charlotte Corporate Cup Half Marathon 2005
- Nashville Marathon 2005 (Kilometers)
- Phoenix Marathon 2006
- Davidson, NC Training Route
You can capture your own GPS Data with this custom Google map.
Note: In testing, I've found that Google Maps API occasionally has some compatability issues with the Microsoft Internet Explorer browser. The maps render properly, however, in the Firefox or Safari browsers (including the new Safari for Windows browser). - An function added in Gooby 1.1.0 was proximity-based "been-there" logic. To use this function, you first define your (POI) into the gooby_config.yaml configuration file. Then you define courses in this yaml file, which are defined from a series of points-of-interest. Finally, you ask Gooby to scan your CSV files for when you were on a given course within a specified proximity. Proximity is expressed in terms of degrees of difference, which are the sum of the difference between the actual vs POI latitude and longitude. Gooby will produce a report showing when you were on the course, split times, and elevation gains. This function is useful for cyclists and runners when tracking their hill-climbs, time-trials, or speedwork.
- Gooby version 1.2.0 added Garmin 305 Heartbeat Monitor support . If your wear your Garmin 305 heartbeat monitor, this data will be exported from the Garmin Training Center software. Gooby will capture the heartbeat information, and embed it into the CSV files, Google Maps, and "been_there" reports it creates.
- Gooby version 1.2.0 also added Metric System support . Users outside of the USA will now be able to have Gooby express all distances in terms of Kilometers (km) rather than Miles (mi). This applies to all extracted CSV data, pace-per-mile calculations, "been_there" logic, and Google Map markers and marker popup windows.
- You can optionally load the CSV file into a database for your particular needs. The Gooby gem file contains a DDL file for the MySQL datatabase as well as database creation and load scripts.






