In a previous note we introduced the concept of GML Observations. Observations can be used to record everything from tourist photographs to scientific measurements. An Observation might also be used to capture the acquisition of an aerial photograph or satellite image. (We will deal with this case in a future posting!). Today, I would like to talk about the use of GML Observations to records observations about geographic features, either ones that already exist, or ones which are newly created or discovered. This is a particularly interesting application of GML observation and one that is growing in popularity.
Here is the basic idea. Features represent objects (things) of interest in your application domain. Features can include things like airports, countries, dams, bridges, buoys, sea lanes etc. Features are described in GML using application schemas defined by the user or by a user community. One can capture features and then insert or update them in a WFS by direct transactions. That is one way. There is, however, another. We can have observations about features. If I go "into the field", I can observe/record that a certain road segment has a particular geometry, or is a gravel road, or now has 3 lanes where previously it only had 2. I could record in my GML observation that the road no longer exists (e.g. a decomissioned forest access road).
Observations in GML ARE features and hence can be inserted,updated,deleted etc using WFS transactions. These transactions then record the observing ABOUT the features in the real world, and can be used to record observing about GML features in a database (WFS) that reflects the state of these real world features. The GML Observation has a <subject> or <target> property that can pint to the feature to which an observation refers. The value of this <target> property can be written using the GML remote property as:
The balance of my observation then can describe the values of properties of that feature target. Of this requires that we construct an application schema for observations that restricts the values of the <resultsOf> property to the desired feature properties.
How then do these observations actually impact the features to which they refer? This of course requires an application that can examine the incoming feature (say post comit in the WFS) and decide if the feature in question should be updated or not to conform to the observation. Perhaps the observation is flawed in some way? Perhaps the existing values of the features properties must be taken in to account? This cannot be decided by the GML alone – and requires that an external "policy" or rule be used.