|  |  | Groups

## Groups

Groups are very useful in cataloguing the available data and in operating on sets of items. The possible operations are

- to forget items,
- to display/clear items on/from the map,
- to transfer items to/from the receiver or to/from a file,
- for a set of waypoints:
  - to define an average waypoint,
  - to change their position formats,
  - to compute clusters.

As groups are also used by GPSMan to present the results of a search as described below, searching for items is an effective way of creating a group with items that are then operated upon from the group window.

Groups can also be created for the items that are or are not currently displayed on the map. This is done using the `Make Group` entry of the `Items` menu-button on the map window.

When getting laps from the receiver, runs will be stored as groups.

A group contains a certain number of data items and is represented internally as set of item names (together with their types). Operations on a group may fail or only partially succeed if one of its elements is not currently in the data-base.

Groups can have other groups as elements but one group cannot be an element of itself even if indirectly (in technical terms: groups are well-founded sets).

Clearing from the map an item that belongs to a group that has been displayed will not affect the display-state of the group. To be sure that all the elements of a group are actually displayed, the user should clear the group from the map and then display it again.

Deleting from or adding items to a group will not affect their display-state.

Forgetting a group will delete permanently the group from the data-base but not its elements. This operation is not prevented by the fact that any of its elements cannot be cleared from the map.

Forgetting a group and all its elements will delete permanently not only the group but also all its elements (recursively, i.e., including the elements of groups in the group). The group is deleted even if some of its elements cannot be cleared from the map and is therefore not deleted.

Saving a group (to a GPSMan file) will save all the information on the group and on its elements.

Creating an average waypoint from the waypoints in a group can be made from the group window. The coordinates of the new waypoint will be the averages of the latitudes, longitudes and altitudes of waypoints in the group and its sub-groups (recursively).

Changing the data of waypoints in a group can also be made from the group window in what concerns:

- the symbol,
- the position format, or
- the datum.

All the waypoints in the group and its sub-groups (recursively) will change to the (same) selected value. If one of the waypoints is being edited, the edit window will also be changed. In the case of the position format or the datum the position will revert to its initial value (when the edit window was created). In the case of the symbol, the change will be reflected on the map if necessary.

Clusters of waypoints can be created from a group by taking the waypoints in it (and its sub-groups, recursively) as centres of the clusters and searching the data-base for waypoints that fulfil a selected condition for each centre. The conditions that can be tested are: that the waypoint is within a given distance range of the centre, or that the waypoint belongs to the quadrangle of given latitude and longitude ranges whose middle-point is the centre. It is obvious that the first condition will be much slower to evaluate than the second, and therefore making clusters based on quadrangles should be preferred when the number of waypoints currently defined is large. Each cluster will be created as a group: its name is of the form `Cluster` n, and its remark has the name of the centre and either the quadrangle dimensions, or the distance range.

Input/output operations on the elements of a group allow for selecting which items of which types to read or write. In general the user will choose the groups and the item types for the operation. Then GPSMan collects in a list the names of the items of the given types that belong to the selected groups. This list of names is used to perform the I/O operation.

Selecting the "Group" type means that the search for items will be done in the groups that are elements of the selected groups, recursively. In more technical terms, the resulting list may be seen as a flattening of the group structure. In no case the list of names will contain names of groups.

Details of each specific operation are as follows:

- in output operations, the "All" menu entry means that all groups will be considered. When saving or putting elements this also means that all suitable types should be considered.
- in input operations, there is the option of reading either the items whose names are not in the list of names GPSMan builds, or the items having the names in that list. The former is useful for preserving data in the selected groups; items that are not in the data-base will also be read in. The latter is useful for updating or restoring the information in the selected groups without affecting the other data; items that are not in the data-base will not be read in. All items of non-selected types will be discarded except waypoints belonging to routes if the route type was selected.
- when exporting or importing information to/in any foreign format with a single type per file, a single type (apart from "Group") must be chosen.
- when getting information from the receiver the "Track" type cannot be used as there is no point in updating or changing previously recorded tracks.

|  |  | Groups