Skip to content

Re-organize CIS into simpler Core + Extensions #21

Description

@jerstlouis

As I highlighted in the CoverageJSON / Conceptual modeling e-mail thread, the current CIS specification presents many significant barriers to implementation by developers. These are also obstacles faced by the CoverageJSON submitters in trying to do a proper comparison with CIS and to an eventual harmonization effort.

  • There is a lot of confusion with the similarly named coverage classes inherited from GMLCOV which CIS 1.1 currently indicates may be deprecated in the future, and for which there is no JSON encoding (see also JSON encoding for rectified grid-regular coverage, GridCoverage vs. GeneralGrid #11)
  • There is no JSON encoding defined for the discrete-mesh coverage types (MultiPointCurve, MultiPointSurface, MultiPointSolid)
  • There are dependencies on separate complex standards (e.g. coverage function from GML 3.2.1; RangeType / DataRecord from SWE Common; transformation from SensorML) which requires an implementor to dig deep into those standards in order to implement conformance classes, despite only small bits of those being relevant
  • There is a lack of examples for certain capabilities (e.g. grid-transformation -- any possibilities to define transformation besides SensorML? the one example links to HTML pages, surely that is not valid; using GeneralGridCoverage with custom CRS with affine transformation to handle the GMLCOV grid coverage types use cases)
  • The Conceptual and Logical model for CIS are defined together in the same conformance classes, leading to significant confusion as to how encodings besides the XML/GML, JSON and RDF defined in the standard (other-format-coverage conformance class) can still conform to the Conceptual Model (e.g. coverage and grid-regular conformance class, as illustrated by the CoverageJSON e-mail thread. Having separate conformance classes for the logical model would avoid the need for an other-format-coverage conformance class altogether, and make the Abstract Tests more streamlined.

To address these issues, I suggest that in a future CIS (1.2?) revision:

  • We fully deprecate coverage types marked for deprecation (GridCoverage, Rectified­Grid­Coverage, Reference­able­Grid­Cov­er­age), after verifying the use cases for them are easily and clearly handled (e.g. with proper examples such as for custom CRS defining affine transformation) by the GeneralGridCoverage
  • We define the missing JSON encodings for the discrete mesh coverage types (perhaps embedding TopoJSON or GeoJSON)
  • We try to better align the name of the conceptual/logical model classes with the name of the conformance classes, where possible (e.g. right now General Grid coverages is defined inside class grid-regular which is super confusing)
  • We embed in each part/document all the essential relevant explanations, UML diagrams, schemas and examples inherited from other standards (GML 3.2.1, SWE Common, SensorML), while still referencing those documents as appropriate
  • We re-organize the specifications into separate parts/documents as suggested below:
  1. A minimalistic Core Coverage Implementation Schema covering the current coverage conformance class (AbstractCoverage), including describing the domain set and range type) as well as support for regular grid (grid-regular conformance class, GeneralGridCoverage) but without introducing irregular grids/axes yet
    • Conceptual Model
    • Logical model
    • Encodings (JSON, RDF, XML)
  2. An Irregular Grid Coverage extension adding support for irregular grids (grid-irregular conformance class) to GeneralGridCoverage
    • Conceptual Model
    • Logical model
    • Encodings (JSON, RDF, XML)
  3. A Point Coud Coverage extension adding support for point clouds (discrete-pointcloud conformance class, MultiPointCoverage)
    • Conceptual Model
    • Logical model
    • Encodings (JSON, RDF, XML)
  4. A Discrete Mesh Coverage extension, adding support for coverage defined by 1D, 2D or 3D geometries (discrete-mesh conformance class, MultiCurveCoverage, MultiSurfaceCoverage, MultiSolidCoverage)
    • Conceptual Model
    • Logical model
    • Encodings (JSON, RDF, XML)
  5. A Grid Transformation extension adding support to apply transformations to the grid (grid-transformation conformance clas, as done with SensorML (including practical examples)
    • Conceptual Model
    • Logical model
    • Encodings (JSON, RDF, XML)
  6. A Partitioned Coverage extension adding support to specify a coverage in multiple parts (coverage-partitioning conformance class; review whether the Position / Values specified here is redundant with the Point Cloud extension)
    • Conceptual Model
    • Logical model
    • Encodings (JSON, RDF, XML)

To review: whether the current multipart-coverage (easy to confuse with coverage-partitioning) and container conformance classes are also relevant for defining additional extensions, or if perhaps they are better handled in the definition of an API/service or data store, respectively.

(See also current complete CIS UML diagrams)

@joanma747 @pebau @Schpidi @cmheazel @ogcscotts @ghobona @cnreediii @jonblower @chris-little @tomkralidis @pomakis @rob-metalinkage @luciocola @lieberjosh @KathiSchleidt @EmDevys @dblodgett-usgs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions