Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
KRyden opened this issue Sep 2, 2024 · 0 comments

Comments

@KRyden
Copy link
Collaborator

KRyden commented Sep 2, 2024

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)."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant