That being said, the Vista and MapSource, its ugly cousin, are not without their problems.
The obvious solution is to provide a USB interface. The only downside to this approach is that Garmin may feel compelled to also provide a serial interface so that the GPS can interoperate with other NMEA compliant equipment. I think a good compromise would be to either provide both interfaces, or provide only the USB interface and offer a USB to serial dongle as an accessory.
They do provide a "turn GPS off after transfer" option, so that you can initiate a transfer and then walk away from the system without worrying about the GPS sitting their gobbling batteries long after the transfer is complete. This at least makes the best of a bad situation.
To force the use of a slow serial interface for downloading data is bad enough, but to then not make every effort to use that interface as efficiently as possible is just insulting.
When I recently selected a large number of maps, perhaps totaling 36MB of data, and tried to download it to the GPS I got a popup dialog from MapSource telling me that the selected area would not fit into the GPS, and I should select a smaller area and try again. I was given no information as to how much map data would fit in the GPS, simply that 36MB was definitely too much. What am I supposed to do now? Engage in binary search until I discover how much map data I can download? Consult the manual? Give me a break.
I can imagine that MapSource may say to the GPS "I've got 36MB of data for you" only to have the GPS reply "Up yours, that is too much", in which case MapSource truly can't tell me how much map data would fit. Of course, that only shifts the blame from MapSource to the Vista -- Garmin is on the hook regardless. I think it is much more likely that MapSource knows exactly how much space is available for map data (which may be different from the total memory in the unit) and simply neglected to report it as part of the error message.
However, saving the track log turns out to be a *destructive* operation. I discovered this when I downloaded my saved tracks and saw that the active log was about 2400 points, while the saved track from the previous day was only 700 points. I knew I had covered about the same distance in about the same time on each day, so something funny was definitely going on. I had previously seen very poor track resolution when displaying tracks in MapSource, and I had a sinking feeling I knew what was going on.
I saved the active log and then cleared the active log and downloaded the saved tracks again. Lo and behold, the previously 2400 point active log had become a scant 700 points upon saving the log. Presumably Garmin deletes intermediate points on straight line paths, etc. But whatever the error metric is for deleting points from the track, on more than one occassion it has turned the log of a hike from a smooth and obvious path into a nearly incoherent scribble that skips over switchbacks and other important features. To add insult to injury, the tracks are mangled without any warning whatsoever. It's incredibly annoying that Garmin should see fit to treat my data with such complete disregard. A dialog announcing "Saved logs are resolution reduced from the active log, and the resulting track may be completely useless. Are you sure you would like to save the active log?" is certainly in order.
The only excuse I can think of for this deplorable behavior is memory pressure -- there simply isn't enough memory to be storing voluminous tracklogs while also providing a large map, etc. Perhaps some analysis will give us some more confidence in this hypothesis.
A point on a track will probably require about 16 bytes of storage, between latitude, longitude, elevation and time. Perhaps Garmin has found even more goodies to store, like compass heading, etc. Of course there is a great deal of coherence in this data (latitude and longitude change very slowly, the time of day changes deterministically, etc.) so it could be wonderfully compressed. But let's not make extra work for Garmin, and we're trying to see how they might have a storage problem, so let's give them the benefit of the doubt and say 24 bytes per track point.
A quick experiment can vet this assumption. Downloading a track log which totaled 7447 points required about 6 minutes at 9600 baud. That's enough time to transfer about 345K, which gives us 46 bytes per trackpoint. Hmmmm. About 2x larger than the largest reasonable point size I can think of, but okay. Garmin isn't a big fan of efficient protocols, so maybe the track points aren't that big. In any case, let's use 46 bytes per trackpoing as a certainly pessimistic working figure.
So a 2400 point active log requires 110KB to store. Obviously 15 such logs would require about 1.5MB to store. In a device with 32MB of memory. And a *great* deal of that memory may be available, depending on how much or how little map data has been downloaded to the device. Of course I think there's good reason to believe that Garmin's memory management isn't that sophisticated -- perhaps with good reason. It would be irritating to try to upload map data to the GPS only to be told that track data will have to be deleted to make space.
Regardless, the track data requires ridiculously little space, and doing a poor filtering of the track to try to save space was a horrible idea. Even worse, this track data could be easily compressed, I would guess by a factor of 5, *without deleting track points* to further reduce any memory pressure.
The first time I tried this system out in the field I ran into trouble. I started an upload to the Vista, and then started browsing a paper DeLorme atlas of the area while I waited (and waited). I forgot that my laptop was going to suspend after a few minutes of activity to conserve its battery.
What happened when the laptop suspended? The transfer to the GPS was interrupted and thus spoiled, so it would have to be repeated from scratch. When I unsuspended my laptop MapSource immediately crashed hard. I suspect that the USB to Serial dongle may behave a little strangely when the laptop suspends. For example, after resuming MapSource probably assumed that the serial port was still open, etc. However, the dongle may not have provided that interface. In which case MapSource would have encountered an error the next time it tried to use the serial port.
This isn't to say that MapSource is without blame here -- in fact the dongle may be operating exactly as it should. Regardless of how poorly behaved the dongle may be, MapSource should never crash. It should intelligently report the error it encountered, and in all likelihood it can just reopen the serial device and continue operating.
I think this is one of the few cases where I think Garmin has an at least plausible excuse. It's very likely that they've never tested their MapSource with the USB to Serial dongle I'm using. I'd be interested to know if they've tested the software under power suspend/resume, as obviously they should. Perhaps this is one for tech support.
Once I've hiked out the trail a fair piece it can be useful to now how far I've gone, so I'll know how much further I have to go to the end, whether I should turn around, etc. Garmin provides a feature that seems like it would do exactly this: you can "backtrack" along a track. The feature tells you how far from the start of the track you are and provides guidance to keep you on the track. Unfortunately this feature only supports backtracking along an entire track. So in my usual mode of operation I can only backtrack to my starting point for the day. It would be much more useful to be able to backtrack to a particular waypoint. In fact, part of the backtrack interface could present a selection dialog: "These waypoints are within 100 meters of your track. Select waypoint to backtrack, or start of track."
MapSource does a terrible job of rendering maps. I'm sure a Tufte
analysis of them could provide myriad reasons why they are a poor
representation, but I'll stick with the simplest reason: they are
incredibly difficult to read. I can't think of any possible reason
why. Garmin is not the first company to draw a map, there are
literally millions of examples of well-rendered maps that they could
have used for direction.
What is so bad about the maps?
For starters, there is almost no control over the amount of detail that is shown. There is a crude slider under the preferences which lets you vary the detail between "Low" and "High" but it's unclear, at least to me, what effect this as you vary the scale of the map (zoom in and out). With the detail turned all the way up there is a dizzying amount of information on the screen at times. Any detailed options for what to show, what not to show, are completely absent. Don't need to see the several thousands navigational buoys in the San Francisco Bay? Tough, Garmin has decided those are important. Don't want a map choking on topographic contours? Tough, Garmin likes those too. Want to see more street names? Tough, Garmin has thrown almost all of those out in order to force you to buy a different, and presumably equally bad, map product from them.
Next up, they draw detail roads (the vast majority of roads) as narrow
lines, regardless of scale. This makes the roads surprising hard to
see and follow in a field of much stronger lines. For example, the
topographic contours (which seem to *always* be displayed) include
some very heavy lines periodically.
What else? The text labels, which are mostly used for point features
in the topographic version (can't have you getting the street names
for free) include no haloing, so often the text is just a jumble of
thin text on top of other thin features.
While there's a ready hypothesis as to why the observed behavior exists, what astounds me is that the behavior was never corrected! We are several generations past x86 microprocessors which lack floating point support, so there is certainly no obvious reason to avoid the use of floating point. I suspect that the mistake was simply never observed, which seems astounding, given how incredibly slow the tranfers are. Of course, there is another, perhaps even more disheartening, possibility: the incorrect behavior was observed and not corrected.
Posted by Matthew Eldridge at February 9, 2004 04:57 AM
| TrackBack