This section contains timestamped geolocation data on groups, observers, and significant landscape features (groves, waterholes[124], and possibly other temporary or permanent landmarks), either recorded in a “quad” coordinate system or collected from GPS units. SWERB stands for Sleeping grove, Waterhole, End time, Ranging, and Begin time. Typically SWERB data are collected at hourly or half hourly intervals. Supporting information includes the locations of tree groves and waterholes. For more information see the Protocol for Data Management: Amboseli Baboon Project.
The quad coordinate system was devised prior to the incorporation of GPS technology into the data collection protocols. It is based on regular sub-divisions of the landscape into a grid of squares, 170 m per side. There is no altitude information associated with quad coordinate points. The IDs and coordinates of these quads are recorded in QUAD_DATA.
The GPS X and Y coordinates are in the WGS
1984 UTM Zone 37South coordinate
system. The units of these coordinates are meters, as is the
recorded altitude. The recorded precision of the X and Y values
include at most 1 non-zero digit to the right of the decimal
place, but when the coordinates were recorded using another system the
transformation to UTM may yield values with more digits to the
right of the decimal. X and Y coordinates must be on or within
the bounding rectangle having X coordinates between
42300.0 and 651000.0, inclusive, and Y
coordinates between 9497000.0 and 9894500.0,
inclusive. The system will generate a warning when the location
falls outside the bounding rectangle having X coordinates
between 277000.0 and 311100.0, inclusive,
and Y coordinates between 9689200.0 and
9709500.0, inclusive. The accuracy may vary; see the
Protocol for Data
Management: Amboseli Baboon Project for further information on accuracy at various
times. Altitude is in meters. Altitude values must be between
0 and 10000, inclusive. There must
be no (non-zero) digits to the right of the decimal place for
altitude measurements taken before 2004-01-01. After
2004-01-01 one digit may appear to the right of the
decimal place. The system will generate a warning when altitude
values are NULL
but X and Y coordinates are non-NULL
.
Some devices and data-exporting applications favor longitude and latitude coordinates via the WGS 1984 2D CRS. Because of this, Babase can read coordinates in that system and transform them to WGS 1984 UTM Zone 37South. Regardless of the coordinate system used when the data are inserted, the coordinates are recorded using UTM. That is, "XYLoc" columns in all Babase tables have the PostGIS "geometry" datatype with SRID 32737, that of WGS 1984 UTM Zone 37South.
All PDOP columns must have values between
0
and
50
, inclusive, and have one digit
of precision to the right of the decimal. PDOP values are
unit-less and should be multiplied by the specified accuracy in
meters of the GPS unit to produce a 3 dimensional vector, in
meters, representing the possible distance from the true
location.[125]
All accuracy columns are in meters[126] with one digit of precision to the right of the
decimal and must have values between
0
and
15
, inclusive.
The kind of reported error is partially determined by
characteristics of the the GPS unit used for data collection.
GPS units which report error as a PDOP reading, those with GPS_UNITS.Errortype
values of PDOP
, cannot be related
to rows with non-NULL
Accuracy values. GPS units which report
error as an accuracy reading, those with GPS_UNITS.Errortype
values of accuracy
, cannot be
related to rows with non-NULL
PDOP values. PDOP values must
be NULL
for data collected before 1993-09-01 or after
2001-01-31. Accuracy values must be NULL
for data
collected before 2001-02-01.[127] The system will report a warning when data
collected with a GPS unit supporting PDOP or accuracy does not
include, respectively, PDOP or accuracy values.
On 2000-05-02, the United States government ended its use of Selective Availability, a national security measure which intentionally lowered the accuracy of GPS signals. For more information about this, see Selective Availability on GPS.gov. The GPS accuracy indices in Babase (Accuracy and PDOP) do not and cannot account for this inaccuracy, so users should be aware that any GPS data collected through 2000-05-02 are likely less accurate than indicated.
GPS data between May and August 2019 are unreliable, apparently thanks to some issues with the European Union's Galileo satellites. See the SWERB Notebook for more information and documentation of this issue.
Starting 2004-01-01, GPS data began to be
downloaded directly from the GPS units instead of being
transcribed by hand. One consequence is that starting
2004-01-01 operators entered up to 10
characters of descriptive codes with each GPS waypoint taken.
This information is processed and distributed throughout the
SWERB data but the various Garmincode columns retain the raw
data as entered by the operator.[128] Before 2004-01-01 the Garmincode columns
must contain a NULL
. On or after this date the Garmincode
columns must not be NULL
, but may be a string 0 characters
long.[129] SWERB_DATA are the exception to
this rule and may always be NULL
. Begin and end rows, rows
with a SWERB_DATA.Event values of
B
or
E
, may have NULL
Garmincode columns regardless of date so
that the data entry staff may supply begin and end rows without
X and Y coordinates should the field team forget to record a
begin or end row. Other SWERB_DATA rows are
except from the Garmincode requirement to handle situations,
notably those which involve lone animals, where data was written
manually for some reason.
Before 2004-01-01 the GPS_Datetime columns must be
NULL
. The date portion of the GPS_Datetime columns must
correspond to the date related to containing row. The time
portion of the GPS_Datetime column is not validated, although
the time portion of the GPS_Datetime value occasionally serves
as data against which other columns are validated.
The Garmincode and GPS_Datetime columns may be NULL, without warning, no matter the date. This is to accommodate the manual recording of data taken using GPS units.[130]
Data is validated per-observation team, per-group, per-day. Data upload and maintenance must be done within transactions that produce valid per-observation team, per-group, per-day data sets.
Note that it may be more convenient to use the views that support the SWERB data than to access the raw data.
This table contains one row for every aerial photo used in the specification of map quadrant system used in the early SWERB data.
A unique identifier of the aerial photo. This is an integer greater than or equal to 1. It is used to refer to a particular aerial photo.
This column may not be NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for each GPS unit which has been used in the field.
In actual fact early records of unit identification may have been lost. In such cases a row in GPS_UNITS represents a number of units having the same capabilities (i.e. of the same make and model).
The date the unit was first used (Start) must be on or before the date the unit was last used (Finish).
The label on the GPS unit, the Label value must be unique within the time period in during which the GPS unit was in use, between the Start and Finish dates, inclusive.
A 2 digit non-negative numeric value that identifies the GPS unit as a distinct object throughout all time.
This column may not be NULL
.
A short textual description of the GPS unit. If necessary this may include additional notes on such details as when the unit was used, its purpose, and so forth.
This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character. This column may not be NULL
.
The manufacturer of the GPS unit.
This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character. This column may not be NULL
.
The model of the GPS unit. This should be sufficiently detailed that the technical specifications of the unit can be found given this information.[131]
This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character. This column may not be NULL
.
The type of error the unit reports. This must be one of:
PDOP
The error is supplied as positional dilution of position.
accuracy
The error is in meters.
See the SWERB Data overview for more information.
This column may not be NULL
.
The letter code marked on the unit. Note that this information is not enough to uniquely identify the unit because the same letter codes have been used on different units at different times.
This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character. This column may not be NULL
.
The date the GPS device entered service. This date
cannot be before 1993-09-01, the date GPS units were
first used. This column may not be NULL
.
The date the GPS unit was taken out of service. This
column may be NULL
when the unit is still in
service.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
The QUAD_DATA table contains one row for every map quadrant. For more information, see above in the introduction to the SWERB data.
Before these quads were delineated on 1981-11-01, large scale aerial photographs were used to signify location in SWERB data.
The QUADS view can be used to maintain the QUAD_DATA table. This view may also be more useful than the table when querying.
The unique identifier code used to refer to a
particular map quadrant.[132] This column may not be NULL
.
The X and Y WGS
1984 UTM Zone 37South coordinates of the centroid of
the map quadrant. This column may be NULL
.
See the SWERB Data overview for more information.
Code indicating the aerial photo in which the map quadrant is located, if any. Must be a value on the AERIALS table.
This column may be NULL
when there is no aerial
photo for the map quadrant.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for every uninterrupted bout of group-level observation for which there is SWERB data.
Start and Stop values are automatically assigned
the SWERB_DATA.Time value from the related SWERB_DATA row with an Event value of
B
and
E
rows, respectively. The
begin and end of the bout of observation is determined by
the begin and end rows entered in the field (or determined by
the data manager).
Start must be NULL
or be
after the related SWERB_DEPARTS_DATA.Time, if any.
The Start value records the
start of the day's observation of the group when there exists
a related SWERB_DATA.Event value of
B
and that value is the
first for that group/day and there is no earlier SWERB_DATA.Event
E
value. Likewise the Stop value records the end of the day's
observation of the group when there exists a related SWERB_DATA.Event
value of E
and that value is
the last for that group/day and there is no later SWERB_DATA.Event
B
value. The Start time cannot be after the Stop time.
The Btimeest value is only meaningful when
either there is a begin time value or when investigation of
existing records indicates that no record of a begin time on
file -- when either the Start time
value is non-NULL
or the Bsource
value is NR
. The Etimeest value is only meaningful when
either there is an end time value or when investigation of
existing records indicates that no record of an end time on
file -- when the Stop time value
is not NULL
or the Esource value
is NR
. When the values in these
columns are meaningful they must contain a non-NULL
value,
otherwise they must contain a NULL
value.[133]
When the source of the start or stop time is
NR
then the estimated time flag
must be FALSE
and the time must be NULL
.[134][135] It is required that there be a record of whether
the start and stop times are estimated when there are start
and stop times -- the Start and
Stop columns cannot be non-NULL
when the Btimeest and Etimeest columns, respectively, are
NULL
.[136] It is required that there be a record of the
source of the start and stop times when there are start and
stop times -- the Bsource and
Esource values must be NULL
unless, respectively, the Btimeest
and Etimeest values are
non-NULL
.
SWERB_BES rows are automatically sequenced when no Seq is specified[137]by Start value,
unless the Start value is NULL
in which case they are sequenced last of all existing
SWERB_BES rows for the group/day when initially inserted and
otherwise not automatically sequenced.[138] In the case of a tie the automatic sequencing
places the newly inserted row[139] last among the rows that are tied. Seq values may be manually assigned so
long as the manual sequencing does not result in
out-of-order Start values, or in
those cases where Start is
NULL
, so long as the manually assigned sequence number is
less than or equal to that which would be automatically
assigned.[140]
As expected, changing the Start value (via a SWERB_DATA row with an Event value which indicates the start of observation) will automatically change the Seq value. Should there be other SWERB_BES rows for that group/day with the same SWERB_BEs-Start value the newly changed row will be be sequenced after the existing rows.[141]
Every bout of observation must have exactly one
beginning -- there must be exactly one related row on
SWERB_DATA with an Event of
B
. Every bout of
observation must have exactly one end -- there must be exactly
one related row on SWERB_DATA with an Event of
E
. These requirements are
enforced on transaction commit, so the
SWERB_BE row and the begin and end SWERB_DATA rows must all be created within a
single transaction. The system will
generate a warning when there are no observations in a bout of
observation -- when there are no related SWERB_DATA rows with Event values other than
B
and
E
.
The focal group, Focal_grp, must be in existence, based on GROUPS.Start and GROUPS.Cease_To_Exist, on the date of the observation.
A unique identifier. This is an automatically generated sequential number that uniquely identifies the row and may be used to refer to a particular bout of uninterrupted observation.
This column is automatically maintained by the
database[142], cannot be changed, and must not be
NULL
.
The id of the SWERB_DEPARTS_DATA row
representing the departure from camp of the observation
team. This column cannot be changed.[143] This column must not be NULL
.
The group under observation. The legal values for
this column are from the Gid column
of the GROUPS table. This column cannot
be changed.[144]This column may not be NULL
.
The time the bout of observation started. The time
may not be before 05:00
and may
not be after 20:00
. The time must
be on the minute mark; the seconds must be zero. This
column may be NULL
when the start of observation is
unknown.
TRUE
when the Start
value is an estimation of the time the daily observation of
the group began. FALSE
otherwise. This column should be
NULL
when the Start time is
the start of a uninterrupted bout of observation but is not
the start of the day's observation of a group.
The source of the data used to estimate the Start value when that value is
estimated and represents the start of the day's observation
of the group -- how the start of the daily observation of
the group was estimated. The legal values of this column
are defined by the SWERB_TIME_SOURCES
table. This column must be NULL
when the Start time is the start of a
uninterrupted bout of observation but is not the start of
the day's observation of a group.
The time the bout of observation ended. The time may
not be before 05:00
and may not
be after 20:00
. The time must be
on the minute mark; the seconds must be zero. This column
may be NULL
when the end of observation is unknown.
TRUE
when the Stop value
is an estimation of the time the daily observation of the
group began. FALSE
otherwise. This column should be
NULL
when the Stop time is the
end of a uninterrupted bout of observation but is not the
end of the day's observation of a group.
The source of the data used to estimate the Stop value when that value is
estimated and represents the end of the day's observation of
the group -- how the end of the daily observation of the
group was estimated. The legal values of this column are
defined by the SWERB_TIME_SOURCES table.
This column must be NULL
when the Stop time is the end of a
uninterrupted bout of observation but is not the end of the
day's observation of a group.
A sequence number indicating the ordering of the bouts
of uninterrupted observation of each group each day. The first
bout of observation for the group for the day has a Seq
value of 1
, the second a value of
2
, etc.
The system automatically re-computes Seq values to
ensure that they are contiguous and begin with
1
. See the overview of the SWERB_BES table and the Automatic Sequencing section for further
information.
A boolean value. TRUE
means that the bout of
observation counts toward total observer effort. FALSE
means that the bout is concurrent with another bout of
observation by the same team and should not count toward
observer effort.
This column cannot be NULL
.
Notes, if any, on the bout of observation. This column may not be empty, it must contain characters, and it must contain at least one non-whitespace character.
This column may be NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for every event related to group-level geolocation.[145]Such events geolocate a group upon the occurrence of a significant activity, including but not limited to ascent, descent, and drinking. Other events include geolocation at regular intervals and the begin and end of each bout of uninterrupted observation.
The typical Babase user may find the SWERB view to be easier to query than SWERB_DATA and its related tables. It may be easier to use the SWERB_DATA_XY view to maintain SWERB_DATA than it is to modify the table content directly.
Rows with an Event value of
O
or
P
are not part of an
observation bout of the focal group and so, unless the
observed group is a Subgroup[146] or is the unknown group[147], must have a Seen_grp
value which differs from that of the group under observation
-- the SWERB_BES.Focal_grp value of the related SWERB_BES row. Likewise, rows which do not have
an Event value of
O
or
P
must have a Seen_grp value of the group under
observation -- a value which equals the SWERB_BES.Focal_grp
value in the related SWERB_BES
row.[148]The system will generate a warning when the SWERB_DATA row is for a non-focal group and the
observed group is a subgroup and the observed group is the
same as the focal group -- when Event is
O
and Subgroup is TRUE
and SWERB_DATA.Seen_grp
is the same as the related SWERB_BES.Focal_grp.
Per bout of observation, per BEId, there must be exactly one
SWERB_DATA row recording the start and exactly one recording
the finish of the bout -- exactly one SWERB_DATA row having an
Event value of
B
and exactly one having a
E
value, respectively.
The time of the observation must be between the start
and stop times of the bout of observation -- the Time value must be between (inclusive)
the related SWERB_BES.Start and SWERB_BES.Stop values.
Because SWERB_BES.Start may be NULL
the Time value is also checked to be sure
that it's not before the time the observation team departed
from camp, before SWERB_DEPARTS_DATA.Time. Because SWERB_DEPARTS_DATA.Time may also be NULL
the
Time value is checked to be sure
that it is not before 05:00. Because SWERB_BES.Stop may be
NULL
the Time value is checked
to be sure that it is not after 20:00.
The date portion of the GPS_Datetime value must be the date of the observation team's departure from camp -- must equal the related SWERB_DEPARTS_DATA.Date value. The waypoint time recorded by the operator cannot be more than 15 minutes before the actual time the observation was taken -- the Time value cannot be more than 15 minutes before the time portion of the GPS_Datetime value. The exception to this rule is when a group drinks from a water hole; for these water hole events, the waypoint time cannot be more than 30 minutes minutes before the actual time the observation was taken. The waypoint time recorded by the operator cannot be more than 5 minutes after the actual time the observation was taken -- the Time value cannot be more than 5 minutes after the time portion of the GPS_Datetime value.
The Quad column records
group location based on map quadrants and is used only in
older data. Data recorded after 1994-09-30, rows
associated with SWERB_DEPARTS_DATA rows with
Date values after
1994-09-30
, must have NULL
Quad values. GPS units were used in
later SWERB data collection so data recorded before
1993-09-01, rows associated with SWERB_DEPARTS_DATA rows having Date values before
1993-09-01
, must have NULL
XYLoc values.
Only data collected using GPS units have altitude, PDOP,
accuracy, a GPS timestamp, or Garmincode values -- when the
XYLoc column is NULL
then the
Altitude, PDOP, Accuracy GPS_Datetime, and Garmincode values must also be
NULL
.
The observed lone animal must be NULL
unless the
waypoint is an observation of a lone animal/non-focal group
— Lone_Animal must be
NULL
unless Event is
O
.
An other group observation of an unknown lone animal
is recorded in a SWERB_DATA row having a NULL
Lone_Animal value and a Seen_grp value of
10.0
(the group denoting a lone
animal).
The observed predator must be NULL
unless the waypoint
is an observation of a predator — the Predator must be NULL
unless the
Event is
P
, in which case the Predator must not be NULL
.
The observer's distance from the observed lone animal,
predator, or non-focal group must be NULL
unless the
waypoint is an observation of a lone animal, predator, or
non-focal group -- Ogdistance
must be NULL
unless Event is
O
or
P
.
Through the end of 2022, the observers' protocol for
recording this distance was either been poorly defined or
poorly adhered-to. (It is unclear which.) Distances were
occasionally recorded but usually not. It is unclear what
decisions were made at the time that might decide whether or
not to record this distance. To avoid fallacious assumptions
about the nature of the data, all distances recorded before
01 Jan 2023 have been manually set to NULL
.
In case someone wants to use the SWERB_DATA_HISTORY
table to retrieve the once-present distances, they were set
to NULL
at 2023-03-22
00:20:44.206126+03
(Nairobi time).
The observed group, Seen_grp, must be in existence, based on GROUPS.Start and GROUPS.Cease_To_Exist, on the date of the observation.
An observed lone animal, Lone_Animal, must have already entered the study population and must be alive on the date of observation -- the SWERB_DEPARTS_DATA.Date related to the SWERB_DATA row must be between individual's related Entrydate and Statdate, inclusive. The system will return a warning if the related Date is before the individual's LatestBirth.
The system will generate a warning if a lone animal is a male and is observed more than 60 days before his assigned dispersal date -- before DISPERSEDATES.Dispersed.
When a lone individual is observed, the observed group
must be the group reserved for lone animals -- when
SWERB_DATA.Lone_Animal is
non-NULL
then SWERB_DATA.Seen_grp must be
10.0
.
Interpolation does not reference SWERB data when making its computations. Consequently the MEMBERS table does not reflect SWERB sightings of lone individuals -- unless those sightings are otherwise recorded in the DEMOG table.
When a predator is observed, the observed group must be
the group reserved for predator sightings -- when
SWERB_DATA.Predator is non-NULL
then SWERB_DATA.Seen_grp must be
99.0
.
It is not possible from these data to determine the number (quantity) of predators observed. Information like this is recorded, but not in the GPS units[149]. See the Amboseli Baboon Research Project Monitoring Guide for more information.
A unique identifier. This is an automatically generated sequential number that uniquely identifies the row and may be used to refer to a particular GPS event.
This column is automatically maintained by the
database, cannot be changed, and must not be NULL
.
The id of the SWERB_BES row
representing the bout of uninterrupted observation of which
the SWERB_DATA row is a part. This column cannot be changed
and must not be NULL
.
The group under observation. Note that this is not always the focal group which the observation team set out to observe. For further details see the Protocol for Data Management: Amboseli Baboon Project. The legal values for this column are from the Gid column of the GROUPS table.
This column may not be NULL
.
The BIOGRAPH.Sname of the observed lone animal.
This column may be NULL
to indicate either that a
lone animal was not observed or that an unknown lone animal
was observed.
A code indicating what sort of event the row represents. The following codes are defined:
B
The row represents the beginning of a bout of uninterrupted observation of the focal group.
E
The row represents the end of a bout of uninterrupted observation of the focal group.
H
The row represents an observation of the focal group. These occur on half hourly or hourly intervals, depending on the protocol used to record the data.
W
The row records the focal group's drinking.
O
The row represents the observation of a non-focal group or lone animal.
P
The row represents a sighting of a predator.
This column may not be NULL
.
The time of the observation. This is usually the time
manually entered by the observer but in those cases where
the observer does not enter a time (such as begin and end
rows) the SWERB_UPLOAD view may use GPS
supplied information to calculate a time. See the section
on the SWERB_UPLOAD.Description column. The time must
be on the minute mark; the seconds must be zero. This
column may be NULL
when the time is not known.
The map quadrant of the seen group's location, when recorded in the field. The legal values for this column are from the Quad column of the QUAD_DATA table.
This column may be NULL
.
The X and Y WGS
1984 UTM Zone 37South coordinates of the seen group. This
column may be NULL
.
See the SWERB Data overview for more information.
The altitude, in meters, of the landscape on which the
seen group is
located. This column may be NULL
.
See the SWERB Data overview for more information.
The amount of error reported as positional dilution of
precision. This column may be NULL
when there is no PDOP
information.
See the SWERB Data overview for more information.
The accuracy of the GPS reading, in meters. This
column may be NULL
when there is no accuracy information
in meters.
See the SWERB Data overview for more information.
TRUE
when the observation is of a subgroup, FALSE
when not.
Note that the field team cannot always record subgroup information and the value in this column is therefore sometimes determined heuristically[150] when the data is uploaded by the SWERB_UPLOAD view.
This column must not be NULL
.
The distance, in meters, between the observer and the
observed non-focal group or the observer and the observed
lone animal. This value must be a 3
digit non-negative integer that is also a mulitple of
0
.
This column may be NULL
when the observers did not
record an Ogdistance (i.e. NULL
values are not to be
confused with zero distance).
The date and time automatically supplied by the GPS
unit at the time the waypoint was recorded. For further
information on when this column is NULL
and when
non-NULL
see the SWERB Data
overview.
This column may be NULL
.
The information manually entered by the observer into
the GPS unit as a coded waypoint that describe the SWERB
data being recorded. This column may be empty, it need not contain characters,
but it may not contain only whitespace characters. For further
information on when this column is NULL
and when
non-NULL
see the SWERB Data
overview.
This column may be NULL
. See the SWERB Data
overview for more information.
The PREDATORS.Predator code of the observed predator.
This column may be NULL
, when this row is not for a
predator sighting.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for every departure from camp of every observation team, for those observation teams which have collected SWERB data.
The Time value may
not be NULL
when there is a related SWERB_DEPARTS_GPS row -- data collected using the
GPS units must have a non-NULL
time.
One observer may not depart camp on the same day at the
same time with two different observation teams -- the
combination of SWERB_DEPARTS_DATA.Date, SWERB_DEPARTS_DATA.Time, and SWERB_OBSERVERS.Observer, when all are non-NULL
,
must be unique.
The system will generate a warning for SWERB_DEPARTS_DATA rows having a Date after 1994-09-30 that do not also have a related SWERB_DEPARTS_GPS row.
The system will generate a warning for SWERB_DEPARTS_DATA rows for which no SWERB data was collected; that do not have a related SWERB_BES row.
The SWERB_DEPARTS view can be used to maintain the SWERB_DEPARTS_DATA table. This view may also be more useful than the table when querying.
At the time of this writing departure data prior to about March of 2011 is not in the database. The process involved in loading historical data fabricates (departure date excepted, the actual departure date is used) the minimal required departure information. The early process used by the Data Manager involving loading data from the GPS units sometimes involved removing departure information. For further information and exact dates see the Data Manager's [Process for Uploading SWERB] document.
A unique identifier. This is an automatically generated sequential number that uniquely identifies the row and may be used to refer to a particular departure from camp of a particular observation team.
This column is automatically maintained by the
database, cannot be changed, and must not be NULL
.
The time of departure. The time may not be before
04:00
and may not be after
20:00
. The system will generate a
warning if the time is before
05:00
or after
14:30
. The time must
be on the minute mark; the seconds must be zero. This
column may be NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for every departure from
camp of every observation team, for those observation teams
which have collected SWERB data using GPS units. This table
is an extension of the SWERB_DEPARTS_DATA
that contains the additional information collected when a GPS
unit is used to record the departure. There is at most one
row in this table for every row in SWERB_DEPARTS_DATA. When a row exists it contains
the information involving the GPS unit used by the observation
team on that day. All SWERB_DEPARTS_DATA
rows having associated SWERB_DEPARTS_GPS rows must have SWERB_DEPARTS_DATA.Date values on or after
1993-09-01
.
The date of departure (SWERB_DEPARTS_DATA.Date) must be between the SWERB_DEPARTS_GPS' Start and Finish dates, inclusive.
The SWERB_DEPARTS view can be used to maintain the SWERB_DEPARTS_GPS table. This view may also be more useful than the table when querying.
The system will generate a warning when there is more than one departure per GPS unit per day.
The id of the SWERB_DEPARTS_DATA row
representing the departure from camp of the observation
team. This column cannot be changed and must not be
NULL
.
The X and Y WGS
1984 UTM Zone 37South coordinates at departure. This
column must not be NULL
.
See the SWERB Data overview for more information.
The altitude in meters of the GPS unit. This column
may be NULL
.
See the SWERB Data overview for more information.
The error reported as positional dilution of
precision. This column may be NULL
.
See the SWERB Data overview for more information.
The error reported in meters. This column may be
NULL
.
See the SWERB Data overview for more information.
The identifier of the GPS device (the GPS_UNITS.GPS) used by the observation team. The legal values of this column are defined by the GPS_UNITS support table.
This column must not be NULL
.
The information manually entered into the waypoint by
the observer. This is a set of, mostly, single character
codes that describe the SWERB data being recorded.
This column may be empty, it need not contain characters,
but it may not contain only whitespace characters. For further information on when this column
is NULL
and when non-NULL
see the SWERB Data overview.
This column may be NULL
. See the SWERB Data
overview for more information.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for every geolocated physical object, that is, for every grove and waterhole.[151]
This table may contain one row with special meaning.
The SWERB_GWS row with a Loc
value of UNK
represents
the unknown grove -- a grove with special properties. When a
SWERB_GWS row exists with a SWERB_GWs-Loc value of
UNK
then the Type value must be
G
(grove). No trees
may be located in the unknown grove -- TREES.Loc may not be
UNK
. The unknown grove
may not be located anywhere -- SWERB_GW_LOC_DATA.Loc may not be
UNK
. And when it is not
known where a group slept there can be no uncertainty
regarding the sleeping grove -- when SWERB_LOC_DATA.Loc is
UNK
then SWERB_LOC_DATA.Loc_Status
must be C
(certain).
SWERB_GWS rows that represent groves, those with a
SWERB_GWs-Type of G
,
have restrictions on the allowed Loc values due to the data structure
supplied the SWERB_UPLOAD view (the Name column sometimes contains a
grove code prefaced with the letter
“P”). There cannot be two
codes for groves, one which begins with the letter
“P” and another which
consists entirely of the same characters as the first but with
the initial “P”
omitted.[152] Because of this restriction the Babase
administrator is the only user allowed to create Loc values which begin with the letter
“P”.
With the exception of the unknown grove, the system will report a warning when the grove or waterhole has not been geolocated -- when there is no related SWERB_GW_LOC_DATA row.
A unique identifier. Up to 4 alphanumeric non-lowercase characters that uniquely identifies the row and may be used to refer to the grove or waterhole.
This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character. This column cannot be changed and must not
be NULL
.
The type of place; whether grove, waterhole, or some other landmark. The legal values for this column are from the Place column of the PLACE_TYPES (codes for various landscape features) table.
This column must not be NULL
.
Up to 20 characters of alternative name for the grove or waterhole.
This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character. This column may be NULL
.
The date when the grove or waterhole was named. This
date cannot be before
1981-11-01
.
This column must not be NULL
.
The date of last known use after which the resource became permanently unavailable.
This column may be NULL
when observations are
ongoing or the row represents an object that cannot become
unavailable.
Textual notes on the grove or waterhole, if any.
This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character. This column may be NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for each time a location of a place, a grove or waterhole is recorded. Any given grove or waterhole may have its location recorded more than once.
The typical Babase user may find the SWERB_GW_LOCS view to be easier to query than SWERB_GW_LOC_DATA and its related tables. It may be easier to use the SWERB_GW_LOC_DATA_XY view to maintain SWERB_GW_LOC_DATA than it is to modify the table content directly.
The date related to the location (SWERB_GW_LOC_DATA.Date) may not be before the grove or waterhole was first observed, may not be before the related SWERB_GWS.Start value. The date related to the location (SWERB_GW_LOC_DATA.Date) may not be after the grove or waterhole ceases existance, may not be after the related SWERB_GWS.Finish value.
The Quad column
records group location based on map quadrants and is used only
in older data. Data recorded after 1994-09-30, rows with
Date values after
1994-09-30
, must have NULL
Quad values. GPS units were used in
later SWERB data collection so data recorded before
1993-09-01, rows having Date values before
1993-09-01
, must have NULL
XYLoc values, unless the UTM XY
coordinates were obtained through other means (XYSource is non-NULL
).
There can only be a source for the recorded X and Y
coordinates when there are recorded UTM coordinates -- the
XYSource value may be
non-NULL
only when XYLoc
is non-NULL
. There must be X and Y UTM coordinates when
there is a recorded source for the X and Y coodinates -- XYLoc must be non-NULL
when
XYSource is
non-NULL
.
Only data collected using GPS units have altitude, PDOP,
accuracy, and GPS values -- when the XYLoc column is NULL
then the
Altitude, PDOP, Accuracy, GPS values must also be
NULL
.
The GPS unit used to make the observation must be in service on the date of the observation -- the date of the observation (Date) must be between the SWERB_DEPARTS_GPS' Start and Finish dates, inclusive, of the related GPS_UNITS row.
A unique identifier. This is an automatically generated sequential number that uniquely identifies the row and may be used to refer to an observation which recorded the location of a particular grove or waterhole.
This column is automatically maintained by the
database and must not be NULL
.
The SWERB_GWS.Loc of the grove or waterhole associated with the recorded location.
This column must not be NULL
.
The date related to the location. This is either the
date the location was caculated or an observation date. See
the Protocol for Data
Management: Amboseli Baboon Project for further information. This column must
not be NULL
.
The time of the observation. When the data are taken
with a GPS unit this is the time recorded by the GPS unit.
The time cannot be before 05:00
and cannot be after 20:00
. The
time must be on the minute mark; the seconds must be zero.
This column may be NULL
when the time is not known.
The map quadrant of the grove or waterhole's location, when recorded. The legal values for this column are from the Quad column of the QUAD_DATA table.
This column may be NULL
.
The source of the UTM coodinate data. The legal values for this column are from the XYSource column of the SWERB_XYSOURCES (SWERB Time Sources) table.
This column may be NULL
.
The X and Y WGS
1984 UTM Zone 37South coordinates of the grove or
waterhole. This column may be NULL
.
See the SWERB Data overview for more information.
The altitude, in meters, of the grove or waterhole.
This column may be NULL
.
See the SWERB Data overview for more information.
The error reported as positional dilution of
precision. This column may be NULL
when there is no PDOP
information.
See the SWERB Data overview for more information.
The error reported in meters. This column may be
NULL
when there is no accuracy information in
meters.
See the SWERB Data overview for more information.
The identifier of the GPS device (the GPS_UNITS.GPS) used in the observation. The legal values of this column are defined by the GPS_UNITS support table.
This column may be NULL
.
See the SWERB Data overview for more information.
Textual notes regarding the record of the grove or waterhole's location, if any.
This column may not be empty, it must contain characters,
and it must contain at least one non-whitespace character. This column may be NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row every time a group is observed at a geolocated physical object, i.e. at a grove or a waterhole or, possibly, some other physical landmark.[153]
SWERB_LOC_DATA rows must place a group at a single location -- each SWERB_DATA row has at most one related SWERB_LOC_DATA row. In effect, SWERB_LOC_DATA extends SWERB_DATA with additional columns.
Descent from, or ascent into, groves is indicated in the
ADcode column. To indicate a
descent, the ADCode value must relate to an ADCODES row a ADN value
of D
. To indicate an ascent, the ADCode
value must relate to an ADCODES row a ADN value of A
.
The observations recording descent from or ascent into
sleeping groves must be related to groves (the related SWERB_GWS rows must have a Type of
G
).
The SWERB_DATA row representing the
"begin" of the team's first bout of observation (the bout with
the smallest SWERB_BES.Seq value) of any group (except the
unknown group, group
9.0
)[154] in a day must be related to a SWERB_LOC_DATA row
recording descent from a sleeping grove. This enforces the
requirement that a day's observations of a group must include
the group's descent from exactly one
grove (possibly the unknown grove). A group can be recorded
as descending from more than one grove, but only when all of
the descents are by subgroups (the related SWERB_DATA.Subgroup
is TRUE
), or all but one of the descents are by subgroups
and those subgroup descents are from the
unknown grove.
Similarly, the SWERB_DATA row
representing the "end" of the team's final bout of observation
(the bout with the greatest SWERB_BES.Seq value) of any group (except the
unknown group, group
9.0
)[155] in a day must be related to a SWERB_LOC_DATA row
recording ascent into a sleeping grove. This enforces the
requirement that a day's observations of a group must include
the group's ascent into exactly one grove
(possibly the unknown grove). A group can be recorded as
ascending into more than one grove, but only when all of the
ascents are by subgroups (the related SWERB_DATA.Subgroup
is TRUE
), or all but one of the ascents are by subgroups and
those subgroup ascents are into the unknown grove. The
database rules that enforce these "ascent into sleeping grove"
rules are checked at transaction
commit.[156]
When a group splits into subgroups and descends from or ascends into multiple groves there must be a separate bout of observation, another SWERB_BES row, to record the location of each subgroup.
Whether a SWERB_LOC_DATA row must have a NULL
ADtime value or must have a
non-NULL
ADtime value is
determined by the related ADCODES.Time flag.[157] Ascent and descent times related to a bout of
observation cannot be before the beginning of the bout of
observation -- SWERB_LOC_DATA.ADtime cannot be before the related
SWERB_BES.Start
time.[158] The database rules that enforce ADtime values are checked at transaction commit.[159]
Descent and ascent times are recorded manually; they are not taken from the timestamps supplied by the GPS units. This necessitates additional columns for descent and ascent information. For further information see the Amboseli Baboon Research Project Monitoring Guide.
When the location is the unknown grove, status of that
location must be 'certain'. That is, when the Loc value is
UNK
then the Loc_Status value must be
C
.
Babase allows SWERB data to record group presence at
arbitrary landmarks, but some possibilities are rare and
result in a warning. The system will issue a warning when a
group is located at a waterhole but the recorded activity is
not “water” (when the SWERB_GWS
row's Type is
W
but the related SWERB_DATA row's Event value is not
W
).
SWERB_DATA rows representing
observation of a group drinking at a waterhole must be related
to waterholes. That is, when SWERB_DATA.Event is
W
there must be a related
SWERB_GWS row, even if it is the generic and
non-specific row which represents all rainpools, and the
related SWERB_GWS row must have a Type value of
W
. In some cases this
check is at transaction commit time and in
other cases not.
Rows that record a drinking event -- those related to
SWERB_DATA rows which have
W
Event values -- must have
SWERB_LOC_DATA.ADcode values
that indicate no involvement with a sleeping grove; the
related ADCODES row must have a ADN value of
N
.
Groups may not be located at a place before observations began at the place or after observations ended at the place. That is, the SWERB_DEPARTS_DATA.Date related to the SWERB_DATA row referenced by the SWERB_LOC_DATA.SWId value must not be before the related SWERB_GWS.Start value and must not be after the related SWERB_GWS.Finish value.
The number that uniquely identifies the row and may be used to refer to an observation of a group at a particular time at a particular grove or waterhole. This is also the SWERB_DATA.SWId identifying the group, place, and time of the observation.
This column must not be NULL
and cannot be
changed.
The SWERB_GWS.Loc of the object (grove, waterhole, or landmark) where the group was observed.
This column must not be NULL
.
A code representing the nature of the relationship between the baboon group and the landscape feature at which the SWERB_LOC_DATA row places the group. The legal values of this column are defined by the ADCODES support table.[160]
This column must not be NULL
.
The SWERB_LOC_STATUSES.Loc_Status value indicating
the status of this observation of the location on record
(this row's Loc). Usually, this will indicate whether the
observers actually saw the group at the location or inferred
that the group was there. For instance, if the group is
still in a sleeping grove when the observers arrive then
they will be "certain" about that grove (Loc_Status =
C
), but if the group is
walking away from the grove when the observers arrive then
they may indicate the grove as 'probable'(Loc_Status =
P
).
Although the database supports degrees of certainty with respect to any group location, in practical terms the only time that there will be any degree of uncertainty will involve sleeping groves. This is for two reasons. First, at present the only provision in the Amboseli Baboon Research Project Monitoring Guide involving uncertainty is with respect to sleeping groves. Second, the SWERB_UPLOAD will only ever enter an indication of uncertainty into the database when the location is a sleeping grove.[161]
This column may not be NULL
.
The median time of group decent from or ascent into a
sleeping grove. See the Amboseli
Baboon Research Project Monitoring Guide for information
regarding how median descent and ascent times are
determined. The time may not be before
05:00
and may not be after
20:00
. The time must be on the
minute mark; the seconds must be zero. This column may be
NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
The SWERB data collection protocol sometimes requires 2 GPS waypoint entries to record a group's presence at a physical landscape feature. (At the time of this writing descent from and ascent into sleeping groves requires 2 GPS waypoint entries.) This table contains one row every time a group is observed at a geolocated landscape feature and 2 GPS waypoints are required to record the data. The rows of this table contain the information stored in the second GPS waypoint, information automatically generated by the GPS unit or manually entered into the GPS unit, that otherwise have no place in the database.
It may be easier to use the SWERB_LOC_GPS_XY view to maintain SWERB_LOC_GPS table than it is to modify the table content directly.
The SWERB_LOC_GPS table extends the SWERB_LOC_DATA table[162] with additional columns; SWERB_LOC_GPS contains at most one row for every row in SWERB_LOC_DATA.
As described in the SWERB Data overview above, data was first obtained directly from the GPS units on 2004-01-01. Consequently, this table cannot contain rows dated earlier than 2004-01-01.
The number that uniquely identifies the row and may be used to refer to the GPS information involving an observation of a group at a particular time at a particular grove or waterhole. This is also the SWERB_DATA.SWId value, identifying the group, place, and time of the observation, and the SWERB_LOC_DATA.SWId value, identifying the placement of the group at a landscape feature.
This column must not be NULL
and cannot be
changed.
The X and Y WGS
1984 UTM Zone 37South coordinates of the SWERB_DATA.seen group. This
column may not be NULL
.
See the SWERB Data overview for more information.
The altitude, in meters, of the landscape on which the
seen group is
located. This column may be NULL
.
See the SWERB Data overview for more information.
The amount of error reported as positional dilution of
precision. This column may be NULL
when there is no PDOP
information.
See the SWERB Data overview for more information.
The accuracy of the GPS reading, in meters. This
column may be NULL
when there is no accuracy information
in meters.
See the SWERB Data overview for more information.
The date and time automatically supplied by the GPS
unit at the time the waypoint was recorded. This column may
not be NULL
.
This column may be NULL
.
The information manually entered by the observer into
the GPS unit as a coded waypoint that describe the SWERB
data being recorded. This column may be empty, it need not contain characters,
but it may not contain only whitespace characters. This column may not be
NULL
, although it may be a string 0 characters long.
See the SWERB Data
overview for more information.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
For teams collecting SWERB data this table contains one row for every departure from camp of every member of the departing observation team for those team members who drive or record data.
The system will generate a warning for those SWERB_DEPARTS_DATA rows without at least one related row in SWERB_OBSERVERS.
A unique identifier. This is an automatically generated sequential number that uniquely identifies the row and may be used to refer to a particular observer's departure from camp as part of a particular observation team.
This column is automatically maintained by the
database, cannot be changed, and must not be NULL
.
The id of the SWERB_DEPARTS_DATA row
representing the departure from camp of the observer's
observation team. This column must not be NULL
.
Initials of the observer. The legal values of this column are defined by the OBSERVERS support table.
This column must not be NULL
.
The role assumed by the member of the SWERB observation team. The legal values of this column are defined by the OBSERVER_ROLES support table.
This column must not be NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table contains one row for every tree in the tree monitoring project.
Trees can only be located in groves -- the value of the
TREES.Loc column must reference a
SWERB_GWS row which has a SWERB_GWS.Type of
G
(Grove).
Tree numbers are unique within each grove. The combination of Loc and Tree must be unique.
A unique identifier. This is an automatically generated sequential number that uniquely identifies the row and may be used to refer to a particular tree.
This column is automatically maintained by the
database, cannot be changed, and must not be NULL
.
The identifier of the grove, a SWERB_GWS.Loc value, in which the tree is located.
This column must not be NULL
.
The integer used to uniquely identify a tree within a particular grove.
This column must not be NULL
.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
[124] Waterholes may be more or less permanent features of the landscape, or only temporary rain pools. This is no surprise to those familiar to the SWERB dataset, but whenever waterholes are mentioned in relation to SWERB data the “waterhole” may be either a waterhole or a rainpool.
[125] It is believed but not certain that this is the way PDOP is used.
[126] It is not clear whether the accuracy is 2 or 3 dimensional vector; whether the reported distance includes error in altitude.
[127] Because database rules which enforce when PDOP and
Accuracy values must be NULL
are hardcoded into the
database it will take programmatic changes to change these
limits. Normally this would be avoided by adding a column
to the GPS_UNITS table to indicate whether
or not the particular GPS unit records a PDOP or accuracy
reading, thus allowing new units to be introduced which
record such data. However because records have been lost as
to which specific GPS units were used when and, as of the
time of this writing, no one wishes to reconstruct the
categories of GPS units in use based on a PDOP/Accuracy
capability criteria the system design uses hardcoded dates
to validate. Note further that given the existing set of
validation criteria for PDOP and Accuracy there is never a
circumstance which requires a PDOP or accuracy to be
present. Normally the values of GPS_UNITS.Errortype
would force the presence of PDOP or Accuracy values.
Instead they merely enforce their absence. This is partly
for reasons similar to the preceding and partly because,
particularly during periods when GPS data was
hand-transcribed, sometimes data is missing.
[128] And, possibly, subsequently corrected by the data specialists after consultation with the field teams.
Because the data manager expands the observer codes in the departure rows from 1 to 3 characters the SWERB_DEPARTS_GPS.Garmincode column can hold more than 10 characters.
[129] From a database design perspective it would make sense to control whether or not a Garmincode must be present based on a column in the GPS_UNITS table. In practice because all future GPS units will very likely allow the entry of data when waypoints are taken the matter is moot.
[130] While it may be desirable to have a cutoff date after which all data obtained using GPS units must come from the GPS units themselves, no such cutoff date has been established.
[131] Electronic manufacturers have taken to silently changing the specifications of a device without changing the model, a situation which is quite annoying when the specifications matter. When no other sort of identifying information is available sometimes the serial number can be used to determine device capabilities.
[132] The Amboseli Baboon project data protocols require these codes have a particular structure. Babase does not enforce these requirements, primarily because the QUAD_DATA table is essentially a support table and, once created, is static so enforcing specific rules in the database is not worth the time.
[133] Note that rows that violate this rule are not instantly rejected; the error is caught at the time of transaction commit. This is so that during data entry Btimeest and Etimeest values may be entered without Start and Stop values in the expectation that by the time the transaction is committed the insertion of SWERB_DATA rows will have automatically filled in the missing Start and Stop values.
[134] This last check is also performed at transaction commit time, for the same reason.
[135] Ideally, a begin or end time should not be NULL
unless the records have been perused and no time found, in
which case the time source would always be
bb_norecord
when there was no time. In
practice this has not been done.
[136] Note that this rule is tested for immediately, not at
the time of transaction commit. This
means that the Btimeest and
Etimeest columns must be
non-NULL
before inserting SWERB begin and end rows that
have non-NULL times.
[137] More precisely, when the SWERB_BES.Seq is
NULL
. This typically amounts to the automatic
sequencing of newly inserted rows because those are the
rows which typically have no Seq value.
[138] At first glance it would seem appropriate to
sequence those SWERB_BES rows with
NULL
Start times based on
the first related SWERB_DATA.Time value but this presents a
number of problems. Such a design would not allow for any
flexibility in manually re-sequencing such rows unless
automatic sequencing took place only upon insert of SWERB_DATA rows, in which case inserting and
then deleting the inserted row could change the sequencing
of the SWERB_BES rows. Such
un-reversible changes can be confusing.
[140] Manual sequencing is therefore only useful when the
SWERB_BES.Start is NULL
or when there are
“ties”. Sequencing is normally manipulated
by changing SWERB_BES.Start values, which are themselves
automatically picked up from SWERB_DATA
rows with B
Event values.
When testing for correct sequencing of a SWERB_BES row other bouts of observation
(other SWERB_BES rows) related to the
same group on the same day cannot have a smaller Seq and also have a Start value greater than the
smallest related SWERB_DATA.Time related to the given row. In
those cases where other bouts of observations related to
the same group on the same day have a NULL
Start value the comparison is
instead against the other bout's earliest related SWERB_DATA.Time
value. SWERB_DATA rows with NULL
Time values are ignored by
the automatic sequencing process.
[141] This can cause indeterminate results when more than one row is changed in a single update statement.
[142] It generally makes sense to use the last created
SWERB_BES.BEId. If a BEId has been created during the
current PostgreSQL session this can be referenced using
the PostgreSQL expression
currval('swerb_bes_beid_seq')
.
[143] Allowing changes to the SWERB_BES.DId column would make it difficult to maintain the automatic sequencing of the Seq values.
[144] Allowing changes to the SWERB_BES.Focal_grp column would make it difficult to maintain the automatic sequencing of the Seq values.
[145] All the lines of data dumped from the GPS units are represented as rows in the SWERB_DATA table with the exception of the departure records.
[146] When a group has fragmented a fragment of the group other than the focal fragment may be observed at some distance.
[147] For the occasional “unknown other group” sighting.
[148] These rules imply that when a group is in the process of undergoing fission that the data collection team taking SWERB observations will not flag one of the semi-permanent fission group having it's own code in the groups table a “subgroup” -- unless that semi-permanent group has itself temporarily split.
[149] As of this writing, it isn't recorded in Babase at all. This may change in the future.
[150] I.e. guessed.
[151] Although the system design allows SWERB_GWS rows to represent places other than groves and waterholes, at the time of this writing these are the only places recorded -- with the possible exception of rain pools, which count as waterholes.
[152] Otherwise the SWERB_UPLOAD view would not be able to distinguish between the two grove codes, one of them certain, the other a probable sleeping location.
[153] At the time of this writing the only physical landmarks recorded are groves and waterholes/rainpools.
[154] The exception of the unknown group allows for easy creation of bouts of observation of the unknown group. This is useful because all observations, including those of a non-focal group made on an ad-hoc basis, must be made as part of a bout of observation. But such ad-hoc observations of non-focal groups are made, wait for it, on an ad-hoc basis. A bout of observation may not be in progress. The creation of bouts of observation of the unknown group provide a convenient way to ensure such non-focal group observations are part of an observational bout, and hence are related to an observation team's daily effort -- to a SWERB_DEPARTS_DATA row.
[155] See the preceeding footnote for further detail.
[156] Checking ascent into sleeping grove rules at the time
of transaction commit allows
end-of-observation rows that record ascent into a sleeping
grove to be inserted into the database after all other SWERB
rows for that bout of observation. Because sequence
numbering is not related to end of observation and because
of subgroups and because of the possibility of missing end
of observation times (SWERB_BES.Stop may be NULL
) it is not always
possible to distinguish the bout of observation which
represents the last observation of the group by the team for
the day without having a bout that is related to ascent into
a sleeping grove. This means that tests related to
end-of-observation cannot be done as rows are
inserted.
[157] At the time of this writing the ADCODES values are structured such that SWERB_LOC_DATA rows that represent the first or
last observation of each group by each observation team on
each day, the rows that record the group's descent from or
ascent into a grove, must have non-NULL
ADtime values. The obverse is
also true; SWERB_LOC_DATA rows that are not the first or
last for the team for the group for the day, that are not
associated with the group's descent from or ascent into a
sleeping grove, must have NULL
ADtime values.
[158] A similar rule for the end of observation is not feasible. There are time when, after the last bout of observation of the day has ended, the observation team remains in the field and happens to notice and record ascent into a sleeping grove.
[159] This allows the data that is entered in the field as two separate GPS waypoints but which comprises a single SWERB_LOC_DATA row to be inserted into the database piecemeal.
[160] The decision to create the ADCODES table instead of hardcoding values in the SWERB_LOC_DATA.ADcode column is somewhat arbitrary. At the time of this writing the SWERB_LOC_DATA table is only used to relate baboon groups with sleeping groves at the time of ascent or descent, or to relate the groups with waterholes when drinking. Baboons are never related to groves or waterholes for any other reason, nor are baboons ever related to any other landscape feature. Consequently the expectation is that there will be 3 rows created in the ADCODES table, one for ascent, one for decent, and one for neither that is used when groups drink at waterholes -- and that the ADCODES table will subsequently be forgotten.
Never the less, there is little if any extra technical work involved in having an ADCODES table and its presence opens up future opportunities for recording additional relationships between baboon groups and landscape features, opportunities that do not require any additional programming or other technical involvement. It is for these reasons that the choice was made to have an ADCODES table.
[161] Although the Amboseli Baboon Research Project Monitoring Guide has no provision for uncertainty with respect to any location other than sleeping groves the database contains no rules prohibiting such use. Because the SWERB_UPLOAD will not indicate uncertainty unless a sleeping grove is involved having such a rule seems unnecessary.
[162] SWERB_LOC_DATA is itself an extension of SWERB_DATA