Domain Model
GPS Essentials features a location based database that stores all your data into hierarchical streams.
Everything you store in GPS Essentials will end up in a so called stream. For example, when you are recording a track, GPS Essentials will append your current location to a specific stream every few seconds. When you are taking a picture, GPS Essentials will collect the image data, your location and the device orientation and append this data to a stream.
Streams are much like files in a text processing application. You can create, edit, export, duplicate and delete them, and the data that you create will reside in one and only one stream. A stream “owns” its nodes, so when you delete a stream you also delete all its nodes.
The things that you store into a stream are called “nodes”. A node can be anything from a simple latitude-longitude pair to a picture. Nodes have some common properties, such as their location, time, name and description. The app's help calls them elements.
Streams GPS Essentials Creates
Besides the streams that you create, there are some streams that GPS Essentials creates when required:
- Waypoints contains the waypoints that you create without choosing a stream.
- Pictures contains the pictures that you take without choosing a stream.
- Messages contains the messages that GPS Essentials writes, for example when a track recording or navigation starts or stops.
- Configurations contains your saved dashboard layouts.
- Lost & Found collects data that GPS Essentials recovers when it repairs the storage.
When you delete one of these streams, GPS Essentials will recreate it as necessary.
Categories
You can create categories within a stream to structure your data. The categories of a stream build a hierarchy so that every category has a parent and optional child categories. Every node is a member of one and only one category. Think of categories as the sections and chapters of a book. GPS Essentials also creates categories by itself, for example when you record a track or import data.
Nodes are ordered within a category. New nodes will append to the end of the category so that categories are initially ordered by time. You can drag nodes to a different position within a category to reorder the nodes. Notice that changing the sort criteria will not affect ordering, it will only present the nodes of a category in a different way. Order manifests in the database while sorting is a (volatile) presentation feature. In the app, the stored order is called “Natural”.
When you select nodes in a stream and delete them, they move to a category called Trash in the same stream. From there you can move them back, or clear the Trash to delete them for good.
Styles
Categories can style the nodes they contain. Styles are a set of attributes that tell GPS Essentials how to draw the nodes and set a line style to connect the nodes.
A style also defines the type of the category. The type of a category not only controls how the category will appear on a map, it will also tell GPS Essentials how to handle this category and its stream in various situations.
You can choose between the following category types:
| Style | Description |
|---|---|
| None | No style defined for this category |
| Sequence | A generic sequence of nodes |
| Route | The nodes are routing targets, an optional child polyline contains the track line. |
| Track | The nodes are a sequence of recorded locations. |
| Polyline | The nodes are points of a polyline |
| Polygon | The nodes are points of a polygon |
| Slippy Map | The nodes are map tiles of a slippy map |
| Assets | The nodes contain internal data such as icons |
The last two types are used internally by GPS Essentials.
Stream Type
The types of categories that are contained in a stream also define how the stream appears overall. GPS Essentials will apply the following rules in order to determine the stream type.
| Containing Types | Stream Type |
|---|---|
| Tracks and routes | Mixed |
| Tracks but no routes | Track |
| Routes but no tracks | Route |
| Slippy maps, but no tracks and no routes | Map |
A stream with none of these has no stream type. GPS Essentials works the type out again whenever the categories of a stream change. For example, when you add a track category to a route, the stream becomes Mixed. The filters in the stream list use the stream type: a Mixed stream shows under both All Tracks and All Routes.
Granularity
GPS Essentials gives you a lot of freedom when it comes to how you structure your data. You can put all your data into a single giant stream or you can work with many small streams.
For example, you can create a new stream for every route you create, but you could also decide to add multiple routes into different categories of a single stream.
Here are some thoughts about the impact of the level of granularity you choose:
Sharing works best with streams: Share in the stream list sends whole streams in one go. You can export parts of a stream, such as selected nodes or a single waypoint, but that takes a few more steps. If you share huge streams, the files get large, and you probably don’t want to give away all data in a specific scope. If you create many small streams, you will have to pick them one by one.
You can only star entire streams: Starring is a good way to make a stream visible on all maps. However, this will make the entire stream visible. If you have large streams, this will add many items to your map. If you create many small streams, you will have to star and unstar them one by one.