istSOS is bundled with an automatic data validation. In the next paragraphs we will see 3 levels of validation.
The data quality index configuration panel
Here you can change the value and the meaning of istSOS quality indexes
Raw data quality index
For every new inserted observed property the raw data quality index is assigned (by default QI 100 Raw data). This quality index suggests that the observation data type is correct, which means that istSOS checks if the measure inserted is in a numeric type.
Correct quality index
In the observed properties panel, for each observed property, you can define specific constraint based on logical operators (greater than, Lower than, between and value list). This is the place where you can set general quality index check for each Observed Property. For instance a percentage (%) observed property can use a constraint of type “Between”, because the values can be between 0% and 100%.
Statistical quality index
The statistical QI is more granular. This is set when you create a new procedure and it will be specific only to the new procedure created. For instance in the case of temperature measurements, we know that in our region temperature never goes under -20°C and over 40°C, so we can put as correct QI the “between” constraint. But a new sensor deployed on top of a mountain the limits are different and the QI constraint can be more specific for this station (between -20° and +20°C).
Lets try to load some data that will better explain the “quality index check” functionality. Sample data present under qi folder in your dataset:
urn:ogc:def:parameter:x-istsos:1.0:time:iso8601,urn:ogc:def:parameter:x-istsos:1.0:meteo:air:temperature
2015-06-03T15:30:00+01:00,T_LUGANO,150
2015-06-03T15:40:00+01:00,T_LUGANO,62
2015-06-03T15:50:00+01:00,T_LUGANO,25
Open a terminal and…
If installed from source
cd /usr/local/istsos
cd /usr/share/istsos/
Then import data with errors..
python scripts/csv2istsos.py -p T_LUGANO \
-u http://localhost/istsos -s demo \
-w ~/Desktop/Tutorial/qi
Now check what happens executing a getObservation request:
Looking at the result you can note the different quality indexes associated with the measures:
urn:ogc:def:parameter:x-istsos:1.0:time:iso8601,urn:ogc:def:procedure,urn:ogc:def:parameter:x-istsos:1.0:meteo:air:temperature,urn:ogc:def:parameter:x-istsos:1.0:meteo:air:temperature:qualityIndex
2015-06-03T15:30:00+01:00,T_LUGANO,150.000000,100
2015-06-03T15:40:00+01:00,T_LUGANO,62.000000,110
2015-06-03T15:50:00+01:00,T_LUGANO,25.000000,200