Feature Type Catalogues

NERC DataGrid and CSML
NDG Team
CSML: Context
• NERC DataGrid: the integration problem
– multiple organisations, formats, storage
mechanisms (file, relational)
– only commonality is data semantics
CSML – benefits of explicit semantics
• Aim is to be as explicit as possible about
semantics of information classes
• Offer significant potential for advanced
processing workflows
• Reduce representation errors (e.g.
omitting key attributes)
• ‘Conventions’ approach is fragile
CSML – benefits of geospatial standards
•
•
•
•
Interoperability!!
Expanded user-base
Enhanced ROI
Compliance to emerging SDI
infrastructures
e.g. SDI – EU INSPIRE
• Directive of EU, passed EP this month
– 10-year+ program, €1bn
– Based on standards
The potential
CSML
CDM
???
O&M
INSPIRE
GEOSS
WIS
Background: ‘feature types’
• Emerging ISO
standards
– TC211 – around
40 standards for
geographic
information
– Cover activity
spectrum:
discovery 
access  use
…in a defined logical
structure…
…and described by
metadata.
…delivered through
services…
A geospatial dataset…
…consists of
features and
related objects…
ISO 19101
Domain Reference Model
Background: ‘feature types’
• Geographic ‘features’
– “abstraction of real world
phenomena” [ISO 19101]
– Type or instance
– Encapsulate important
semantics in universe of
discourse
• Application schema
– Defines semantic content and
logical structure of datasets
– ISO standards provide toolkit:
•
•
•
•
spatial/temporal referencing
geometry (1-, 2-, 3-D)
topology
dictionaries (phenomena,
units, etc.)
– GML – canonical encoding
[from ISO 19109 “Geographic information –
Rules for Application Schema”]
Standards-based modelling
• The standards-based approach
– “Conceptual modelling is the process of creating an abstract
description of some portion of the real world and/or a set of
related concepts.” (ISO 19101)
Feature types
Application schema
...
CTDProfile
startTime[1]
bottomTime[1]
salinity[*]
temperature[*]
depth[*]
...
ISO 19109
ISO 19103
...
ISO 19110
Universe of discourse
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://ndg.nerc.ac.uk/csml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:csml="http://ndg.nerc.ac.uk/csml"
xmlns:om="http://www.opengis.net/om" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">
<annotation>
<documentation>CSML application schema</documentation>
</annotation>
<!--====================================================================== -->
<import namespace="http://www.opengis.net/gml" schemaLocation="GML-3.1.0/base/gml.xsd"/>
<import namespace="http://www.opengis.net/om" schemaLocation="phenomenon.xsd"/>
<!--====================================================================== -->
<!--===== Root element for CSML dataset =====-->
<!--====================================================================== -->
<complexType name="DatasetType">
<complexContent>
<extension base="gml:AbstractGMLType">
<sequence>
<element ref="csml:UnitDefinitions" minOccurs="0" maxOccurs="unbounded"/>
<element ref="csml:ReferenceSystemDefinitions" minOccurs="0" maxOccurs="unbounded"/>
<element ref="csml:PhenomenonDefinitions" minOccurs="0"/>
<element ref="csml:_ArrayDescriptor" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:FeatureCollection" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="Dataset" type="csml:DatasetType"/>
<!--====================================================================== -->
<!--===== Dictionary/definition elements =====-->
<!--====================================================================== -->
<complexType name="ReferenceSystemDefinitionsType">
<complexContent>
<extension base="gml:DictionaryType"/>
</complexContent>
</complexType>
<element name="ReferenceSystemDefinitions" type="csml:ReferenceSystemDefinitionsType"/>
<complexType name="ReferenceSystemDefinitionsPropertyType">
<sequence>
<element ref="csml:ReferenceSystemDefinitions" minOccurs="0"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<gml:definitionMember>
<om:Phenomenon gml:id="taxon">
<gml:description>The taxon name</gml:description>
<gml:name codeSpace="http://www.vliz.be">taxon</gml:name>
</om:Phenomenon>
</gml:definitionMember>
</NDGPhenomenonDefinitions>
<!--===================================================================-->
<gml:FeatureCollection>
<!-- ============================================================== -->
<gml:featureMember>
<NDGPointFeature gml:id="ICES_100">
<NDGPointDomain>
<domainReference>
<NDGPosition srsName="urn:EPSG:geographicCRS:4979" axisLabels="Lat
Long" uomLabels="degree degree">
<location>55.25 6.5</location>
</NDGPosition>
</domainReference>
</NDGPointDomain>
<gml:rangeSet>
<gml:DataBlock>
<gml:rangeParameters>
<gml:CompositeValue>
<gml:valueComponents>
<gml:measure uom="#tn"/>
<gml:measure uom="#amount"/>
<gml:measure uom="#gsm"/>
</gml:valueComponents>
</gml:CompositeValue>
</gml:rangeParameters>
<gml:tupleList>
'ANTHOZOA',63.1,missing
'Scoloplos armiger',66.1,missing
'Spio filicornis',10,missing
'Spiophanes bombyx',60.3,missing
'Capitellidae',131.8,missing
'Pholoe',10,missing
'Owenia fusiformis',23.4,missing
'Hypereteone lactea',6.8,missing
'Anaitides groenlandica',13.2,missing
'Anaitides mucosa',6.8,missing
ISO 19118
NDG
FTC
The “general feature model”
Governance in standards-based modelling
• The importance of governance
– Information community defined by shared semantics
– Need community process to manage those semantics (definitions,
models, vocabularies, taxonomies, etc.)
– e.g. CF conventions for netCDF files
– Role of Feature Type Catalogues [ISO 19110] and registers [ISO
19135]
• Governance as driver for granularity
– Remit / interest determines appropriate granularity
– e.g. IOC, IHO, WMO
<measurement type=“Radiosonde”
measurand=“temperature”/>
abstract
<Sonde parameter=“temperature”/>
generic
feature types spectrum
<temperatureProfile/>
highly specialised
CSML ambition
• The CSML ‘niche’
– set of base feature types for specialising or
using as-is
cd MyModel
«interface»
CSML::ProfileSeriesFeature
+
+
+
domainSet: = ProfileSeriesDomain
parameter: om:Phenomenon
rangeSet:
Mooring
+
+
+
+
Ensemble
+
ensembleParameters:
*
«interface»
CSML::GridSeriesFeature
EnsembleMember
+
+
memberNumber:
paramValues:
averaging:
blowover:
deploymentEnd:
deploymentStart:
+
+
+
domainSet: = GridSeriesDomain
parameter: om:Phenomenon
rangeSet:
What is CSML?
«FeatureType»
AbstractGeometryFeature
«FeatureType»
TrajectoryFeature
+track : Trajectory
{domainSet.domainReference
= Trajectory}
«DataType»
GML::AbstractFeature
+id[0..1]
+metaDataProperty[0..1]
+description[0..1]
+name[0..1]
+boundedBy[0..1]
«FeatureType»
GML::AbstractDiscreteCoverage
+domainSet
+rangeSet
+coverageFunction
+parameter
OGC Obs & Meas::Phenomenon
{domainSet.domainReference
= Position}
«FeatureType»
AbstractCoverageFeature
+domainSet : AbstractDomain
+coverageFunction : MappingRule
«FeatureType»
AbstractSeriesCoverageFeature
«FeatureType»
AbstractStaticCoverageFeature
ISO standards
«Enumeration»
IncrementOrder
{+,-}phenomenon
{+,-}seriesFeature
{+,-}gridI
{+,-}gridJ
{+,-}gridK
«FeatureType»
PointSeriesFeature
+domainSet : PointSeriesDomain
«FeatureType»
PointFeature
+domainSet : PointDomain
«FeatureType»
ProfileSeriesFeature
+domainSet : ProfileSeriesDomain
«FeatureType»
ProfileFeature
+domainSet : ProfileDomain
British Atmospheric
Data Centre
«DataType»
MappingRule
+scanOrder[0..1] : Sequence<IncrementOrder>
«FeatureType»
SectionSeriesFeature
«FeatureType»
SectionFeature
«FeatureType»
GridSeriesFeature
+domainSet : GridSeriesDomain
«FeatureType»
GridFeature
+domainSet : GridDomain
Conceptual model
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://ndg.nerc.ac.uk/csml"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns:csml="http://ndg.nerc.ac.uk/csml"
xmlns:om="http://www.opengis.net/om" xmlns:gml="http://www.opengis.net/gml"
elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">
<annotation>
<documentation>CSML application schema</documentation>
</annotation>
<!--====================================================================== -->
<import namespace="http://www.opengis.net/gml" schemaLocation="GML3.1.0/base/gml.xsd"/>
<import namespace="http://www.opengis.net/om" schemaLocation="phenomenon.xsd"/>
<!--====================================================================== -->
<!--===== Root element for CSML dataset =====-->
<!--====================================================================== -->
<complexType name="DatasetType">
<complexContent>
<extension base="gml:AbstractGMLType">
<sequence>
<element ref="csml:UnitDefinitions" minOccurs="0" maxOccurs="unbounded"/>
<element ref="csml:ReferenceSystemDefinitions" minOccurs="0"
maxOccurs="unbounded"/>
<element ref="csml:PhenomenonDefinitions" minOccurs="0"/>
<element ref="csml:_ArrayDescriptor" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:FeatureCollection" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="Dataset" type="csml:DatasetType"/>
<!--====================================================================== -->
<!--===== Dictionary/definition elements =====-->
<!--====================================================================== -->
<complexType name="ReferenceSystemDefinitionsType">
<complexContent>
<extension base="gml:DictionaryType"/>
</complexContent>
</complexType>
<element name="ReferenceSystemDefinitions"
type="csml:ReferenceSystemDefinitionsType"/>
<complexType name="ReferenceSystemDefinitionsPropertyType">
<sequence>
<element ref="csml:ReferenceSystemDefinitions" minOccurs="0"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
British Oceanographic
Data Centre
‘Governance
Principle’
Tooling
Schemas
Climate Science Modelling Language
CSML Version Two
• CSML v2
– More explicit/expanded feature types:
• Swath
• ProfileSeries{Radar, Section, ProfileSeries}
• Lost ‘composite domain pattern’
– GML 3.2 ( ISO 19136)
– removed ‘storage descriptors’ from core
CSML schema
– ‘affordance’ (i.e. FT behaviour)
– O&M
CSML and O&M
• OGC ‘Observations and Measurements’
cd O&M
«Union»
procedure::Procedure
+
+
procedureUse: ProcedureEvent
standardProcedure: ProcedureSystem
CSML
+procedure
CV_DiscreteGridPointCoverage
Cov erage Types::
ProfileSeriesCov erage
1
+generatedObservation 0..*
Event
+result
«FeatureType»
observ ation::Observ ation
+/ domainSet: ProfileSeriesDomain
+/ rangeSet: Record [0..*]
+
+
+
+value
quality: DQ_DataQuality [0..1]
responsible: CI_ResponsibleParty [0..1]
result: Any
+featureOfInterest
«FeatureType»
Feature Types::
ProfileSeriesFeature
+
location: DirectPosition [0..1]
+observedProperty
+parameter
1
{Definition must be of a phenomenon that is a property of the featureOfInterest}
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
An Observation is an Event whose result is an estimate of
the value of some Property of the Feature-of-interest,
obtained using a specified Procedure
CSML AbstractFeature
• Provides common model for all CSML feature
types
• Supports OGC Observations and Measurements
model
• Each CSML feature:
– has a type (with operations and required attributes),
the ‘affordance’ concept
– represents some physical ‘parameter’ (Phenomenon)
– has a ‘value’ property which is a coverage (with
domain and range) – the domain is often a subclass
of ReferenceableGrid
– may have additional attributes providing ‘reference’
spatio-temporal location parameters
CSML Abstract Feature
cd Abstract CSML Feature
CV_Coverage
Discrete Cov erages::CV_DiscreteCov erage
+
«type»
Affordance::
CSMLAffordance
locate(DirectPosition*) : Set<CV_GeometryValuePair>
«realize»
«implement»
Coverage Types::
CSMLCoverage
+value
«FeatureType»
CSMLFeature
+/ rangeSet: Record [0..*]
+domainSet
«ObjectType»
Domain geometries::
CSMLCoverageDomain
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
CSML ReferenceableGrid
• Implementation of ISO 19123
CV_ReferenceableGrid, missing from GML
• Subject of OGC GML Change Request (doc 06160)
• Analagous to CF – grid locations specified for
each axis of CRS
• Efficiency allowed when CRS axis aligned with
grid axis
• Supports both spatial and temporal (and
compound) CRS
ReferenceableGrid subclasses
cd ReferenceableGrid subclasses
* 2-d Grid
* 2-d Grid
* 2-d Azimth-Range CRS
* 3-d spatial CRS
Grid
* One grid axis aligned
with CRS 'z' axis
«ObjectType»
SectionDomain
«ObjectType»
ReferenceableGrid
+ coordTransformTable: GridCoodinatesTable
::Grid
+ AxisName: string [1..*]
+ limits: GridEnvelope
::AbstractGeometry
+ srsName: anyURI
::AbstractGML
+ description: CharacterString [0..1]
+ id: ID
+ name: GenericName [0..*]
«ObjectType»
ScanningRadarDomain
+crs
SC_EngineeringCRS
CRS::
AzimuthRangeCRS
* 1-d Grid
* 2-, 3- or 4-d composite CRS:
- 1-, 2-, or 3-d spatial
- 1-d temporal
«ObjectType»
ProfileSeriesDomain
* 3- or 4-d Grid
* 3- or 4-d compositeCRS:
- 2- or 3-d spatial
- 1-d temporal
* 2-d Grid
«ObjectType»
Traj ectoryDomain
* 2-d composite CRS:
- 1-d spatial
- 1-d temporal
+crs
+crs SC_CompoundCRS +crs
CRS::
SpatioTemporalCRS
«ObjectType»
GridSeriesDomain
CSML v2 Feature Types
Feature type
Description
Example
PointFeature
Single point measurement.
raingauge measurement
PointSeriesFeature
Time-series of single datum measurements at a
fixed location in space.
tidegauge, rainfall timeseries
TrajectoryFeature
Measurement along a discrete path in time and
space.
surface salinity along a ship’s cruise track;
atmospheric aerosols along an aircraft’s
flight path
PointCollectionFeature
Collection of distributed single datum
measurements at a particular time
2m temperatures measured at weather stations
across the UK at 0600z.
ProfileFeature
Single ‘profile’ of some parameter along a vertical
line in space.
wind sounding, XBT, CTD, radiosonde
ProfileSeriesFeature
Time-series of profiles on fixed vertical levels at a
fixed location
vertical radar timeseries, thermistor chain timeseries
RaggedProfileSeriesFeature
Time-series of unequal-length profiles, but on fixed
vertical levels, at a fixed location
repeat daily balloon soundings of atmospheric
temperature from the same location
SectionFeature
Series of profiles from positions along a trajectory
in time and space.
shipborne ADCP
RaggedSectionFeature
Series of profiles of unequal length along a
trajectory in time and space
marine CTD measurements along a ship’s cruise
track
ScanningRadarFeature
Backscatter profiles along a look direction at fixed
elevation but rotating in azimuth
weather radar
GridFeature
Single time-snapshot of a gridded field.
gridded analysis field
GridSeriesFeature
Time-series of gridded parameter fields
numerical weather prediction model, ocean general
circulation model
SwathFeature
Two-dimensional grid of data along a satellite
ground-path
AVHRR satellite imagery
PointFeature
cd PointFeature
CV_DiscreteCoverage
Discrete Cov erages::CV_DiscretePointCov erage
+
+
+
«type»
Affordance::PointType
find(DirectPosition*, Integer*) : Sequence<CV_PointValuePair>
list() : Set<CV_PointValuePair>
locate(DirectPosition*) : Set<CV_PointValuePair>
+
+
+
«implement»
Cov erage Types::
PointCov erage
location: DirectPosition
time: TM_Position [0..1]
value: PointCoverage
«realize»
«FeatureType»
PointFeature
+value
+/ domainSet: GM_Point
+/ rangeSet: Record [0..*]
+
+
location: DirectPosition
time: TM_Position [0..1]
+parameter
Need to separate
out time from
coverage domain,
as GML does not
allow compound
spatiotemporal
position.
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
PointSeriesFeature
cd PointSeriesFeature
«type»
Affordance::PointSeriesType
CV_Coverage
Discrete Cov erages::CV_DiscreteCov erage
+
+
+
location: DirectPosition [0..1]
value: PointSeriesCoverage
+
+
extractPointFeature() : PointFeature
extractPointSeriesFeature() : PointSeriesFeature
locate(DirectPosition*) : Set<CV_GeometryValuePair>
«implement»
Cov erage Types::PointSeriesCov erage
+/ domainSet: TimeSeriesDomain
+/ rangeSet: Record [0..*]
«realize»
«FeatureType»
PointSeriesFeature
+value
+
location: DirectPosition [0..1]
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
TM_Complex
«Type»
Domain geometries::
TimeSeriesDomain
+
time: Sequence<TM_Instant>
Need efficient implementation of
Sequence<TM_Instant> - some kind
of TimePositionList. NB O&M
SWEBase has TimeGrid and
TimeInstantGrid for regular temporal
spacing; also TimePositionList for
arbitrary sequence of times.
ProfileFeature
cd ProfileFeature
«type»
Affordance::ProfileType
CV_DiscreteCoverage
Discrete Cov erages::CV_DiscretePointCov erage
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_PointValuePair>
list() : Set<CV_PointValuePair>
locate(DirectPosition*) : Set<CV_PointValuePair>
+
+
+
location: DirectPosition [0..1]
time: TM_Position [0..1]
value: ProfileCoverage
+
+
extractPoint() : PointFeature
extractProfile() : ProfileFeature
«implement»
«realize»
Cov erage Types::ProfileCov erage
+/ domainSet: GM_PointArray
+/ rangeSet: Record [0..*]
constraints
{domainSet is vertical array of points}
«FeatureType»
ProfileFeature
+value
+
+
location: DirectPosition [0..1]
time: TM_Position [0..1]
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
PointCollectionFeature
cd PointCollectionFeature
«type»
Affordance::PointCollectionType
+
+
time: TM_Position [0..1]
value: CV_DiscretePointCoverage
+
+
extractPointCollectionFeature() : PointCollectionFeature
extractPointFeature() : PointFeature
«realize»
CV_DiscreteCoverage
Discrete Cov erages::CV_DiscretePointCov erage
«FeatureType»
PointCollectionFeature
+value
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_PointValuePair>
list() : Set<CV_PointValuePair>
locate(DirectPosition*) : Set<CV_PointValuePair>
+
time: TM_Position [0..1]
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
ProfileSeriesFeature
cd ProfileSeriesFeature
«type»
Affordance::ProfileSeriesType
CV_DiscreteCoverage
Discrete Cov erages::CV_DiscreteGridPointCov erage
+
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_GridPointValuePair>
list() : Set<CV_GridPointValuePair>
locate(DirectPosition*) : Set<CV_GridPointValuePair>
point(CV_GridCoordinate*) : CV_GridPointValuePair
«implement»
Cov erage Types::
ProfileSeriesCov erage
+/ domainSet: ProfileSeriesDomain
+/ rangeSet: Record [0..*]
ReferenceableGrid
«ObjectType»
Domain geometries::
ProfileSeriesDomain
ProfileSeriesDomain
is 2-d (z and t)
+
+
location: DirectPosition [0..1]
value: ProfileSeriesCoverage
+
+
+
+
extractPoint() : PointFeature
extractPointSeries() : PointSeriesFeature
extractProfile() : ProfileFeature
extractProfileSeries() : ProfileSeriesFeature
«realize»
«FeatureType»
ProfileSeriesFeature
+value
+
location: DirectPosition [0..1]
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
RaggedProfileSeriesFeature
cd RaggedProfileSeriesFeature
CV_DiscreteCoverage
«type»
Affordance::RaggedProfileSeriesType
Discrete Cov erages::CV_DiscreteGridPointCov erage
+
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_GridPointValuePair>
list() : Set<CV_GridPointValuePair>
locate(DirectPosition*) : Set<CV_GridPointValuePair>
point(CV_GridCoordinate*) : CV_GridPointValuePair
+
+
+
location: DirectPosition [0..1]
profileLength: int [0..*]
value: ProfileSeriesCoverage
+
+
+
+
extractPointFeature() : PointFeature
extractPointSeriesFeature() : PointSeriesFeature
extractProfileFeature() : ProfileFeature
extractRaggedProfileSeriesFeature() : RaggedProfileSeriesFeature
«implement»
«realize»
Cov erage Types::
ProfileSeriesCov erage
+/ domainSet: ProfileSeriesDomain
+/ rangeSet: Record [0..*]
«FeatureType»
RaggedProfileSeriesFeature
+value
+
+
location: DirectPosition [0..1]
profileLength: int [0..*]
ReferenceableGrid
«ObjectType»
Domain geometries::
ProfileSeriesDomain
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
ProfileSeriesDomain
is 2-d (z and t)
SectionFeature
cd SectionFeature
CV_DiscreteCoverage
«type»
Affordance::SectionType
Discrete Cov erages::CV_DiscreteGridPointCov erage
+
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_GridPointValuePair>
list() : Set<CV_GridPointValuePair>
locate(DirectPosition*) : Set<CV_GridPointValuePair>
point(CV_GridCoordinate*) : CV_GridPointValuePair
+
+
+
stationLocations: DirectPosition [0..*]
stationTimes: TM_Position [0..*]
value: SectionCoverage
+
+
+
extractPointFeature() : PointFeature
extractProfileFeature() : ProfileFeature
extractTrajectory() : TrajectoryFeature
«implement»
«realize»
Cov erage Types::
SectionCov erage
+/ domainSet: SectionDomain
+/ rangeSet: Record [0..*]
«FeatureType»
SectionFeature
+value
+
+
stationLocations: DirectPosition [0..*]
stationTimes: TM_Position [0..*]
ReferenceableGrid
«ObjectType»
Domain geometries::
SectionDomain
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
RaggedSectionFeature
cd RaggedSectionFeature
CV_DiscreteCoverage
«type»
Affordance::RaggedSectionType
Discrete Cov erages::CV_DiscreteGridPointCov erage
+
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_GridPointValuePair>
list() : Set<CV_GridPointValuePair>
locate(DirectPosition*) : Set<CV_GridPointValuePair>
point(CV_GridCoordinate*) : CV_GridPointValuePair
+
+
+
+
profileLength: int [0..*]
stationLocations: DirectPosition [0..*]
stationTimes: TM_Position [0..*]
value: SectionCoverage
+
+
+
extractPointFeature() : PointFeature
extractProfileFeature() : ProfileFeature
extractTrajectory() : TrajectoryFeature
«implement»
«realize»
Cov erage Types::
SectionCov erage
+/ domainSet: SectionDomain
+/ rangeSet: Record [0..*]
«FeatureType»
RaggedSectionFeature
+value
+
+
+
profileLength: int [0..*]
stationLocations: DirectPosition [0..*]
stationTimes: TM_Position [0..*]
+parameter
AnyDefinition
ReferenceableGrid
«ObjectType»
Domain geometries::
SectionDomain
«ObjectType»
phenomenon::
Phenomenon
SwathFeature
cd Sw athFeature
«type»
Affordance::SwathType
CV_DiscreteCoverage
Discrete Cov erages::CV_DiscreteGridPointCov erage
+
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_GridPointValuePair>
list() : Set<CV_GridPointValuePair>
locate(DirectPosition*) : Set<CV_GridPointValuePair>
point(CV_GridCoordinate*) : CV_GridPointValuePair
«implement»
Cov erage Types::
ReferenceableGridCov erage
+
+
+
eqCrossLon: Value [0..1]
eqCrossTime: TM_Position [0..1]
value: ReferenceableGridCoverage
+
+
+
+
extractGrid() : GridFeature
extractPoint() : PointFeature
extractPointCollection() : PointCollectionFeature
extractSwath() : SwathFeature
«realize»
«FeatureType»
Sw athFeature
+value
+/ domainSet: ReferenceableGrid
+/ rangeSet: Record [0..*]
Perhaps should restrict
associated coverage to
a two-dimensional
subclass of
ReferenceableGrid.
+
+
eqCrossLon: Value [0..1]
eqCrossTime: TM_Position [0..1]
Should have
bounding polygon
(though not
implemented in GML)
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
GridFeature
cd GridFeature
CV_DiscreteCoverage
«type»
Affordance::GridType
Discrete Cov erages::CV_DiscreteGridPointCov erage
+
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_GridPointValuePair>
list() : Set<CV_GridPointValuePair>
locate(DirectPosition*) : Set<CV_GridPointValuePair>
point(CV_GridCoordinate*) : CV_GridPointValuePair
+
+
time: TM_Position
value: ReferenceableGridCoverage
+
+
+
+
+
extractGrid() : GridFeature
extractPoint() : PointFeature
extractPointCollection() : PointCollectionFeature
extractProfile() : ProfileFeature
extractSection() : SectionFeature
«implement»
«realize»
Cov erage Types::
ReferenceableGridCov erage
+/ domainSet: ReferenceableGrid
+/ rangeSet: Record [0..*]
«FeatureType»
GridFeature
+value
+
time: TM_Position
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
GridSeriesFeature
cd GridSeriesFeature
«type»
Affordance::GridSeriesType
CV_DiscreteCoverage
Discrete Cov erages::CV_DiscreteGridPointCov erage
+
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_GridPointValuePair>
list() : Set<CV_GridPointValuePair>
locate(DirectPosition*) : Set<CV_GridPointValuePair>
point(CV_GridCoordinate*) : CV_GridPointValuePair
+
value: GridSeriesCoverage
+
+
+
+
+
+
+
+
extactPointCollection() : PointCollectionFeature
extractGridFeature() : GridFeature
extractGridSeriesFeature() : PointSeriesFeature
extractPointFeature() : PointFeature
extractPointSeriesFeature() : PointSeriesFeature
extractProfileFeature() : ProfileFeature
extractProfileSeriesFeature() : ProfileSeriesFeature
extractSection() : SectionFeature
«implement»
«realize»
Cov erage Types::
GridSeriesCov erage
+value
«FeatureType»
GridSeriesFeature
+/ domainSet: GridSeriesDomain
+/ rangeSet: Record [0..*]
ReferenceableGrid
«ObjectType»
Domain geometries::
GridSeriesDomain
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
TrajectoryFeature
cd Traj ectoryFeature
CV_Coverage
Discrete Cov erages::CV_DiscreteCov erage
+
«type»
Affordance::TrajectoryType
locate(DirectPosition*) : Set<CV_GeometryValuePair>
+
value: TrajectoryCoverage
+
extractPointFeature() : PointFeature
«implement»
«realize»
Cov erage Types::Traj ectoryCov erage
+/ domainSet: TrajectoryDomain
+/ rangeSet: Record [0..*]
+value
«FeatureType»
Traj ectoryFeature
+parameter
AnyDefinition
«ObjectType»
phenomenon::
Phenomenon
ReferenceableGrid
«ObjectType»
Domain geometries::
Traj ectoryDomain
ScanningRadarFeature
cd ScanningRadarFeature
Need to add
affordance
operations
CV_DiscreteCoverage
Discrete Cov erages::CV_DiscreteGridPointCov erage
+
+
+
+
find(DirectPosition*, Integer*) : Sequence<CV_GridPointValuePair>
list() : Set<CV_GridPointValuePair>
locate(DirectPosition*) : Set<CV_GridPointValuePair>
point(CV_GridCoordinate*) : CV_GridPointValuePair
«type»
Affordance::ScanningRadarType
+
+
elevation: Angle [0..1]
value: ScanningRadarCoverage
+
+
extractPointFeature() : PointFeature
extractProfileFeature() : ProfileFeature
«implement»
«realize»
Cov erage Types::
ScanningRadarCov erage
+/ domainSet: ScanningRadarDomain
+/ rangeSet: Record [0..*]
«FeatureType»
ScanningRadarFeature
+value
+
elevation: Angle [0..1]
+parameter
AnyDefinition
ReferenceableGrid
«ObjectType»
Domain geometries::
ScanningRadarDomain
«ObjectType»
phenomenon::
Phenomenon
CSML instances – semantic wrapper to
persisted file-based data
• xlink recommended in GML for linking to external
content, but no best practice established
• CSML wants to use this for linking to storage desriptor
for coverage domain/range
• ‘simple xlink’ properties:
– role: indicates a property of remote resource
– arcrole: describes meaning of remote resource
<someGMLElement
xlink:arcrole="hasRemoteContentEmbeddedAt#localXpath"
xlink:href="storageDescriptor#portion"
xlink:role="storageSchemaIdentifier"
xlink:show="embed"
xlink:actuate="onRequest | onLoad"/>
CSML instances – xlink example
<csml:gridOrdinate>
<csml:GridOrdinateDescription>
<csml:coordAxisLabel>Geodetic longitude</csml:coordAxisLabel>
<csml:coordAxisValues>
<csml:SpatialOrTemporalPositionList>
<csml:coordinateList srsName=“WGS84”>13.5 24.9 32.4 37.7 41.5 46.8 54.4 65.7
</csml:coordinateList>
</csml:SpatialOrTemporalPositionList>
</csml:coordAxisValues>
<csml:gridAxesSpanned>x</csml:gridAxesSpanned >
<csml:sequenceRule axisOrder="+1">Linear</csml:sequenceRule>
</csml:GridOrdinateDescription>
</csml:gridOrdinate>
<csml:coordAxisValues
xlink:arcrole=“http://ndg.nerc.ac.uk/xlinkUsage/insert#SpatialOrTemporalPositionList/coordinateList”
xlink:href=“file://myfile.nc#lon”
xlink:href="CSMLStorageDescriptorExample.xml#coapec_u_2"
xlink:role=“http://ndg.nerc.ac.uk/fileFormat/netcdf”
xlink:role=
"http://ndg.nerc.ac.uk/fileFormat/csmlStorageDescriptor"
xlink:show=“embed”>
<csml:SpatialOrTemporalPositionList>
<csml:coordinateList srsName=“WGS84”/>
</csml:SpatialOrTemporalPositionList>
</csml:coordAxisValues>
CSML Storage Descriptor
cd StorageDescriptor
CSMLStorageDescriptor
+descriptor
0..*
+component
«type»
ArrayDescriptor
+
+
+
+
+
+
«type»
InlineArray
+
«type»
ArrayGenerator
values: anySimpleType [0..*]
«type»
NASAAmesExtract
+
+
index: int [0..1]
variableName: string
*
arraySize: int [1..*]
id: ID
numericTransform: string [0..1]
numericType: string [0..1]
regExpTransform: string [0..1]
uom: UomIdentifier [0..1]
+
expression: string
variableName: string
«type»
CDMLExtract
+
fileNames: anyURI [0..*]
«Union»
FileExtract
+
+
fileList: FileList [0..1]
fileName: anyURI
«type»
AggregatedArray
+
+
«type»
GRIBExtract
«type»
NetCDFExtract
+
«type»
FileList
+
+
+
+
ctlVariableName: string [0..1]
fileOffset: int [0..1]
parameterCode: int
recordNumber: int [0..1]
aggIndex: int
aggType: string
«type»
Raw FileExtract
+
+
bitDepth: int [0..1]
endianness: string [0..1]