nerc datagrid and csml ndg team. csml: context nerc datagrid: the integration problem –multiple...

37
NERC DataGrid and CSML NDG Team

Upload: rosanna-carr

Post on 29-Dec-2015

235 views

Category:

Documents


1 download

TRANSCRIPT

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

???

GEOSS WISINSPIRE

Background: ‘feature types’

• Emerging ISO standards– TC211 – around

40 standards for geographic information

– Cover activity spectrum: discovery access use A geospatial dataset…

…consists of features and related objects…

…in a defined logical structure…

…delivered through services…

…and described by metadata.

ISO 19101Domain Reference Model

[from ISO 19109 “Geographic information – Rules for Application Schema”]

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

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)

NDG

Universe of discourse

...

startTime[1]bottomTime[1]salinity[*]temperature[*]depth[*]

CTDProfile

...

...

Feature types

ISO 19103

<?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>

Application schema

ISO 19109

FTC

ISO 19110 <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

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

abstract generic highly specialised

feature types spectrum

<temperatureProfile/><measurement type=“Radiosonde” measurand=“temperature”/> <Sonde parameter=“temperature”/>

CSML ambition

• The CSML ‘niche’– set of base feature types for specialising or

using as-iscd CSML future

CF v ocab Obs & Meas

Climate CRS

CSML

+ GridSeriesFeature

+ ProfileSeriesFeatureMyModel

+ Ensemble

+ EnsembleMember

+ Mooring

«import»

«import» «import»

«import»

cd MyModel

«interface»CSML::ProfileSeriesFeature

+ domainSet: = Profi leSeriesDomain+ parameter: om:Phenomenon+ rangeSet:

Mooring

+ averaging: + blowover: + deploymentEnd: + deploymentStart:

«interface»CSML::GridSeriesFeature

+ domainSet: = GridSeriesDomain+ parameter: om:Phenomenon+ rangeSet:

Ensemble

+ ensembleParameters:

EnsembleMember

+ memberNumber: + paramValues:

*

What is CSML?

British OceanographicData Centre

British AtmosphericData Centre

ISO standards

‘Governance Principle’

Climate Science Modelling Language

«FeatureType»AbstractGeometryFeature

«FeatureType»AbstractStaticCoverageFeature

«FeatureType»AbstractSeriesCoverageFeature

+domainSet : AbstractDomain+coverageFunction : MappingRule

«FeatureType»AbstractCoverageFeature

+domainSet+rangeSet+coverageFunction

«FeatureType»GML::AbstractDiscreteCoverage

+track : Trajectory

«FeatureType»TrajectoryFeature

+domainSet : ProfileDomain

«FeatureType»ProfileFeature

+domainSet : PointDomain

«FeatureType»PointFeature

«FeatureType»SectionFeature

+domainSet : GridDomain

«FeatureType»GridFeature

+domainSet : PointSeriesDomain

«FeatureType»PointSeriesFeature

+domainSet : ProfileSeriesDomain

«FeatureType»ProfileSeriesFeature

«FeatureType»SectionSeriesFeature

+domainSet : GridSeriesDomain

«FeatureType»GridSeriesFeature

{domainSet.domainReference = Position}

{domainSet.domainReference = Trajectory}

OGC Obs & Meas::Phenomenon

+parameter

{+,-}phenomenon{+,-}seriesFeature{+,-}gridI{+,-}gridJ{+,-}gridK

«Enumeration»IncrementOrder

+scanOrder[0..1] : Sequence<IncrementOrder>

«DataType»MappingRule

+id[0..1]+metaDataProperty[0..1]+description[0..1]+name[0..1]+boundedBy[0..1]

«DataType»GML::AbstractFeature

<?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>

Conceptual model Schemas

Tooling

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

Event

«FeatureType»observ ation::Observ ation

+ quality: DQ_DataQuality [0..1]+ responsible: CI_ResponsibleParty [0..1]+ result: Any

«Union»procedure::Procedure

+ procedureUse: ProcedureEvent+ standardProcedure: ProcedureSystem

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«FeatureType»Feature Types::

ProfileSeriesFeature

+ location: DirectPosition [0..1]

CV_DiscreteGridPointCoverage

Cov erage Types::ProfileSeriesCov erage

+/ domainSet: ProfileSeriesDomain+/ rangeSet: Record [0..*]

+generatedObservation 0..*

+procedure 1

+observedProperty

1{Definition must be of a phenomenon that is a property of the featureOfInterest}

+parameter

+value

+result

+featureOfInterest

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

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 Featurecd Abstract CSML Feature

«type»Affordance::

CSMLAffordance

«FeatureType»CSMLFeature

AnyDefinition

«ObjectType»phenomenon::Phenomenon

CV_Coverage

Discrete Cov erages::CV_DiscreteCoverage

+ locate(DirectPosition*) : Set<CV_GeometryValuePair>

Coverage Types::CSMLCoverage

+/ rangeSet: Record [0..*]

«ObjectType»Domain geometries::

CSMLCoverageDomain

+value

+domainSet

«implement»

+parameter

«realize»

CSML ReferenceableGrid

• Implementation of ISO 19123 CV_ReferenceableGrid, missing from GML

• Subject of OGC GML Change Request (doc 06-160)

• 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 subclassescd ReferenceableGrid subclasses

Grid

«ObjectType»ReferenceableGrid

+ coordTransformTable: GridCoodinatesTable::Grid+ AxisName: string [1..*]+ limits: GridEnvelope::AbstractGeometry+ srsName: anyURI::AbstractGML+ description: CharacterString [0..1]+ id: ID+ name: GenericName [0..*]

«ObjectType»GridSeriesDomain

SC_CompoundCRS

CRS::SpatioTemporalCRS

«ObjectType»ProfileSeriesDomain

* 3- or 4-d Grid

* 3- or 4-d compositeCRS: - 2- or 3-d spatial - 1-d temporal

* 2-d Grid

* 2-d composite CRS: - 1-d spatial - 1-d temporal«ObjectType»

TrajectoryDomain

* 1-d Grid

* 2-, 3- or 4-d composite CRS: - 1-, 2-, or 3-d spatial - 1-d temporal

«ObjectType»ScanningRadarDomain

SC_EngineeringCRS

CRS::AzimuthRangeCRS

«ObjectType»SectionDomain

* 2-d Grid

* 3-d spatial CRS

* One grid axis aligned with CRS 'z' axis

* 2-d Grid

* 2-d Azimth-Range CRS

+crs +crs

+crs

+crs

CSML v2 Feature TypesFeature 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

PointFeaturecd PointFeature

CV_DiscreteCoverage

Discrete Cov erages::CV_DiscretePointCov erage

+ find(DirectPosition*, Integer*) : Sequence<CV_PointValuePair>+ list() : Set<CV_PointValuePair>+ locate(DirectPosition*) : Set<CV_PointValuePair>

«FeatureType»PointFeature

+ location: DirectPosition+ time: TM_Position [0..1]

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«type»Affordance::PointType

+ location: DirectPosition+ time: TM_Position [0..1]+ value: PointCoverage

Need to separate out time from coverage domain,as GML does not allow compound spatiotemporal position.

Cov erage Types::PointCoverage

+/ domainSet: GM_Point+/ rangeSet: Record [0..*]

+parameter

«realize»

+value

«implement»

PointSeriesFeaturecd PointSeriesFeature

TM_Complex

«Type»Domain geometries::TimeSeriesDomain

+ time: Sequence<TM_Instant>

Cov erage Types::PointSeriesCov erage

+/ domainSet: TimeSeriesDomain+/ rangeSet: Record [0..*]

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«FeatureType»PointSeriesFeature

+ location: DirectPosition [0..1]

«type»Affordance::PointSeriesType

+ location: DirectPosition [0..1]+ value: PointSeriesCoverage

+ extractPointFeature() : PointFeature+ extractPointSeriesFeature() : PointSeriesFeature

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.

CV_Coverage

Discrete Cov erages::CV_DiscreteCoverage

+ locate(DirectPosition*) : Set<CV_GeometryValuePair>

+parameter

+value

«realize»«implement»

ProfileFeaturecd ProfileFeature

CV_DiscreteCoverage

Discrete Cov erages::CV_DiscretePointCov erage

+ find(DirectPosition*, Integer*) : Sequence<CV_PointValuePair>+ list() : Set<CV_PointValuePair>+ locate(DirectPosition*) : Set<CV_PointValuePair>

Cov erage Types::ProfileCoverage

+/ domainSet: GM_PointArray+/ rangeSet: Record [0..*]

constraints{domainSet is vertical array of points}

«FeatureType»ProfileFeature

+ location: DirectPosition [0..1]+ time: TM_Position [0..1]

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«type»Affordance::ProfileType

+ location: DirectPosition [0..1]+ time: TM_Position [0..1]+ value: ProfileCoverage

+ extractPoint() : PointFeature+ extractProfile() : ProfileFeature

+parameter

+value

«implement»

«realize»

PointCollectionFeaturecd PointCollectionFeature

CV_DiscreteCoverage

Discrete Cov erages::CV_DiscretePointCov erage

+ find(DirectPosition*, Integer*) : Sequence<CV_PointValuePair>+ list() : Set<CV_PointValuePair>+ locate(DirectPosition*) : Set<CV_PointValuePair>

«FeatureType»PointCollectionFeature

+ time: TM_Position [0..1]

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«type»Affordance::PointCollectionType

+ time: TM_Position [0..1]+ value: CV_DiscretePointCoverage

+ extractPointCollectionFeature() : PointCollectionFeature+ extractPointFeature() : PointFeature

+parameter

«realize»

+value

ProfileSeriesFeaturecd ProfileSeriesFeature

Cov erage Types::ProfileSeriesCov erage

+/ domainSet: ProfileSeriesDomain+/ rangeSet: Record [0..*]

«FeatureType»ProfileSeriesFeature

+ location: DirectPosition [0..1]

AnyDefinition

«ObjectType»phenomenon::Phenomenon

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::ProfileSeriesType

+ location: DirectPosition [0..1]+ value: ProfileSeriesCoverage

+ extractPoint() : PointFeature+ extractPointSeries() : PointSeriesFeature+ extractProfile() : ProfileFeature+ extractProfileSeries() : ProfileSeriesFeature

ReferenceableGrid

«ObjectType»Domain geometries::ProfileSeriesDomain

ProfileSeriesDomain is 2-d (z and t)

+parameter

+value

«realize»«implement»

RaggedProfileSeriesFeaturecd RaggedProfileSeriesFeature

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«FeatureType»RaggedProfileSeriesFeature

+ location: DirectPosition [0..1]+ profileLength: int [0..*]

«type»Affordance::RaggedProfileSeriesType

+ location: DirectPosition [0..1]+ profileLength: int [0..*]+ value: ProfileSeriesCoverage

+ extractPointFeature() : PointFeature+ extractPointSeriesFeature() : PointSeriesFeature+ extractProfileFeature() : ProfileFeature+ extractRaggedProfileSeriesFeature() : RaggedProfileSeriesFeature

Cov erage Types::ProfileSeriesCov erage

+/ domainSet: ProfileSeriesDomain+/ rangeSet: Record [0..*]

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

ReferenceableGrid

«ObjectType»Domain geometries::ProfileSeriesDomain

ProfileSeriesDomain is 2-d (z and t)

«realize»

+parameter

+value

«implement»

SectionFeaturecd SectionFeature

AnyDefinition

«ObjectType»phenomenon::Phenomenon

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

«FeatureType»SectionFeature

+ stationLocations: DirectPosition [0..*]+ stationTimes: TM_Position [0..*]

«type»Affordance::SectionType

+ stationLocations: DirectPosition [0..*]+ stationTimes: TM_Position [0..*]+ value: SectionCoverage

+ extractPointFeature() : PointFeature+ extractProfileFeature() : ProfileFeature+ extractTrajectory() : TrajectoryFeature

Cov erage Types::SectionCoverage

+/ domainSet: SectionDomain+/ rangeSet: Record [0..*]

ReferenceableGrid

«ObjectType»Domain geometries::

SectionDomain

«implement»

«realize»

+value

+parameter

RaggedSectionFeaturecd RaggedSectionFeature

«FeatureType»RaggedSectionFeature

+ profileLength: int [0..*]+ stationLocations: DirectPosition [0..*]+ stationTimes: TM_Position [0..*]

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«type»Affordance::RaggedSectionType

+ profileLength: int [0..*]+ stationLocations: DirectPosition [0..*]+ stationTimes: TM_Position [0..*]+ value: SectionCoverage

+ extractPointFeature() : PointFeature+ extractProfileFeature() : ProfileFeature+ extractTrajectory() : TrajectoryFeature

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

Cov erage Types::SectionCoverage

+/ domainSet: SectionDomain+/ rangeSet: Record [0..*]

ReferenceableGrid

«ObjectType»Domain geometries::

SectionDomain

«implement»

«realize»

+parameter

+value

SwathFeaturecd SwathFeature

Cov erage Types::ReferenceableGridCov erage

+/ domainSet: ReferenceableGrid+/ rangeSet: Record [0..*]

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

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«FeatureType»SwathFeature

+ eqCrossLon: Value [0..1]+ eqCrossTime: TM_Position [0..1]

Should have bounding polygon (though not implemented in GML)

«type»Affordance::SwathType

+ eqCrossLon: Value [0..1]+ eqCrossTime: TM_Position [0..1]+ value: ReferenceableGridCoverage

+ extractGrid() : GridFeature+ extractPoint() : PointFeature+ extractPointCollection() : PointCollectionFeature+ extractSwath() : SwathFeature

Perhaps should restrict associated coverage to a two-dimensional subclass of ReferenceableGrid.

«realize»

+value

«implement»

GridFeaturecd GridFeature

Cov erage Types::ReferenceableGridCov erage

+/ domainSet: ReferenceableGrid+/ rangeSet: Record [0..*]

«FeatureType»GridFeature

+ time: TM_Position

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

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«type»Affordance::GridType

+ time: TM_Position+ value: ReferenceableGridCoverage

+ extractGrid() : GridFeature+ extractPoint() : PointFeature+ extractPointCollection() : PointCollectionFeature+ extractProfile() : Profi leFeature+ extractSection() : SectionFeature

«realize»

+parameter

+value

«implement»

GridSeriesFeaturecd GridSeriesFeature

Cov erage Types::GridSeriesCov erage

+/ domainSet: GridSeriesDomain+/ rangeSet: Record [0..*]

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

«FeatureType»GridSeriesFeature

AnyDefinition

«ObjectType»phenomenon::Phenomenon

ReferenceableGrid

«ObjectType»Domain geometries::

GridSeriesDomain

«type»Affordance::GridSeriesType

+ value: GridSeriesCoverage

+ extactPointCollection() : PointCollectionFeature+ extractGridFeature() : GridFeature+ extractGridSeriesFeature() : PointSeriesFeature+ extractPointFeature() : PointFeature+ extractPointSeriesFeature() : PointSeriesFeature+ extractProfileFeature() : Profi leFeature+ extractProfileSeriesFeature() : Profi leSeriesFeature+ extractSection() : SectionFeature

«realize»

+parameter

+value

«implement»

TrajectoryFeaturecd TrajectoryFeature

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«type»Affordance::TrajectoryType

+ value: TrajectoryCoverage

+ extractPointFeature() : PointFeature

Cov erage Types::TrajectoryCov erage

+/ domainSet: TrajectoryDomain+/ rangeSet: Record [0..*]

«FeatureType»TrajectoryFeature

ReferenceableGrid

«ObjectType»Domain geometries::

TrajectoryDomain

CV_Coverage

Discrete Cov erages::CV_DiscreteCov erage

+ locate(DirectPosition*) : Set<CV_GeometryValuePair>

«realize»

+parameter

«implement»

+value

ScanningRadarFeaturecd ScanningRadarFeature

«FeatureType»ScanningRadarFeature

+ elevation: Angle [0..1]

AnyDefinition

«ObjectType»phenomenon::Phenomenon

«type»Affordance::ScanningRadarType

+ elevation: Angle [0..1]+ value: ScanningRadarCoverage

+ extractPointFeature() : PointFeature+ extractProfileFeature() : ProfileFeature

Cov erage Types::ScanningRadarCov erage

+/ domainSet: ScanningRadarDomain+/ rangeSet: Record [0..*]

ReferenceableGrid

«ObjectType»Domain geometries::

ScanningRadarDomain

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

Need to add affordance operations

«realize»

+value

«implement»

+parameter

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:coordAxisValuesxlink:arcrole=“http://ndg.nerc.ac.uk/xlinkUsage/insert#SpatialOrTemporalPositionList/coordinateList”xlink:href=“file://myfile.nc#lon”xlink:role=“http://ndg.nerc.ac.uk/fileFormat/netcdf”xlink:show=“embed”> <csml:SpatialOrTemporalPositionList> <csml:coordinateList srsName=“WGS84”/> </csml:SpatialOrTemporalPositionList> </csml:coordAxisValues>

<csml:coordAxisValuesxlink:arcrole=“http://ndg.nerc.ac.uk/xlinkUsage/insert#SpatialOrTemporalPositionList/coordinateList”xlink:href="CSMLStorageDescriptorExample.xml#coapec_u_2"xlink:role= "http://ndg.nerc.ac.uk/fileFormat/csmlStorageDescriptor"xlink:show=“embed”> <csml:SpatialOrTemporalPositionList> <csml:coordinateList srsName=“WGS84”/> </csml:SpatialOrTemporalPositionList> </csml:coordAxisValues>

CSML Storage Descriptorcd StorageDescriptor

«type»ArrayDescriptor

+ arraySize: int [1..*]+ id: ID+ numericTransform: string [0..1]+ numericType: string [0..1]+ regExpTransform: string [0..1]+ uom: UomIdentifier [0..1]

«type»InlineArray

+ values: anySimpleType [0..*]

«type»ArrayGenerator

+ expression: string

«Union»FileExtract

+ fi leList: FileList [0..1]+ fi leName: anyURI

«type»NASAAmesExtract

+ index: int [0..1]+ variableName: string

«type»NetCDFExtract

+ variableName: string

«type»GRIBExtract

+ ctlVariableName: string [0..1]+ fi leOffset: int [0..1]+ parameterCode: int+ recordNumber: int [0..1]

«type»AggregatedArray

+ aggIndex: int+ aggType: string

«type»CDMLExtract

«type»RawFileExtract

+ bitDepth: int [0..1]+ endianness: string [0..1]

«type»FileList

+ fi leNames: anyURI [0..*]

CSMLStorageDescriptor

+descriptor 0..*

+component

*