BaseCamp Database Concepts


Disclaimer: the following information does not come from Garmin. It has been derived from use of BC, observation of how BC works, and knowledge of the design and implementation of database-based software applications. It is an external description (a reverse-engineered 'specification' if you will); there is no knowledge of actual implementation. It is offered to provide a conceptual understanding of how things work in BC. An understanding of the 'spec' can help one use BC better and, hopefully, with less frustration. With that said, the following is believed to be true.

Basic Objects

BaseCamp uses a database to store the objects that it creates and manages on the user's behalf. There appear to be three types of fundamental objects: location, route, track.

BC is a database application. It consists of a number of 'objects' which are stored in the database and managed by the software.
  • A 'location' (or 'point') is one kind of object (e.g. waypoint). It has a name (of undetermined but finite length) and (probably) a lat/lon. There are other data associated with this kind of object (open its Properties to see them).
  • A 'route' is an object that consists of a start location and end location and information (from a map) which defines the path of how to get from the start to the end. It may also contain intermediate locations, some of which may be unnamed or invisible (via points, shaping points, etc). A route's Properties shows what other data are associated with it.
  • A 'track' is similar to a route, but consists of a series of points, directions and distances which define the path to be taken (map information not required).

Those three object types (location, routes, tracks) are basic items. There are likely other objects in the database that BC uses internally.

Naming Objects

Objects of the same type (e.g. location, route, track) must have unique names. However, an object of one type (e.g. location) can have the same name as an object of a different type (e.g. route).

Viewing Objects

Clicking on the MyCollection folder in the upper left pane will display all of the locations, routes, and tracks in the lower left pane of the display. Everything that you see in the bottom left pane of BC when you click on MyCollection is real; you are viewing all of the real individual items/objects you have created and that are in the BC database. You can think of MyCollection as the view of the entire database. Objects *only* reside in MyCollection. They are not physically anywhere else. (more on this in Organizing Data below).

Deleting Objects

When viewing MyCollection, if you right-click on any item you will see a delete option. Note, this delete option is for complete removal of that item from the BC database and all places that it is used.

Organizing Data - Lists and Folders

BaseCamp provides lists and folders to allow the user to organize and manage his/her data.

Lists

A List is a set of 'links' (i.e. references) to items in MyCollection. When you select and drag a location/route/track from MyCollection into a list, you are neither 'moving' nor physically 'copying' that object. You are creating a link which points to the real object in MyCollection. Regardless of in how many lists an object may seem to appear, there is really only one instance and it resides in MyCollection. When you have a list selected and are working "in" that list (i.e. creating waypoints and routes), BC actually creates the objects in MyCollection and automatically adds a link for that object to the list in which you are working.

Naming Lists

List names cannot be duplicated. That is, a list cannot have the same name as any other list, regardless of which folders the lists happen to be in. But a list can have the same name as a different object type (e.g. location, route, or folder).

Populating Lists

To get object links into a list you can: select the list, then create the object; select the list, then import the object(s); drag/drop the object there; right-click the object, select copy, select the target list, then paste. If you drag a folder to a list, then the basic objects in the list (locations, routes, tracks) are included in the list. Note, however, that if you drag List1 to List2, then List1 changes to a folder (with the same name) which now contains List2 (see: Moving Lists and Folders).

Viewing Lists

When you click on a list, what you see in the bottom left pane are the objects in MyCollection which have links in that list. You might think of the list as a 'view' or 'restricted view' of those particular objects in the database.

Removing objects from a list

When viewing a list, if you right-click on an item in the list you will see "Remove <object-name> from <list-name>". Selecting this option will remove the link to that object from this list only. It will not affect the real object nor its appearance in any other list.
However, you should also see the option "Delete". Selecting this option will delete the object from the BC database. BE CAREFUL! BC should warn you and ask for confirmation (but don't depend upon that). Be sure this is what you want to do.

Removing (deleting) a list

If you right-click on a list in the upper left pane, you are offered two choices: "Remove", and "Remove and Delete Unique Content".
Choosing Remove will delete the list (and all the links) but will *not* affect *any* of the objects referenced in the list. They remain in MyCollection and anywhere else they might be referenced. If you chose the other option (Remove and Delete Unique Content), then BC will *also* delete all the objects in this list which do not appear in any other list. This is an excellent way to clean up temporary or unwanted objects. You can create a list to do any kind of work that you want - test BC features, create and play with routes you are thinking about taking, whatever - and at the conclusion you can insure that none of that temporary or test data remains to clutter up MyCollection.

Folders

A Folder can contain lists and other folders. Its primary use is to allow the user to visually organize his/her data in ways meaningful to the user.

Naming Folders

Folder names cannot be duplicated. That is, a folder cannot have the same name as any other folder, regardless of which folders it happen to be in. But a folder can have the same name as a different object type (e.g. location, route, or list).

Populating Folders

Lists can be added to folders by using File|New, or by dragging an existing list to the folder. Folders can be added to folders in the same way.

Viewing Folders

When you click on a folder, what you see in the bottom left pane are all the basic objects (e.g. locations, routes, tracks) that appear in all of the lists and sub-folders contained in that folder. Again, think of it as a view into the database. Suppose you have lists named for Cities of Starbucks locations within those Cities. You might create Folders with names of States, and within each State folder have folders with names of Counties, and within those County folders have the City lists. If you click on a state folder, you will see all the Starbucks locations within that state. If you click on a county folder you see only the Starbucks locations in that county. And if you click on a city list you will see only the Starbucks locations in that city.

As another example, suppose you are taking a long trip and decide to create a list for each day's route, lodging, eating, and attractions. You would most likely create a folder (named after the ride) to hold those lists (named after each day of the ride). Clicking on a list shows you the objects for that day. Clicking on the folder shows you the entire ride - all the routes and locations appear in the lower left pane and on the BC map.

Removing objects from a folder

This works exactly as removing objects from a list.

Removing (deleting) a folder

This works exactly as removing/deleting a list.

Unlisted Data

The Unlisted Data folder is a 'system folder' which contains links to objects which are *only* in MyCollection and *not in any other list*. It provides a quick and convenient way to find lost or orphaned objects that perhaps are supposed to be in one or more lists, or which were supposed to have been deleted but were not.

Managing Data

Moving Lists and Folders

There is a difference between how the List/Folder structure is managed by BC, and how locations/routes/tracks in lists are treated. The three basic objects can be linked into multiple lists/folders. However, it appears that Lists and Folders can only appear in a single location in their hierarchy. That is, if you select and drag a list from Folder A to Folder B, then the list is actually moved. Unlike a location/route/track, a list cannot appear in multiple folders.

For example, suppose you have a set of locations that you want to be a part of every new trip that you create (e.g. "Home" and all your relatives houses). You can create and put them in a list called "Default_Locations". But when you create the lists/folders for your new trip, if you just drag the Default_Locations list there then the list itself will be moved there, not just the objects referenced in it. You have to select Default_Locations, then select all of its contents, then drag that selection to your new list/folder.

However, if you drag a *folder* into a list, then the basic objects in the folder will be added to the list without changing/moving the folder or its contents. So using the example above, create the list "Default_Locations" and put it in a folder named "Default_Locations". Then for each new trip/list you create, drag the Default_Locations *folder* to that list and all the locations appear in the new list.

Also, since a list cannot contain another list, if you *do* drag List X to List Y, then List Y will turn into Folder Y (the icon changes). This shows that the implementation of Lists and Folders is essentially the same. Perhaps Garmin introduced the concept of List separate from Folder indicates that they plan to offer more List functions later (e.g. a "copy contents" operation that could be used with the Default_Locations list above). Note, this is conjecture only.

Copying/Duplicating Objects, Lists, and Folders

In a computer file system, you can copy a file from one folder to another, and have two of them, each separate and distinct. You can change one without affecting the other. Not in BC. You do not create a duplicate when you copy an item from MyCollection into any list. Only links are made. So if you edit an item anywhere (in a list or in MyCollection), then the change is seen *everywhere*.

To get two distinct objects that are 'identical' (i.e. contain the same data values for all their properties) you could create each of them as separate items. For Example:
a. enter your address in the find address box.
b. create a waypoint from what it finds - call it HOME
c. clear the find box
d. enter your address in the find address box again.
e. create a waypoint from what it finds - call it Home (names are case sensitive)

You now have two distinct waypoints with different names, both of which define the same place (have the same GPS coordinates). But as far as BC is concerned, they are different items (objects in programming or database parlance). You can edit them independently; you can delete one without affecting the other. You can put both of them in the same list.

Right-click options

BC does give you an easier way to accomplish copy/duplicate. If you right-click on an object and you will see two options: copy, duplicate.
  • If you select Copy, then you can change your view to whatever other list/folder you wish and then Paste the object there. This is the equivalent of drag/drop - a link is created in the target folder/list and the object has the same name.
  • If you select Duplicate, then BC will create a new object "in the current location" with all of the same properties. That is, if you are viewing MyCollection, then the duplicate object will be created there. If you are viewing a list or folder, the duplicate object will be created in MyCollection and a link automatically added to the list or folder. Since object names must be unique, when you duplicate "Object" BC will name the new object "Object1".
You should experiment with using copy/duplicate on lists and folders to see exactly what is happening.

Summary

The description been a little loose in terminology (e.g. point, location, waypoint), and is certainly not to the standard of a formal spec. And there are some minor 'holes' in the description above. There are likely objects in the database which do not appear in the bottom left pane (e.g. via points and shaping points) but which are in fact part of objects which do appear there (i.e. routes and tracks). But things like that should not be a problem. Knowledge and understanding of the basic elements and relationships should enable users to organize and manage their data easier and to discover new ways of getting results in BC.