nerc datagrid and csml ndg team. csml: context nerc datagrid: the integration problem –multiple...
TRANSCRIPT
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
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
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
*