1175 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
		
		
			
		
	
	
			1175 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
|  | { | ||
|  |   "$id": "https://proj.org/schemas/v0.7/projjson.schema.json", | ||
|  |   "$schema": "http://json-schema.org/draft-07/schema#", | ||
|  |   "description": "Schema for PROJJSON (v0.7)", | ||
|  |   "$comment": "This document is copyright Even Rouault and PROJ contributors, 2019-2023, and subject to the MIT license. This file exists both in data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp", | ||
|  | 
 | ||
|  |   "oneOf": [ | ||
|  |     { "$ref": "#/definitions/crs" }, | ||
|  |     { "$ref": "#/definitions/datum" }, | ||
|  |     { "$ref": "#/definitions/datum_ensemble" }, | ||
|  |     { "$ref": "#/definitions/ellipsoid" }, | ||
|  |     { "$ref": "#/definitions/prime_meridian" }, | ||
|  |     { "$ref": "#/definitions/single_operation" }, | ||
|  |     { "$ref": "#/definitions/concatenated_operation" }, | ||
|  |     { "$ref": "#/definitions/coordinate_metadata" } | ||
|  |   ], | ||
|  | 
 | ||
|  |   "definitions": { | ||
|  | 
 | ||
|  |     "abridged_transformation": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["AbridgedTransformation"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "source_crs": { | ||
|  |             "$ref": "#/definitions/crs", | ||
|  |             "$comment": "Only present when the source_crs of the bound_crs does not match the source_crs of the AbridgedTransformation. No equivalent in WKT" | ||
|  |         }, | ||
|  |         "method": { "$ref": "#/definitions/method" }, | ||
|  |         "parameters": { | ||
|  |             "type": "array", | ||
|  |             "items": { "$ref": "#/definitions/parameter_value" } | ||
|  |         }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "name", "method", "parameters" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "axis": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["Axis"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "abbreviation": { "type": "string" }, | ||
|  |         "direction": { "type": "string", | ||
|  |                        "enum": [ "north", | ||
|  |                                  "northNorthEast", | ||
|  |                                  "northEast", | ||
|  |                                  "eastNorthEast", | ||
|  |                                  "east", | ||
|  |                                  "eastSouthEast", | ||
|  |                                  "southEast", | ||
|  |                                  "southSouthEast", | ||
|  |                                  "south", | ||
|  |                                  "southSouthWest", | ||
|  |                                  "southWest", | ||
|  |                                  "westSouthWest", | ||
|  |                                  "west", | ||
|  |                                  "westNorthWest", | ||
|  |                                  "northWest", | ||
|  |                                  "northNorthWest", | ||
|  |                                  "up", | ||
|  |                                  "down", | ||
|  |                                  "geocentricX", | ||
|  |                                  "geocentricY", | ||
|  |                                  "geocentricZ", | ||
|  |                                  "columnPositive", | ||
|  |                                  "columnNegative", | ||
|  |                                  "rowPositive", | ||
|  |                                  "rowNegative", | ||
|  |                                  "displayRight", | ||
|  |                                  "displayLeft", | ||
|  |                                  "displayUp", | ||
|  |                                  "displayDown", | ||
|  |                                  "forward", | ||
|  |                                  "aft", | ||
|  |                                  "port", | ||
|  |                                  "starboard", | ||
|  |                                  "clockwise", | ||
|  |                                  "counterClockwise", | ||
|  |                                  "towards", | ||
|  |                                  "awayFrom", | ||
|  |                                  "future", | ||
|  |                                  "past", | ||
|  |                                  "unspecified" ] }, | ||
|  |         "meridian": { "$ref": "#/definitions/meridian" }, | ||
|  |         "unit": { "$ref": "#/definitions/unit" }, | ||
|  |         "minimum_value": { "type": "number" }, | ||
|  |         "maximum_value": { "type": "number" }, | ||
|  |         "range_meaning": { "type": "string", "enum": [ "exact", "wraparound"] }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "name", "abbreviation", "direction" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "bbox": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "east_longitude": { "type": "number" }, | ||
|  |         "west_longitude": { "type": "number" }, | ||
|  |         "south_latitude": { "type": "number" }, | ||
|  |         "north_latitude": { "type": "number" } | ||
|  |       }, | ||
|  |       "required" : [ "east_longitude", "west_longitude", | ||
|  |                      "south_latitude", "north_latitude" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "bound_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["BoundCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "source_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "target_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "transformation": { "$ref": "#/definitions/abridged_transformation" }, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |      }, | ||
|  |      "required" : [ "source_crs", "target_crs", "transformation" ], | ||
|  |      "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "compound_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["CompoundCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "components":  { | ||
|  |            "type": "array", | ||
|  |             "items": { "$ref": "#/definitions/crs" } | ||
|  |         }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "components" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "concatenated_operation": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["ConcatenatedOperation"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "source_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "target_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "steps":  { | ||
|  |            "type": "array", | ||
|  |             "items": { "$ref": "#/definitions/single_operation" } | ||
|  |         }, | ||
|  |         "accuracy": { "type": "string" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "source_crs", "target_crs", "steps" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "conversion": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["Conversion"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "method": { "$ref": "#/definitions/method" }, | ||
|  |         "parameters": { | ||
|  |             "type": "array", | ||
|  |             "items": { "$ref": "#/definitions/parameter_value" } | ||
|  |         }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "name", "method" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "coordinate_metadata": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["CoordinateMetadata"] }, | ||
|  |         "crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "coordinateEpoch": { "type": "number" } | ||
|  |       }, | ||
|  |       "required" : [ "crs" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "coordinate_system": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["CoordinateSystem"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "subtype": { "type": "string", | ||
|  |                      "enum": ["Cartesian", | ||
|  |                               "spherical", | ||
|  |                               "ellipsoidal", | ||
|  |                               "vertical", | ||
|  |                               "ordinal", | ||
|  |                               "parametric", | ||
|  |                               "affine", | ||
|  |                               "TemporalDateTime", | ||
|  |                               "TemporalCount", | ||
|  |                               "TemporalMeasure"]  }, | ||
|  |         "axis": { | ||
|  |             "type": "array", | ||
|  |             "items": { "$ref": "#/definitions/axis" } | ||
|  |         }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "subtype", "axis" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "crs": { | ||
|  |       "oneOf": [ | ||
|  |         { "$ref": "#/definitions/bound_crs" }, | ||
|  |         { "$ref": "#/definitions/compound_crs" }, | ||
|  |         { "$ref": "#/definitions/derived_engineering_crs" }, | ||
|  |         { "$ref": "#/definitions/derived_geodetic_crs" }, | ||
|  |         { "$ref": "#/definitions/derived_parametric_crs" }, | ||
|  |         { "$ref": "#/definitions/derived_projected_crs" }, | ||
|  |         { "$ref": "#/definitions/derived_temporal_crs" }, | ||
|  |         { "$ref": "#/definitions/derived_vertical_crs" }, | ||
|  |         { "$ref": "#/definitions/engineering_crs" }, | ||
|  |         { "$ref": "#/definitions/geodetic_crs" }, | ||
|  |         { "$ref": "#/definitions/parametric_crs" }, | ||
|  |         { "$ref": "#/definitions/projected_crs" }, | ||
|  |         { "$ref": "#/definitions/temporal_crs" }, | ||
|  |         { "$ref": "#/definitions/vertical_crs" } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "datum": { | ||
|  |       "oneOf": [ | ||
|  |         { "$ref": "#/definitions/geodetic_reference_frame" }, | ||
|  |         { "$ref": "#/definitions/vertical_reference_frame" }, | ||
|  |         { "$ref": "#/definitions/dynamic_geodetic_reference_frame" }, | ||
|  |         { "$ref": "#/definitions/dynamic_vertical_reference_frame" }, | ||
|  |         { "$ref": "#/definitions/temporal_datum" }, | ||
|  |         { "$ref": "#/definitions/parametric_datum" }, | ||
|  |         { "$ref": "#/definitions/engineering_datum" } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "datum_ensemble": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["DatumEnsemble"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "members": { | ||
|  |             "type": "array", | ||
|  |             "items": { | ||
|  |                 "type": "object", | ||
|  |                 "properties": { | ||
|  |                     "name": { "type": "string" }, | ||
|  |                     "id": { "$ref": "#/definitions/id" }, | ||
|  |                     "ids": { "$ref": "#/definitions/ids" } | ||
|  |                 }, | ||
|  |                 "required" : [ "name" ], | ||
|  |                 "allOf": [ | ||
|  |                     { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |                 ], | ||
|  |                 "additionalProperties": false | ||
|  |             } | ||
|  |         }, | ||
|  |         "ellipsoid": { "$ref": "#/definitions/ellipsoid" }, | ||
|  |         "accuracy": { "type": "string" }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "name", "members", "accuracy" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "deformation_model": { | ||
|  |       "description": "Association to a PointMotionOperation", | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "name": { "type": "string" }, | ||
|  |         "id": { "$ref": "#/definitions/id" } | ||
|  |       }, | ||
|  |       "required" : [ "name" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "derived_engineering_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", | ||
|  |                   "enum": ["DerivedEngineeringCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "base_crs": { "$ref": "#/definitions/engineering_crs" }, | ||
|  |         "conversion": { "$ref": "#/definitions/conversion" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |      }, | ||
|  |      "required" : [ "name", "base_crs", "conversion", "coordinate_system" ], | ||
|  |      "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "derived_geodetic_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", | ||
|  |                   "enum": ["DerivedGeodeticCRS", | ||
|  |                            "DerivedGeographicCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "base_crs": { "$ref": "#/definitions/geodetic_crs" }, | ||
|  |         "conversion": { "$ref": "#/definitions/conversion" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |      }, | ||
|  |      "required" : [ "name", "base_crs", "conversion", "coordinate_system" ], | ||
|  |      "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "derived_parametric_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", | ||
|  |                   "enum": ["DerivedParametricCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "base_crs": { "$ref": "#/definitions/parametric_crs" }, | ||
|  |         "conversion": { "$ref": "#/definitions/conversion" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |      }, | ||
|  |      "required" : [ "name", "base_crs", "conversion", "coordinate_system" ], | ||
|  |      "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "derived_projected_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", | ||
|  |                   "enum": ["DerivedProjectedCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "base_crs": { "$ref": "#/definitions/projected_crs" }, | ||
|  |         "conversion": { "$ref": "#/definitions/conversion" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |      }, | ||
|  |      "required" : [ "name", "base_crs", "conversion", "coordinate_system" ], | ||
|  |      "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "derived_temporal_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", | ||
|  |                   "enum": ["DerivedTemporalCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "base_crs": { "$ref": "#/definitions/temporal_crs" }, | ||
|  |         "conversion": { "$ref": "#/definitions/conversion" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |      }, | ||
|  |      "required" : [ "name", "base_crs", "conversion", "coordinate_system" ], | ||
|  |      "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "derived_vertical_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", | ||
|  |                   "enum": ["DerivedVerticalCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "base_crs": { "$ref": "#/definitions/vertical_crs" }, | ||
|  |         "conversion": { "$ref": "#/definitions/conversion" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |      }, | ||
|  |      "required" : [ "name", "base_crs", "conversion", "coordinate_system" ], | ||
|  |      "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "dynamic_geodetic_reference_frame": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["DynamicGeodeticReferenceFrame"] }, | ||
|  |         "name": {}, | ||
|  |         "anchor": {}, | ||
|  |         "anchor_epoch": {}, | ||
|  |         "ellipsoid": {}, | ||
|  |         "prime_meridian": {}, | ||
|  |         "frame_reference_epoch": { "type": "number" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "ellipsoid", "frame_reference_epoch" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "dynamic_vertical_reference_frame": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["DynamicVerticalReferenceFrame"] }, | ||
|  |         "name": {}, | ||
|  |         "anchor": {}, | ||
|  |         "anchor_epoch": {}, | ||
|  |         "frame_reference_epoch": { "type": "number" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "frame_reference_epoch" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "ellipsoid": { | ||
|  |       "type": "object", | ||
|  |       "oneOf":[ | ||
|  |         { | ||
|  |           "properties": { | ||
|  |             "$schema" : { "type": "string" }, | ||
|  |             "type": { "type": "string", "enum": ["Ellipsoid"] }, | ||
|  |             "name": { "type": "string" }, | ||
|  |             "semi_major_axis": { "$ref": "#/definitions/value_in_metre_or_value_and_unit" }, | ||
|  |             "semi_minor_axis": { "$ref": "#/definitions/value_in_metre_or_value_and_unit" }, | ||
|  |             "id": { "$ref": "#/definitions/id" }, | ||
|  |             "ids": { "$ref": "#/definitions/ids" } | ||
|  |           }, | ||
|  |           "required" : [ "name", "semi_major_axis", "semi_minor_axis" ], | ||
|  |           "additionalProperties": false | ||
|  |         }, | ||
|  |         { | ||
|  |           "properties": { | ||
|  |             "$schema" : { "type": "string" }, | ||
|  |             "type": { "type": "string", "enum": ["Ellipsoid"] }, | ||
|  |             "name": { "type": "string" }, | ||
|  |             "semi_major_axis": { "$ref": "#/definitions/value_in_metre_or_value_and_unit" }, | ||
|  |             "inverse_flattening": { "type": "number" }, | ||
|  |             "id": { "$ref": "#/definitions/id" }, | ||
|  |            "ids": { "$ref": "#/definitions/ids" } | ||
|  |           }, | ||
|  |           "required" : [ "name", "semi_major_axis", "inverse_flattening" ], | ||
|  |           "additionalProperties": false | ||
|  |         }, | ||
|  |         { | ||
|  |           "properties": { | ||
|  |             "$schema" : { "type": "string" }, | ||
|  |             "type": { "type": "string", "enum": ["Ellipsoid"] }, | ||
|  |             "name": { "type": "string" }, | ||
|  |             "radius": { "$ref": "#/definitions/value_in_metre_or_value_and_unit" }, | ||
|  |             "id": { "$ref": "#/definitions/id" }, | ||
|  |             "ids": { "$ref": "#/definitions/ids" } | ||
|  |           }, | ||
|  |           "required" : [ "name", "radius" ], | ||
|  |          "additionalProperties": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "engineering_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["EngineeringCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "datum": { "$ref": "#/definitions/engineering_datum" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "datum" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "engineering_datum": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["EngineeringDatum"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "anchor": { "type": "string" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "geodetic_crs": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["GeodeticCRS", "GeographicCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "datum": { | ||
|  |             "oneOf": [ | ||
|  |                 { "$ref": "#/definitions/geodetic_reference_frame" }, | ||
|  |                 { "$ref": "#/definitions/dynamic_geodetic_reference_frame" } | ||
|  |             ] | ||
|  |         }, | ||
|  |         "datum_ensemble": { "$ref": "#/definitions/datum_ensemble" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "deformation_models": { | ||
|  |           "type": "array", | ||
|  |           "items": { "$ref": "#/definitions/deformation_model" } | ||
|  |         }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name" ], | ||
|  |       "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" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "geodetic_reference_frame": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["GeodeticReferenceFrame"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "anchor": { "type": "string" }, | ||
|  |         "anchor_epoch": { "type": "number" }, | ||
|  |         "ellipsoid": { "$ref": "#/definitions/ellipsoid" }, | ||
|  |         "prime_meridian": { "$ref": "#/definitions/prime_meridian" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "ellipsoid" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "geoid_model": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "name": { "type": "string" }, | ||
|  |         "interpolation_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "id": { "$ref": "#/definitions/id" } | ||
|  |       }, | ||
|  |       "required" : [ "name" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "id": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "authority": { "type": "string" }, | ||
|  |         "code": { | ||
|  |           "oneOf": [ { "type": "string" }, { "type": "integer" } ] | ||
|  |         }, | ||
|  |         "version": { | ||
|  |           "oneOf": [ { "type": "string" }, { "type": "number" } ] | ||
|  |         }, | ||
|  |         "authority_citation": { "type": "string" }, | ||
|  |         "uri": { "type": "string" } | ||
|  |       }, | ||
|  |       "required" : [ "authority", "code" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "ids": { | ||
|  |       "type": "array", | ||
|  |       "items": { "$ref": "#/definitions/id" } | ||
|  |     }, | ||
|  | 
 | ||
|  |     "method": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["OperationMethod"]}, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "name" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "id_ids_mutually_exclusive": { | ||
|  |         "not": { | ||
|  |             "type": "object", | ||
|  |             "required": [ "id", "ids" ] | ||
|  |         } | ||
|  |     }, | ||
|  | 
 | ||
|  |     "one_and_only_one_of_datum_or_datum_ensemble": { | ||
|  |       "allOf": [ | ||
|  |         { | ||
|  |             "not": { | ||
|  |                 "type": "object", | ||
|  |                 "required": [ "datum", "datum_ensemble" ] | ||
|  |             } | ||
|  |         }, | ||
|  |         { | ||
|  |             "oneOf": [ | ||
|  |                 { "type": "object", "required": ["datum"] }, | ||
|  |                 { "type": "object", "required": ["datum_ensemble"] } | ||
|  |             ] | ||
|  |         } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "meridian": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["Meridian"] }, | ||
|  |         "longitude": { "$ref": "#/definitions/value_in_degree_or_value_and_unit" }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "longitude" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "object_usage": { | ||
|  |       "anyOf": [ | ||
|  |       { | ||
|  |         "type": "object", | ||
|  |         "properties": { | ||
|  |             "$schema" : { "type": "string" }, | ||
|  |             "scope": { "type": "string" }, | ||
|  |             "area": { "type": "string" }, | ||
|  |             "bbox": { "$ref": "#/definitions/bbox" }, | ||
|  |             "vertical_extent": { "$ref": "#/definitions/vertical_extent" }, | ||
|  |             "temporal_extent": { "$ref": "#/definitions/temporal_extent" }, | ||
|  |             "remarks": { "type": "string" }, | ||
|  |             "id": { "$ref": "#/definitions/id" }, | ||
|  |             "ids": { "$ref": "#/definitions/ids" } | ||
|  |         }, | ||
|  |         "allOf": [ | ||
|  |             { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |         ] | ||
|  |       }, | ||
|  |       { | ||
|  |         "type": "object", | ||
|  |         "properties": { | ||
|  |             "$schema" : { "type": "string" }, | ||
|  |             "usages": { "$ref": "#/definitions/usages" }, | ||
|  |             "remarks": { "type": "string" }, | ||
|  |             "id": { "$ref": "#/definitions/id" }, | ||
|  |             "ids": { "$ref": "#/definitions/ids" } | ||
|  |         }, | ||
|  |         "allOf": [ | ||
|  |             { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |         ] | ||
|  |       } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "parameter_value": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["ParameterValue"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "value": { | ||
|  |           "oneOf": [ | ||
|  |             { "type": "string" }, | ||
|  |             { "type": "number" } | ||
|  |            ] | ||
|  |         }, | ||
|  |         "unit": { "$ref": "#/definitions/unit" }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "name", "value" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "parametric_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["ParametricCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "datum": { "$ref": "#/definitions/parametric_datum" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "datum" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "parametric_datum": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["ParametricDatum"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "anchor": { "type": "string" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "point_motion_operation": { | ||
|  |       "$comment": "Not implemented in PROJ (at least as of PROJ 9.1)", | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["PointMotionOperation"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "source_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "method": { "$ref": "#/definitions/method" }, | ||
|  |         "parameters": { | ||
|  |             "type": "array", | ||
|  |             "items": { "$ref": "#/definitions/parameter_value" } | ||
|  |         }, | ||
|  |         "accuracy": { "type": "string" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "source_crs", "method", "parameters" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "prime_meridian": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "$schema" : { "type": "string" }, | ||
|  |         "type": { "type": "string", "enum": ["PrimeMeridian"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "longitude": { "$ref": "#/definitions/value_in_degree_or_value_and_unit" }, | ||
|  |         "id": { "$ref": "#/definitions/id" }, | ||
|  |         "ids": { "$ref": "#/definitions/ids" } | ||
|  |       }, | ||
|  |       "required" : [ "name" ], | ||
|  |       "allOf": [ | ||
|  |         { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |       ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "single_operation": { | ||
|  |       "oneOf": [ | ||
|  |         { "$ref": "#/definitions/conversion" }, | ||
|  |         { "$ref": "#/definitions/transformation" }, | ||
|  |         { "$ref": "#/definitions/point_motion_operation" } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "projected_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", | ||
|  |                   "enum": ["ProjectedCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "base_crs": { "$ref": "#/definitions/geodetic_crs" }, | ||
|  |         "conversion": { "$ref": "#/definitions/conversion" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |      }, | ||
|  |      "required" : [ "name", "base_crs", "conversion", "coordinate_system" ], | ||
|  |      "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "temporal_crs": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["TemporalCRS"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "datum": { "$ref": "#/definitions/temporal_datum" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "datum" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "temporal_datum": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["TemporalDatum"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "calendar": { "type": "string" }, | ||
|  |         "time_origin": { "type": "string" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "calendar" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "temporal_extent": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "start": { "type": "string" }, | ||
|  |         "end": { "type": "string" } | ||
|  |       }, | ||
|  |       "required" : [ "start", "end" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "transformation": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["Transformation"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "source_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "target_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "interpolation_crs": { "$ref": "#/definitions/crs" }, | ||
|  |         "method": { "$ref": "#/definitions/method" }, | ||
|  |         "parameters": { | ||
|  |             "type": "array", | ||
|  |             "items": { "$ref": "#/definitions/parameter_value" } | ||
|  |         }, | ||
|  |         "accuracy": { "type": "string" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name", "source_crs", "target_crs", "method", "parameters" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "unit": { | ||
|  |       "oneOf": [ | ||
|  |       { | ||
|  |         "type": "string", | ||
|  |         "enum": ["metre", "degree", "unity"] | ||
|  |       }, | ||
|  |       { | ||
|  |         "type": "object", | ||
|  |         "properties": { | ||
|  |           "type": { "type": "string", | ||
|  |                     "enum": ["LinearUnit", "AngularUnit", "ScaleUnit", | ||
|  |                              "TimeUnit", "ParametricUnit", "Unit"] }, | ||
|  |           "name": { "type": "string" }, | ||
|  |           "conversion_factor": { "type": "number" }, | ||
|  |           "id": { "$ref": "#/definitions/id" }, | ||
|  |           "ids": { "$ref": "#/definitions/ids" } | ||
|  |          }, | ||
|  |          "required" : [ "type", "name" ], | ||
|  |          "allOf": [ | ||
|  |             { "$ref": "#/definitions/id_ids_mutually_exclusive" } | ||
|  |           ], | ||
|  |          "additionalProperties": false | ||
|  |       } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "usages": { | ||
|  |         "type": "array", | ||
|  |         "items": { | ||
|  |           "type": "object", | ||
|  |           "properties": { | ||
|  |             "scope": { "type": "string" }, | ||
|  |             "area": { "type": "string" }, | ||
|  |             "bbox": { "$ref": "#/definitions/bbox" }, | ||
|  |             "vertical_extent": { "$ref": "#/definitions/vertical_extent" }, | ||
|  |             "temporal_extent": { "$ref": "#/definitions/temporal_extent" } | ||
|  |            }, | ||
|  |           "additionalProperties": false | ||
|  |         } | ||
|  |     }, | ||
|  | 
 | ||
|  |     "value_and_unit": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "value": { "type": "number" }, | ||
|  |         "unit": { "$ref": "#/definitions/unit" } | ||
|  |       }, | ||
|  |       "required" : [ "value", "unit" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "value_in_degree_or_value_and_unit": { | ||
|  |       "oneOf": [ | ||
|  |         { "type": "number" }, | ||
|  |         { "$ref": "#/definitions/value_and_unit" } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "value_in_metre_or_value_and_unit": { | ||
|  |       "oneOf": [ | ||
|  |         { "type": "number" }, | ||
|  |         { "$ref": "#/definitions/value_and_unit" } | ||
|  |       ] | ||
|  |     }, | ||
|  | 
 | ||
|  |     "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" } | ||
|  |             ] | ||
|  |         }, | ||
|  |         "datum_ensemble": { "$ref": "#/definitions/datum_ensemble" }, | ||
|  |         "coordinate_system": { "$ref": "#/definitions/coordinate_system" }, | ||
|  |         "geoid_model": { "$ref": "#/definitions/geoid_model" }, | ||
|  |         "geoid_models": { | ||
|  |           "type": "array", | ||
|  |           "items": { "$ref": "#/definitions/geoid_model" } | ||
|  |         }, | ||
|  |         "deformation_models": { | ||
|  |           "type": "array", | ||
|  |           "items": { "$ref": "#/definitions/deformation_model" } | ||
|  |         }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name"], | ||
|  |       "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 | ||
|  |     }, | ||
|  | 
 | ||
|  |     "vertical_extent": { | ||
|  |       "type": "object", | ||
|  |       "properties": { | ||
|  |         "minimum": { "type": "number" }, | ||
|  |         "maximum": { "type": "number" }, | ||
|  |         "unit": { "$ref": "#/definitions/unit" } | ||
|  |       }, | ||
|  |       "required" : [ "minimum", "maximum" ], | ||
|  |       "additionalProperties": false | ||
|  |     }, | ||
|  | 
 | ||
|  |     "vertical_reference_frame": { | ||
|  |       "type": "object", | ||
|  |       "allOf": [{ "$ref": "#/definitions/object_usage" }], | ||
|  |       "properties": { | ||
|  |         "type": { "type": "string", "enum": ["VerticalReferenceFrame"] }, | ||
|  |         "name": { "type": "string" }, | ||
|  |         "anchor": { "type": "string" }, | ||
|  |         "anchor_epoch": { "type": "number" }, | ||
|  |         "$schema" : {}, | ||
|  |         "scope": {}, | ||
|  |         "area": {}, | ||
|  |         "bbox": {}, | ||
|  |         "vertical_extent": {}, | ||
|  |         "temporal_extent": {}, | ||
|  |         "usages": {}, | ||
|  |         "remarks": {}, | ||
|  |         "id": {}, "ids": {} | ||
|  |       }, | ||
|  |       "required" : [ "name" ], | ||
|  |       "additionalProperties": false | ||
|  |     } | ||
|  | 
 | ||
|  |   } | ||
|  | } |