Archives by date

You are browsing the site archives by date.

Using a hiking GPS to update urban map

Last year I took over BU Maps as the primary developer. This application uses the Google Maps API and a custom database of locations to provide the BU community with up-to-date location information about anything related to the University: from colleges and departments to local restaurants and bike racks. The following process describes how the BU Maps database was updated originally:

  1. A team of “updaters” would print out high zoom images of the Hybrid Google Maps tiles (via taking screenshots of their viewport).
  2. They would go out into the field and collect the data. By this I mean they will mark the appropriate locations on the paper map printouts.
  3. They will come back and process the map printouts. The processing involves zoom in on the marked part of the map in the BU Maps admin system and clicking on the same location as the one marked on the paper map.

As you can imagine this process was tedious, long and boring. After having done a small set of updates to “get the feel” of the process, I decided to look for a better way. Enter Garmin GPSMap 60Cx: a consumer grade hiking GPS receiver priced at a reasonable $240 (as of July 2009). This device was built to provide precise and accurate position info in canyons, where other GPS receivers will struggle. It has the ability to be loaded with custom routable maps, for example from the OpenStreetMap project to ease navigation for the updaters. It comes with a USB cable and is supported by the GPSBabel project, so waypoint data can be easily loaded to and unloaded from the device. The 60Cx has the ability to average multiple position readings to establish current location more precisely. Finally, it has a connector for an external antenna, so I was able to connect an amplified external Gilsson antenna which boosts precision to just under 10 ft. This level of precision is great considering the fact that Boston is a big city with tall buildings.

After we acquired the 60Cx, I wrote a couple of scripts on top of GPSBabel to load the data from the BU Maps database to the device and vice versa. Now the process of updating BU Maps location is simple:

  1. I load the 60Cx with BU Maps locations as waypoints. Each waypoint has a unique ID within the 60Cx, which is important for this whole operation.
  2. I give the device to an updater. He goes out into the field and looks for whatever locations I loaded onto the 60Cx.
  3. Any new items get added to the 60Cx with a unique temporary ID and additional info is collected. This process is still manual but not nearly as time consuming as getting the positioning information.
  4. I load the data from the device back into the database, updating existing locations and adding new ones.
  5. If any additional information was collected (e.g. phone number, pictures, etc.), it is added through the admin system.

Most recently we used this method to accurately update locations of all the bike racks on and around BU. Using a GPS receiver is a lot quicker than the previous, paper-based process: it took the updater five hours to get updated positioning info for over 80 locations around the geographically spread out BU campuses. That’s five hours from beginning of data collection to completion of database updates.