opengeospatial / opengeospatial/CRS-JSON-Encoding

Definition of "vertical_crs", "vertical_cs" (Missing) and "vertical_axis" (missing)

Open
#57 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Makefile
Stars
0
Forks
2
Avg merge
1h 36m
Merged PRs (30d)
3

Description

NOTE: Markdown does not support highlighting in color, so bold/italic has been used to highlight the material being discussed. This issue is extracted from the document submitted by Roger Lott at https://github.com/opengeospatial/CRS-JSON-Encoding/blob/main/ProjJson%20v0-7%20RL%202024-06-16.docx for discussion at the CRS SWG meeting OGC held during the Montreal June 2024 TC meeting.

"vertical_crs": {
  "type": "object",
  "properties": {
    "type": { "type": "string", "enum": ["VerticalCRS"] },
    "name": { "type": "string" },
    "datum": {
        "oneOf": [
            { "$ref": "#/definitions/vertical_reference_frame" },
            { "$ref": "#/definitions/dynamic_vertical_reference_frame" }
            { "$ref": "#/definitions/datum_ensemble" }
        ]
    },

"datum_ensemble": { "$ref": "#/definitions/datum_ensemble" }, STRIKE THIS LINE
"coordinate_system": { "$ref": "#/definitions/coordinate_system" }, STRIKE THIS LINE
"coordinate_system": { "$ref": "#/definitions/vertical_cs" },
"geoid_model": { "$ref": "#/definitions/geoid_model" }, STRIKE THIS LINE
"geoid_model": { "$ref": "#/definitions/transformation" },

    "geoid_models": {
      "type": "array",

"items": { "$ref": "#/definitions/geoid_model" } STRIKE THIS LINE
"items": { "$ref": "#/definitions/transformation" }

    },
    "deformation_models": {
      "type": "array",
      "items": { "$ref": "#/definitions/deformation_model" }
    },
    "$schema" : {},

"scope": {},
"area": {},
"bbox": {},
"vertical_extent": {},
"temporal_extent": {},
"usages": {},

    "remarks": {},
    "id": {}, "ids": {}
  },

"required" : [ "name", "datum", "coordinate_system" ],
"description": "One and only one of datum and datum_ensemble must be provided",

  "allOf": [
    { "$ref": "#/definitions/object_usage" },

{ "$ref": "#/definitions/one_and_only_one_of_datum_or_datum_ensemble" },

    {
        "not": {
            "type": "object",
            "required": [ "geoid_model", "geoid_models" ]
        }
    }
  ],
  "additionalProperties": false
},

"$comment": "[RL] See comment regarding usage under compound_crs."

"$comment": "[RL] A vertical CRS should be constrained to having a vertical_cs."

"$comment": "[RL] A vertical CRS must have a datum or a datum_ensemble. The schema would be clearer if this was included in the required list."

"$comment": "[RL] Why two attributes geoid_model and geoid_models and only one attribute deformation_models when both associations in the 19111/Topic 2 data model have 0..* cardinallity?"

"$comment": "[RL] Is the geoid model(s) attribute correctly modelled? A geoid model is usually described as a transformation. If this were done here then is the geoid_model member definition above needed in the schema? However, although 19111/Topic 2 has the association to transformation, implying that the full definition is required, for brevity WKT2 requires only the geoid model name. Should the CRS JSON schema give option for either full definition or just name (or ID)?"

"$comment": "[RL] Same question about full definition or name/ID for deformation model. Schema definition of deformation_model allows for only ID."

"vertical_cs": {
  "type": "object",
  "properties": {
    "$schema" : { "type": "string" },
    "type": { "type": "string", "enum": ["verticalCS"] },
    "name": { "type": "string" },
    "vertical_axis": { "$ref": "#/definitions/vertical_axis" },
    "id": { "$ref": "#/definitions/id" },
    "ids": { "$ref": "#/definitions/ids" }
  },
  "required" : [ "vertical_axis" ],
  "allOf": [
    { "$ref": "#/definitions/id_ids_mutually_exclusive" }
  ],

"vertical_axis": {
  "type": "object",
  "properties": {
    "$schema" : { "type": "string" },
    "type": { "type": "string", "enum": ["axis"] },
    "name": { "type": "string", "enum": ["gravity-related height", "depth" ] },
    "abbreviation": { "type": "string" 
                      "not": { "type": "object",
                               "required": [ "h", ] }
    },
    "direction": { "type": "string", "enum": ["up", "down" ] },
    "unit": { "$ref": "#/definitions/unit" },
    "minimum_value": { "type": "number" },
    "maximum_value": { "type": "number" },
    "id": { "$ref": "#/definitions/id" },
    "ids": { "$ref": "#/definitions/ids" }
  },
  "required" : [ "name", "abbreviation", "direction" "unit" ],
  "allOf": [
    { "$ref": "#/definitions/id_ids_mutually_exclusive" }
  ],
  "additionalProperties": false
},

"$comment": "[RL] The definition constrains a vertical CS to have 1 axis, and axis name to be either 'gravity-related height' or 'depth', axis abbreviation to not be 'h', and axis direction to be either 'up' or down'. (This draft schema syntax needs verification)."

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the proposed vertical_crs, vertical_cs, and vertical_axis definitions in this issue, then read the linked ProjJson v0-7 RL 2024-06-16.docx. Resolve the open modeling questions and verify the draft schema syntax against the repository's existing schema definitions; done means the missing definitions and their constraints are agreed and consistently represented.

Written by the indexing model from the issue text.

Assessment

Tech stack
json
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.