A Little GPS Hacking..
Today I learned something interesting while surfing the web: that somebody had made a simple program that can be used to compile your own custom maps for Garmin GPSes. Since I picked up a Garmin Legend CX recently, I thought that would be a good thing to play around with. So, tonight, I tried to see how far I could go in trying to get some simple road data compiled and downloaded to my GPS.
Well, as you can see from the result on the right, I managed to get fairly far. I’ll prepare a writeup on how to do this when I get the maps refined, but basically, I wrote a simple perl script that used the Geo::ShapeFile library to parse road data that I downloaded from the US Census bureau. I then (stumblingly, I’m no perl expert, I’m more of a python guy…) wrote this out in a format that could be compiled by cgpsmapper (links tomorrow, when I’m more awake) and compiled the map, downloaded it to my GPS with sendmap, et voila! You can see the street names surrounding Pixar’s location in downtown Emeryville!
It’s very cool! I’ll try to get a tutorial written up on how to do this sometime later, along with links to all the necessary software, and make my Bay Area street maps available.
Addendum: Well, it’s morning, I haven’t even had coffee, but here are some links that you’ll find helpful:
- cGPSmapper is the most important bit: a compiler that can convert a simple textual representation of maps into the right format for downloading to your Garmin GPS
- MapCenter has some pre-made user contributed maps that were compiled with cGPSmapper and are available for download.
- I downloaded theÂ necessary road maps from this website, which provides a convenient interface for downloading TIGER data from the U.S. Census Bureau.
- The Geo::ShapeFile library will make parsing the files that you downloaded above much simpler, even if you are a perl neophyte like myself.
These resources were enough for me to create a simple script that converted the Alameda county road data into something I could download.Â I need to review some of the TIGER documentation to figure out what other data I need (in myuser map, things like shortlines aren’t represented at all) but I really think that the core of what you need is very simple.Â Â I’ll keep you all posted.