diff --git a/counterexamples/base/bathymetry/bad-depth.yaml b/counterexamples/base/bathymetry/bad-depth.yaml
new file mode 100644
index 000000000..bc4e25c56
--- /dev/null
+++ b/counterexamples/base/bathymetry/bad-depth.yaml
@@ -0,0 +1,17 @@
+---
+id: "overture:bathymetry:counterexample:bad-depth"
+type: Feature
+geometry:
+ type: Polygon
+ coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]]
+properties:
+ theme: base
+ type: bathymetry
+ version: 0
+ depth: 1
+ sources:
+ - record_id: x123
+ property: ""
+ dataset: some source
+ ext_expected_errors:
+ - "depth/maximum]: maximum: got 1, want 0"
diff --git a/counterexamples/base/bathymetry/missing-depth.yaml b/counterexamples/base/bathymetry/missing-depth.yaml
new file mode 100644
index 000000000..01fffe2b5
--- /dev/null
+++ b/counterexamples/base/bathymetry/missing-depth.yaml
@@ -0,0 +1,12 @@
+---
+id: "overture:bathymetry:counterexample:bad-depth"
+type: Feature
+geometry:
+ type: Polygon
+ coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]]
+properties:
+ theme: base
+ type: bathymetry
+ version: 0
+ ext_expected_errors:
+ - "missing property 'depth'"
diff --git a/docs/schema/reference/base/bathymetry.mdx b/docs/schema/reference/base/bathymetry.mdx
new file mode 100644
index 000000000..a68e33e0a
--- /dev/null
+++ b/docs/schema/reference/base/bathymetry.mdx
@@ -0,0 +1,55 @@
+---
+title: bathymetry
+---
+
+import CodeBlock from '@theme/CodeBlock';
+import JSONSchemaViewer from "@theme/JSONSchemaViewer";
+import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions"
+import yamlLoad from "@site/src/components/yamlLoad"
+import BathymetrySchema from "!!raw-loader!@site/docs/_schema/base/bathymetry.yaml";
+
+import BathymetryExample from "!!raw-loader!@site/docs/_examples/base/bathymetry-example.yaml";
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Bathymetry
+
+
+
+
+ | Geometry Type |
+
+ Polygon or MultiPolygon
+ |
+
+
+ | Theme |
+ base |
+
+
+ | Type |
+ bathymetry |
+
+
+
+
+## Schema
+
+
+
+
+
+
+ {BathymetrySchema}
+
+
+
+## Examples
+
+
+
+ { JSON.stringify(yamlLoad(BathymetryExample), null, 2) }
+
+
+
diff --git a/examples/base/bathymetry-example.yaml b/examples/base/bathymetry-example.yaml
new file mode 100644
index 000000000..5408c60a2
--- /dev/null
+++ b/examples/base/bathymetry-example.yaml
@@ -0,0 +1,19 @@
+---
+id: "overture:bathymetry:example:1"
+type: Feature
+geometry:
+ type: Polygon
+ coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]]
+properties:
+ theme: base
+ type: bathymetry
+ depth: -2500
+ cartography:
+ min_zoom: 0
+ max_zoom: 23
+ sort_key: 7
+ sources:
+ - record_id: x123
+ property: ""
+ dataset: some source
+ version: 0
diff --git a/schema/base/bathymetry.yaml b/schema/base/bathymetry.yaml
new file mode 100644
index 000000000..dd529d7e6
--- /dev/null
+++ b/schema/base/bathymetry.yaml
@@ -0,0 +1,22 @@
+---
+"$schema": https://json-schema.org/draft/2020-12/schema
+title: bathymetry
+description: Topographic representation of an underwater area, such as a part of the ocean floor.
+type: object
+properties:
+ id:
+ "$ref": ../defs.yaml#/$defs/propertyDefinitions/id
+ geometry:
+ unevaluatedProperties: false
+ oneOf:
+ - "$ref": https://geojson.org/schema/Polygon.json
+ - "$ref": https://geojson.org/schema/MultiPolygon.json
+ properties:
+ unevaluatedProperties: false
+ allOf:
+ - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer
+ - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer
+ - "$ref": ../defs.yaml#/$defs/propertyContainers/cartographyContainer
+ required: [depth]
+ properties:
+ depth: { "$ref": "./defs.yaml#/$defs/propertyDefinitions/depth" }
diff --git a/schema/base/defs.yaml b/schema/base/defs.yaml
index 3fde45628..3f0cc0cb7 100644
--- a/schema/base/defs.yaml
+++ b/schema/base/defs.yaml
@@ -8,6 +8,10 @@ description: Common schema definitions the base theme (primarily from OSM)
description: Elevation above sea level (in meters) of the feature.
type: integer
maximum: 9000
+ depth:
+ description: Depth below surface level (in meters) of the feature.
+ type: integer
+ maximum: 0
height:
description: >-
Height of the feature in meters.
diff --git a/schema/defs.yaml b/schema/defs.yaml
index 27ec31fa3..d86fbf4e5 100644
--- a/schema/defs.yaml
+++ b/schema/defs.yaml
@@ -21,6 +21,7 @@ description: Common schema definitions shared by all themes
type: string
enum:
- address
+ - bathymetry
- building
- connector
- division
diff --git a/schema/schema.yaml b/schema/schema.yaml
index 25e8dd6b5..df59e6529 100644
--- a/schema/schema.yaml
+++ b/schema/schema.yaml
@@ -18,6 +18,14 @@ oneOf:
type: { enum: [address] }
then: { "$ref": addresses/address.yaml }
else: { propertyNames: false }
+ - if:
+ properties:
+ properties:
+ properties:
+ theme: { enum: [base] }
+ type: { enum: [bathymetry] }
+ then: { "$ref": base/bathymetry.yaml }
+ else: { propertyNames: false }
- if:
properties:
properties: