The data in this section are collected from manually read instruments, with the exception of the data in the WEATHERHAWK table, which are automatically collected by the WeatherHawk instruments.
The MIN_MAXS view provides a way to view all the tables containing manually collected weather data at once, with each weather data collection event appearing as a single row.
The weather-related tables contain weather-related information and so do not directly relate to any of the baboon information contained in Babase.
This table contains one row for every time a rain gauge reading is recorded. There can be at most one RAINGAUGES row per WREADINGS row.
The identifier of the meteorological collection event during which the rain gauge was read. Must be a value contained in the WRid column of a row on the WREADINGS table, and the associated row may not be associated with any other row in RAINGAUGES.
This column cannot be changed; and must not be
NULL
.
The interval, in an integral number of seconds, since the previous rain gauge collection event.
This column is automatically maintained by the
database and cannot be changed. This column must not be
NULL
.
When the WREADINGS.WRdaytime values used to compute RGspan are not integral, the resulting RGspan value is rounded to the nearest second. Values of .5 seconds are rounded to the nearest even number of seconds.
When a new row is inserted the value of this column
is silently ignored and an automatically computed value is
used in its place. It is best to omit this column from
the inserted data (or specify the NULL
value).
Whether or not any estimated WREADINGS.WRdaytime
values were used in the computation of the RGspan column. TRUE
if any of the
relevant WREADINGS.Estdaytime values are true, FALSE
otherwise.
This column is automatically maintained by the
database and cannot be changed. This column must not be
NULL
.
When a new row is inserted the value of this column
is silently ignored and an automatically computed value is
used in its place. It is best to omit this column from
the inserted data (or specify the NULL
value).
The measurement of rain accumulated since the last time the rain gauge was read. In millimeters stored using a data type having a precision of 0.1 millimeter. For the precision and accuracy of the data itself see the Amboseli Baboon Research Project Monitoring Guide.
This column must be non-negative and may not be more
than 200.0
. 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 every time a rain gauge is installed. There can be no RAINGAUGES rows recording rain gauge measurements at any given weather station (WSTATIONS) unless there is a prior record of a rain gauge installation in RGSETUPS.
Rain gauge measurements are only meaningful when it is known how long the rain has been collected. In the event that, e.g., an elephant steps on the rainguage, there will be a period of time until the rain gauge is replaced. The first reading of the replacement rain gauge is not a measurement of rain since the last rainguage reading, but is instead a measurement of the rain collected since the replacement rain gauge was installed. The RGSETUPS table allows the system to compute RAINGAUGES.RGspan intervals when rain gauges are replaced, first installed, or after an interval of corrupted measurements.[166]
There cannot be a RGSETUPS row and a RAINGAUGES row for the same location at the same time.
The combination of RGSdaytime and Wstation must be unique.
A unique positive integer representing the rain gauge setup event.
This column is automatically maintained by the
database, cannot be changed, and must not be NULL
.
Code indicating the station at which the rain gauge was installed. Must be a value on the WSTATIONS table.
This column cannot be changed and must not be
NULL
.
TRUE
when the RGSdaytime
column contains an estimated time. FALSE
when the RGSdaytime column is an accurate record
of the time the rain gauge was installed.
Initials of the person who collected the data. Must be a value contained in the Initials column of a row on the OBSERVERS table.
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 time a minimum temperature reading was recorded. There can be at most one TEMPMINS row for every WREADINGS row.
The Tempmin column has one
decimal point of precision, but thanks to limitations of the
thermometers the temperature is normally collected with a half
decimal point of precision; the digit to the right of the
decimal point should be either a 0
or a
5
. This may not always be so, however.
The system will return a warning when the Tempmin is not a multiple of
0.5
.
Beginning 01 July 2022, a new thermometer with higher accuracy and precision was deployed, allowing for reliable recording of temperature to the nearest tenth of a degree. For this reason, the above warning only applies to data collected before that date[167].
The identifier of the meteorological collection event during which the minimum temperature was read. Must be a value contained in the WRid column of a row on the WREADINGS table, and the associated row may not be associated with any other row in TEMPMINS.
This column cannot be changed; and must not be
NULL
.
The minimum temperature recorded since the last minimum temperature reading.
This table must contain a value between
-5
and
35
, inclusive of endpoints,
and 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 time a maximum temperature reading was recorded. There can be at most one TEMPMAXS row for every WREADINGS row.
In extreme circumstances where a temperature reading is
known to be spurious in some way, it may be desirable to
record a correction or adjustment from the original
temperature. When this is done, the adjusted temperature
should be recorded in the Tempmax
column, and the unadjusted temperature in the Unadjusted_Tempmax column. If no
adjustment has been made, the Unadjusted_Tempmax should be
NULL
.
Because a non-NULL
Unadjusted_Tempmax indicates that an
adjustment has occurred, the Unadjusted_Tempmax cannot be equal to the
Tempmax.
Both temperature columns have one decimal point of
precision, but thanks to limitations of the thermometers the
temperatures are normally collected with a half decimal point
of precision; the digit to the right of the decimal point
should be either a 0
or a
5
. This may not always be so, however.
Newer thermometers may be more precise, and temperature
adjustments may not conveniently be to the nearest 0.5°.
The system will return a warning when either Tempmax or Unadjusted_Tempmax is not a multiple of
0.5
.
Beginning 01 July 2022, a new thermometer with higher accuracy and precision was deployed, allowing for reliable recording of temperature to the nearest tenth of a degree. For this reason, the above warning only applies to data collected before that date[168].
Values in both of the temperature columns in this table
must be between 10
and
50
, inclusive.
Weather station BC1 was positioned too close to the kitchen, resulting in spuriously high Tempmax readings. To correct for this, all Tempmax readings from that weather station have been adjusted by -4.2°C (rounded from -4.245). This adjustment was calculated as the residual + fixed effect from a model of Tempmax as a function of day of the year + random intercept of weather station with only BC1 and BC2, BC3, BC4 combined in the dataset (i.e., Tempmax ∼ day of the year + (1 | Wstation)). Day of the year was included in the model to correct for the fact that BC1 had an overrepresentation of January to June dates compared to the other three BC weather stations. BC5 was not used in the calculation because at the time of calculation there was less than one year of weather data from this station. We also calculated adjustment factors in two alternative ways which yielded extremely similar values: (1) taking the difference between the mean Tempmax of BC1 and mean Tempmax of BC2, BC3, BC4 combined (adjustment factor = -4.29°C) and (2) taking a residual + fixed effect from a model of Tempmax as a function of a fixed intercept + random intercept of weather station with only BC1 and BC2, BC3, BC4 combined in the dataset (i.e., Tempmax ∼ 1 + (1 | Wstation); adjustment factor = -4.28°C).
The WREADINGS.WRid of the meteorological collection event during which this maximum temperature was read.
This column is unique, cannot be changed, and must
not be NULL
.
The maximum temperature recorded since the last maximum temperature reading.
This column may not be NULL
.
The original, unadjusted maximum temperature, when the value in the Tempmax column has been adjusted in some way.
This column may be NULL
, when the Tempmax has not been adjusted.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
This table records the weather data automatically collected each hour by the WeatherHawk instrument.
The combination of TimeStamp and WStation must be unique.
Instrument accuracy may not, and probably does not, correspond with the recorded degree of precision. The instrument collects its data in engineering units, which are interpreted and converted to standardized units (degrees, kPa, etc.) by PC software when the data are retrieved from the instrument. Different PC software programs may vary in terms of units used, the number of significant figures employed, or other ways that are not yet apparent. There are even some values that are simply not recorded by some programs.
Despite differences in software, most measurements saved in this table use a single column and a specified unit. Data management should ensure that data are converted to the appropriate units, if needed. The allowed precision in these columns—usually a single digit to the right of the decimal—is based on a private message from WeatherHawk's technical support[169], who asserted that this is the maximum plausible precision that the WeatherHawk is capable of measuring. This may be more precise than the value originally reported by the software.
The units and decimal precision used in this table's columns are not necessarily the same as what was exported from the WeatherHawk instrument.
Use the WEATHERHAWK_SOFTWARES table to see what is known about differences in these programs, including precision of measurements, units used, etc.
The WSoftware column is used to indicate which software was used to generate the data in each row, but the system does not treat data any differently based on this value. Users should be aware of the possibility of differences between programs, and decide for themselves how to handle any possible discrepancies.
Information about the voltage of the WeatherHawk's battery is provided in the BatVolt and BatVolt_Min columns. These values are not directly relevant to weather but can be useful if technical support is needed.
Average wind speed may be recorded in km/hr as an
integer or m/s with 1 decimal point of precision, depending on
the software used. The precision difference between these two
measures is large enough that they are divided into separate
columns, not unified into a single "wind speed" column. Each
row must have a non-NULL
WindSpeed_Avg_Km_Hr or WindSpeed_Avg_M_S, but cannot have
both. Similarly, if maximum wind speed is recorded, it can be
in the WindSpeed_Max_Km_Hr or
WindSpeed_Max_M_S column, but
not both.
Each row must only use a single unit for wind speed;
when WindSpeed_Avg_Km_Hr is
NULL
, WindSpeed_Max_Km_Hr must
also be NULL
, and when WindSpeed_Avg_M_S is NULL
, WindSpeed_Max_M_S must also be
NULL
.
The WeatherHawk measures rain using a 1-millimeter tip bucket and only records rain when the bucket fills (see the WeatherHawk Signature Series User's Manual for more information). If there is less than 1 mm of rainfall over the course of a given hour, the bucket may not fill up at that time and the rain will not be measured until later, or may even evaporate before the bucket fills. When there is a gap in the hourly measurements (due to changing out sensors, battery malfunctions, etc.) rainfall data during the down period might not be recorded.
Although it measures every hour, the WeatherHawk does not report rainfall on an hourly basis. Instead, it reports the cumulative rainfall since the beginning of the year (the YearlyRain column). Because rainfall for each hour will usually be more useful, the calculated column TimeStampRain is included in this table. For each row, the YearlyRain of the most recent row from the same calendar year and the same WStation is subtracted from this row's YearlyRain, resulting in the amount of rainfall that was measured since the previous TimeStamp.
Do not assume that TimeStampRain values always describe a single hour's worth of rain. When one or more hours is absent from the data, the TimeStampRain value is the amount of rainfall measured since the previous row in the same year. Also do not assume that these values describe all of the rain that occurred in the intervening hours. If the WeatherHawk was off or malfunctioning at the time[170], then actual rainfall may have occurred and/or evaporated without being measured.
A unique positive integer representing the WeatherHawk's meteorological data collection event.
This column is automatically maintained by the
database, cannot be changed, and must not be
NULL
.
The WSTATIONS.Wstation of the WeatherHawk instrument used to collect the data.
This column may not be NULL
.
Date and time of the measurement. Measurements must
be taken on the hour. Minutes,
seconds, microseconds etc must be
0
.
As indicated by the name, this value is a time
stamp. It indicates the end of the period described in
each row, not the beginning. This means that the last
hour of a day will have a TimeStamp from the next day,
e.g. the data from 23:00-23:59 on 31 Dec 1999 will have
a TimeStamp of 2000-01-01
00:00
.
This column may not be NULL
.
The WEATHERHAWK_SOFTWARES.WSoftware value indicating which software was used to generate the data.
This column may not be NULL
.
The record number for this line, exported in the software. This appears to be a unique ID number used either by the WeatherHawk or the software, or both.
This column may be NULL
, when the
software did not report this value.
The voltage of the battery at the TimeStamp. Values must be between
10.00
and
14.00
, inclusive.
This column may not be NULL
.
The minimum voltage of the battery in this hour.
Values must be between 10.00
and 14.00
, inclusive.
This column may be NULL
, when the software did not
report this value.
Average air temperature for this hour, in degrees
Celsius. Values must be between
-10.0
and
50.0
, inclusive.
This column may not be NULL
.
Average relative humidity for this hour in percent
humidity. Values must be between
0.0
and
100.0
, inclusive.
This column may not be NULL
.
Average wind speed for this hour, in km/hr. Values
must be between
0
and
30
,
inclusive.
This column may be NULL
.
Average wind speed for this hour, in m/s. Values
must be between 0.0
and 15.0
,
inclusive.
This column may be NULL
.
Solar radiation in Watts per square meter. Values
must be between 0.0
and
2000.0
, inclusive.
This column may be NULL
[171].
Minimum air temperature for this hour, in degrees
Celsius. Values must be between
-10.0
and
50.0
, inclusive.
This column may be NULL
, when the software did not
report this value.
A time stamp indicating the minute in which the AirTemp_Min occurred.
This column may be NULL
, when the software did not
report this value.
Maximum air temperature for this hour, in degrees
Celsius. Values must be between
-10.0
and
50.0
, inclusive.
This column may be NULL
, when the software did not
report this value.
A time stamp indicating the minute in which the AirTemp_Max occurred.
This column may be NULL
, when the software did not
report this value.
Wind direction in degrees from North. Values must
be between 0.0
and
360.0
, inclusive.
The values of 0.0
and 360.0
represent the
same direction. There's no telling if one or the other
of them means something special, like “no
measurement”. If they really do represent the
same direction then we should probably change the rules
and adjust the data values so that legal values are
between 0
and
359
.
This column may not be NULL
.
Maximum wind speed for this hour, in km/hr. Values
must be between
0
and
30
,
inclusive.
This column may be NULL
, when the software did not
report the value.
Maximum wind speed for this hour, in m/s. Values
must be between 0.0
and 15.0
,
inclusive.
This column may be NULL
, when the software did not
report the value.
A time stamp indicating the minute in which the maximum wind speed[172] was recorded.
This column may be NULL
, when the software did not
report the value.
Atmospheric pressure at the TimeStamp, in kPa. Values must be
between 85.0
and
95.0
, inclusive.
This column may be NULL
, when the value is
unknown.
The amount of rain measured since the beginning of
the year, in millimeters. Values must be integers greater
than or equal to
0
.
This column may not be NULL
.
The amount of rain that was measured at this WStation since the previous TimeStamp in the same calendar year.
This column is calculated by the system automatically. Attempts to insert, update, or delete data in this column will be silently ignored.
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.
The WREADINGS table contains one row for each time a person has collected data from the meteorological instruments. So, each WREADINGS row should have at least one associated RAINGAUGES, TEMPMINS, or TEMPMAXS row, but no more than one associated row from any one of these tables.
Automated weather readings are not recorded in WREADINGS .
For any one weather reading the minimum recorded temperature cannot exceed the maximum recorded temperature -- the TEMPMINS.Tempmin value related to the WREADINGS row cannot exceed the related TEMPMAXS.Tempmax value.
The combination of WRdaytime and Wstation must be unique.
The Wstation column cannot be changed when there is a related RAINGAUGES row.
A unique positive integer representing the meteorological data collection event.
This column is automatically maintained by the
database, cannot be changed, and must not be NULL
.
Code indicating the station from which the data were collected. Must be a value on the WSTATIONS table.
The day and time the meteorological data were collected. The time zone is Nairobi local time.
TRUE
when the WRdaytime
column contains an estimated time. FALSE
when the WRdaytime column is an accurate record
of the time the measurement was taken.
Initials of the person who collected the data. Must be a value contained in the Initials column of a row on the OBSERVERS table.
Textual notes on the weather reading.
This column may be NULL
when there are no
notes.
This column may not be empty, it must contain characters, and it must contain at least one non-whitespace character.
The timestamp range during which this row's data are considered valid. See The Sys_Period Column for more information.
[166] One would think that the TEMPMINS and TEMPMAXS tables would need a "span" column similar to RAINGAUGES.RGspan, and a table to correspond to RGSETUPS. As it happens the extraordinary diligence of the field staff in taking regular temperature measurements, in conjunction with the keen analytical skills of the Babase user population, make such an enhancement a flagrant extravagance. Or, to put it another way, it mostly works the way it is so we're leaving well enough alone.
[167] This is ugly, not enforcing a rule simply because of the date. Ideally, someday we'll add something to RGSETUPS (or something) where we can just specify the thermometer's accuracy/precision. But not now. There are squeakier wheels needing grease.
[168] See the footnote from TEMPMINS about how this is not an ideal way to do this and why we're doing it anyway.
[169] 9 Sep 2010 14:08 EDT, from Dion Almond, “Yes all sensors should be good to 1 decimal place”.
[170] Usually these are the only reasons these gaps occur.
[171] The WeatherHawk always reports a value for this
column. However, the instrument was reporting faulty
values for a period of time. An improved validation rule
would force the values to NULL
for the time interval(s)
during which the instrument was broken, and require
non-NULL
values otherwise.
[172] Either WindSpeed_Max_Km_Hr or WindSpeed_Max_M_S.