<?xml version="1.0" encoding="UTF-8"?>
<metanorma xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="2.8.10" schema-version="v2.1.5" flavor="ogc">
<bibdata type="standard">
<title language="en" type="main">OGC (add title text)</title>
<uri type="xml">./geozarr-spec.xml</uri><uri type="pdf">./geozarr-spec.pdf</uri><uri type="doc">./geozarr-spec.doc</uri><docidentifier type="ogc-external">http://www.opengis.net/doc/{doc-type}/{standard}/{m.n}</docidentifier><docidentifier type="ogc-internal" primary="true">YY-999</docidentifier><docnumber>YY-999</docnumber><date type="published"><on>2029-03-30</on></date><date type="issued"><on>2029-03-30</on></date><date type="received"><on>2029-03-30</on></date><contributor><role type="author"/><organization>
<name>Organization One</name>
</organization></contributor><contributor><role type="author"/><organization>
<name>Organization Two</name>
</organization></contributor><contributor><role type="editor"/><person>
<name><completename>Christophe Noël</completename></name>
</person></contributor><contributor><role type="editor"/><person>
<name><completename>Brianna Pagán</completename></name>
</person></contributor><contributor><role type="author"><description>committee</description></role><organization>
<name>Open Geospatial Consortium</name>
<subdivision type="Committee">
<name>technical</name>
</subdivision><abbreviation>OGC</abbreviation></organization></contributor><contributor><role type="publisher"/><organization>
<name>Open Geospatial Consortium</name>
<abbreviation>OGC</abbreviation></organization></contributor><edition>1.0</edition><version><draft>3.0</draft></version><language>en</language><script>Latn</script><abstract><p>Zarr provides efficient chunked storage for n-dimensional arrays but do not provide with the semantic constructs required for geospatial and scientific data workflows.</p>

<p>GeoZarr defines an abstract data model and a set of conventions for representing geospatial and scientific datasets in the Zarr format:</p>

<ul><li><p>GeoZarr bridges the Unidata CDM and the Zarr format. GeoZarr establishes the link between the Unidata Common Data Model (CDM) and the Zarr format by defining how the semantic constructs of the CDM are represented within Zarr’s storage model.</p>
</li>
<li><p>Supports community metadata standards like CF, GeoTIFF, and GDAL.</p>
</li>
<li><p>Extends CDM for geospatial through multiscale overviews and affine transformations.</p>
</li>
</ul>

<p>By providing a standardized framework for geospatial semantics, GeoZarr enables scientific and geospatial applications to fully utilize cloud-native storage architectures while maintaining the rich metadata and coordinate referencing required for Earth observation workflows. The result is a modern, scalable approach to storing and accessing geospatial data that meets the needs of both data providers and consumers.</p>
</abstract><status><stage>draft</stage></status><copyright><from>2025</from><owner><organization>
<name>Open Geospatial Consortium</name>
<abbreviation>OGC</abbreviation></organization></owner></copyright><keyword>ogcdoc</keyword><keyword>OGC document</keyword><keyword>API</keyword><keyword>openapi</keyword><keyword>html</keyword><ext><doctype>standard</doctype><subdoctype>implementation</subdoctype><flavor>ogc</flavor></ext></bibdata><metanorma-extension><semantic-metadata><stage-published>false</stage-published></semantic-metadata>
<presentation-metadata><name>document-scheme</name><value>2022</value></presentation-metadata><presentation-metadata><name>color-admonition-caution</name><value>rgb(79, 129, 189)</value></presentation-metadata><presentation-metadata><name>color-admonition-editor</name><value>rgb(79, 129, 189)</value></presentation-metadata><presentation-metadata><name>color-admonition-important</name><value>rgb(79, 129, 189)</value></presentation-metadata><presentation-metadata><name>color-admonition-note</name><value>rgb(79, 129, 189)</value></presentation-metadata><presentation-metadata><name>color-admonition-safety-precaution</name><value>rgb(79, 129, 189)</value></presentation-metadata><presentation-metadata><name>color-admonition-tip</name><value>rgb(79, 129, 189)</value></presentation-metadata><presentation-metadata><name>color-admonition-todo</name><value>rgb(79, 129, 189)</value></presentation-metadata><presentation-metadata><name>color-admonition-warning</name><value>rgb(79, 129, 189)</value></presentation-metadata><presentation-metadata><name>color-background-definition-description</name><value>rgb(242, 251, 255)</value></presentation-metadata><presentation-metadata><name>color-background-definition-term</name><value>rgb(215, 243, 255)</value></presentation-metadata><presentation-metadata><name>color-background-page</name><value>rgb(33, 55, 92)</value></presentation-metadata><presentation-metadata><name>color-background-table-header</name><value>rgb(33, 55, 92)</value></presentation-metadata><presentation-metadata><name>color-background-table-row-even</name><value>rgb(252, 246, 222)</value></presentation-metadata><presentation-metadata><name>color-background-table-row-odd</name><value>rgb(254, 252, 245)</value></presentation-metadata><presentation-metadata><name>color-background-term-admitted-label</name><value>rgb(223, 236, 249)</value></presentation-metadata><presentation-metadata><name>color-background-term-deprecated-label</name><value>rgb(237, 237, 238)</value></presentation-metadata><presentation-metadata><name>color-background-term-preferred-label</name><value>rgb(249, 235, 187)</value></presentation-metadata><presentation-metadata><name>color-background-text-label-legacy</name><value>rgb(33, 60, 107)</value></presentation-metadata><presentation-metadata><name>color-secondary-shade-1</name><value>rgb(0, 177, 255)</value></presentation-metadata><presentation-metadata><name>color-secondary-shade-2</name><value>rgb(0, 177, 255)</value></presentation-metadata><presentation-metadata><name>color-text</name><value>rgb(88, 89, 91)</value></presentation-metadata><presentation-metadata><name>color-text-title</name><value>rgb(33, 55, 92)</value></presentation-metadata><presentation-metadata><name>TOC Heading Levels</name><value>2</value></presentation-metadata><presentation-metadata><name>HTML TOC Heading Levels</name><value>2</value></presentation-metadata><presentation-metadata><name>DOC TOC Heading Levels</name><value>2</value></presentation-metadata><presentation-metadata><name>PDF TOC Heading Levels</name><value>2</value></presentation-metadata></metanorma-extension>
<boilerplate><copyright-statement>

<clause id="_fd0161fc-f62b-a79d-3423-d7bbbd97e7a6" obligation="normative">
<title id="_19604a82-a482-3c87-1356-705ef7b11f09">Copyright notice</title>
<p id="_13df91f9-0943-ac24-39c3-d06302298765" align="center">Copyright © 2025 Open Geospatial Consortium<br/> To obtain additional rights of use, visit<link target="https://www.ogc.org/legal"/></p>
</clause>

<clause id="_6908548e-204b-56e7-9062-6924cccf2315" obligation="normative">
<title id="_db83e2f6-5841-eaeb-0d35-1277ee9d3f6a">Note</title>
<p id="_e1d5d5c4-54c3-2761-be2c-22547f01c057" align="left">Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.</p>

<p id="_02892e94-7b43-630a-129c-d2e0f75ff92b" align="left">Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.</p>
</clause>
</copyright-statement>

<license-statement>

<clause id="_45f6bdf5-80f3-f775-9740-2adafc90b1f7" obligation="normative">
<title id="_3788828e-41fb-3895-6acc-52071643abed">License Agreement</title>
<p id="_772872dd-928c-666f-92c5-676f7f5d3071">Use of this document is subject to the license agreement at <link target="https://www.ogc.org/license"/></p>
</clause>
</license-statement>

<legal-statement>

<clause id="_d969cbc1-a2ce-fc29-9ca8-2b6bf8626cdf" obligation="normative">
<title id="_58a63032-6943-6f37-087e-470a8982dad8">Notice for Drafts</title>
<p id="_da556f2c-cb53-8902-19fe-a5f8a6222f48">This document is not an OGC Standard. This document is distributed for review and comment. This document is subject to change without notice and may not be referred to as an OGC Standard.</p>

<p id="_e8629e34-594d-6076-a18a-23d7b5df19ba">Recipients of this document are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.</p>
</clause>
</legal-statement>

<feedback-statement>

<clause id="_4b48acd6-973f-402f-97b5-d1794d313105" anchor="boilerplate-standard-feedback" obligation="normative"><p id="_cb0581b2-acf2-995c-21c5-080c40d2dfd0">Suggested additions, changes and comments on this document are welcome and encouraged. Such suggestions may be submitted using the online change request form on OGC web site: <link target="http://ogc.standardstracker.org/"/></p>
</clause>
</feedback-statement>
</boilerplate><preface><abstract id="_d29f3761-01d7-84fb-19de-f87c42765f70"><title id="_37c298bf-5619-a5c6-817b-d777b5ead0b1">Abstract</title><p id="_b93b682b-8dfc-e628-5afd-20456fbd265c">Zarr provides efficient chunked storage for n-dimensional arrays but do not provide with the semantic constructs required for geospatial and scientific data workflows.</p>

<p id="_503e5569-1fd2-4181-073e-7507144b254a">GeoZarr defines an abstract data model and a set of conventions for representing geospatial and scientific datasets in the Zarr format:</p>

<ul id="_24348db0-3950-5feb-181a-fe037fbaa750"><li><p id="_7d5ebbc4-9731-2e42-748c-1f0b12e6117c">GeoZarr bridges the Unidata CDM and the Zarr format. GeoZarr establishes the link between the Unidata Common Data Model (CDM) and the Zarr format by defining how the semantic constructs of the CDM are represented within Zarr’s storage model.</p>
</li>
<li><p id="_2141840a-88f7-a7e6-0382-ea6767cae8da">Supports community metadata standards like CF, GeoTIFF, and GDAL.</p>
</li>
<li><p id="_0111611f-578c-7a81-18cb-2d1625536a72">Extends CDM for geospatial through multiscale overviews and affine transformations.</p>
</li>
</ul>

<p id="_da9db83c-7adb-f430-253f-fd9f0bac5857">By providing a standardized framework for geospatial semantics, GeoZarr enables scientific and geospatial applications to fully utilize cloud-native storage architectures while maintaining the rich metadata and coordinate referencing required for Earth observation workflows. The result is a modern, scalable approach to storing and accessing geospatial data that meets the needs of both data providers and consumers.</p>
</abstract><foreword id="_e0e8baec-9196-808b-c60c-c7927ee2eb2f" obligation="informative">
<title id="_67001cd2-f272-ceff-f849-7a43bc65e67d">Preface</title>
<p id="_463a0a9b-5625-d449-ec0c-767a7952ec83">The GeoZarr Standard defines a layered, standards-based framework for representing and encoding geospatial and scientific datasets in the Zarr format. The purpose of this document is to provide implementation guidance and normative structure for consistent, interoperable adoption of GeoZarr across tools, platforms, and services. This work extends prior standardisation efforts within the OGC, including OGC API – Tiles, the Tile Matrix Set Standard, and EO metadata conventions, and anticipates integration with catalogue systems such as STAC.</p>

<p id="_2806af9a-5c5b-4cf8-edd5-27da9c0a6b7a">This Standard has been developed in collaboration with contributors from Earth observation, climate science, geospatial analysis, and cloud-native geodata infrastructure communities. Future work may extend this model to additional storage formats, API services, and semantic layers.</p>
</foreword><clause type="security" id="_1ee4f5b3-7c6d-4e70-be8d-5f6e15ce4b6b" obligation="informative">
  <title id="_7974edf1-0459-03d8-f74c-5b72ab98795c">Security considerations</title>
  <p id="_927733ee-e695-c49f-5120-5f08eaf68e0c">No security considerations have been made for this document.</p></clause>
<clause id="_1293473c-254b-d0ff-a042-78878a07834d" type="submitters" obligation="informative">
<title id="_454e8fd9-fbfc-9c82-30fc-9121a2f52315">Submitters</title>
<p id="_6e1b734b-e32c-864b-59a1-81792b76695c">All questions regarding this submission should be directed to the editor or the submitters:</p>

<table id="_a3a902a1-2e4a-34be-1c80-d332d3ce6c85" unnumbered="true">
<name id="_5718a226-1051-7ae6-13c7-60ba4a6a1df8">Table of submitters</name>
<tbody><tr id="_c4fc1fb2-75c0-7d0a-b52e-111e87f4a829"><td id="_a7738332-a145-8faa-723b-af71e1ccccf6" valign="middle" align="left"><strong>Name</strong></td>
<td id="_88d632c9-1ff3-7cf1-d412-a86674180463" valign="middle" align="left"><strong>Affiliation</strong></td>
</tr><tr id="_f09605fc-e1f8-0292-2574-eedd80784122"><td id="_ca2f40ce-d0d3-6ea2-d4b8-b90196930feb" valign="middle" align="left">Christophe Noël <em>(editor)</em></td>
<td id="_6638c331-9505-20ed-e87e-36d71fe2f701" valign="middle" align="left">Spacebel</td>
</tr><tr id="_e9103ad2-5574-33b9-af7f-b89cb2fd6de4"><td id="_3fbfce19-115d-88f3-98fd-53864b2cb643" valign="middle" align="left">Brianna Pagán <em>(editor)</em></td>
<td id="_099a68ef-392f-99ba-eef8-d74296d2e988" valign="middle" align="left">DevSeed</td>
</tr><tr id="_7b538145-ec55-e89a-ede8-e83104b28e7e"><td id="_61b03fff-93c6-100c-4029-e7f68b1bc15e" valign="middle" align="left">Ryan Abernathey</td>
<td id="_92d90d32-42f5-a12d-e5c9-77a553cc785b" valign="middle" align="left">EarthMover</td>
</tr><tr id="_eff03639-f333-8eef-b2ef-3565fd44c092"><td id="_d636cca7-a3d8-386f-b8ef-7504c4fa25bd" valign="middle" align="left">TBD</td>
<td id="_0aeac175-dd2e-b3f1-718c-fb2ae3beba4a" valign="middle" align="left">TBD</td>
</tr></tbody>
</table>
</clause></preface><sections>



<clause id="_93567619-1909-1716-e36a-63726e87a2ef" type="scope" obligation="normative">
<title id="_f70b6ff6-6131-0e24-81e1-850dbe94b63d">Scope</title>
<p id="_5c0f3c04-49bc-a866-9e49-ef888141da5f">The GeoZarr Standard defines a conceptual and implementation framework for representing and encoding geospatial and scientific datasets using the Zarr format. The scope of this Standard includes the definition of a format-agnostic data model, the specification of its encoding into Zarr Version 2 and Version 3, and a set of extensions to support affine transformations and overviews.</p>

<p id="_deb2fdad-fc3b-9902-ce4c-4e1404a4a970">These capabilities are necessary for geospatial data because Zarr does not provide semantic constructs for geospatial data interpretation. Applications need to understand not just array shapes and values, but coordinate meanings, projection parameters, and scientific metadata. GeoZarr fills this gap without compromising Zarr’s performance characteristics.</p>

<clause id="_e42911da-d6dc-ec88-c603-0759bef5c968" obligation="normative">
<title id="_6f380697-8033-aafb-b00d-6c728c4ccaa2">Why GeoZarr Exists</title>
<p id="_16cb9a88-bd4d-b293-458c-db81331ef156">Zarr, by design, is a low-level container for storing n-dimensional arrays and metadata. While this simplicity is a strength for performance and interoperability, it means Zarr lacks higher-level concepts that geospatial applications require:</p>

<ul id="_b6dd07fa-178d-461e-d53b-7cfba74e4bc0"><li><p id="_f046eea2-1852-654f-6617-c41afe1d5fc7"><strong>Coordinate Systems:</strong> No native way to associate spatial or temporal meaning with array dimensions</p>
</li>
<li><p id="_db627d57-c3d5-8f05-5c9e-dea61b7cf073"><strong>Grid Mappings:</strong> No standard mechanism for projection and coordinate reference system metadata</p>
</li>
<li><p id="_4cf6a13d-c350-fdfe-f1d8-77245ce50eb9"><strong>Semantic Metadata:</strong> No conventions for units, standard names, or scientific attributes</p>
</li>
<li><p id="_c31bfdb6-045c-b4db-c3b7-88ffea12e085"><strong>Variable Relationships:</strong> No formal distinction between coordinate variables and data variables</p>
</li>
</ul>

<p id="_82d00513-06a4-d12e-c558-5e927037bf03">These concepts are essential for geospatial workflows but must be layered on top of Zarr’s array storage. GeoZarr provides this semantic layer through proven standards (Common Data Model and CF conventions) while preserving Zarr’s cloud-native advantages.</p>
</clause>

<clause id="_adbb3347-e633-14b0-42f7-516ca461335b" obligation="normative">
<title id="_d8b33dcb-f9b3-8c9c-de0f-1b1fa44ceae8">Relationship to Zarr Core Concepts</title>
<p id="_3e605713-fb93-f4fb-d051-420840f55cbb">GeoZarr builds upon Zarr’s foundational concepts of <xref target="term-store"><display-text>stores</display-text></xref> and <xref target="term-hierarchy"><display-text>hierarchies</display-text></xref>. A Zarr store provides the storage and retrieval interface (e.g., filesystem, cloud object storage), while a hierarchy defines the logical tree structure of groups and arrays within that store. GeoZarr specifies how to organize and structure hierarchies to support geospatial semantics, without modifying the underlying store interface.</p>
</clause>

<clause id="_c5a8f6c5-9561-8b8f-e12b-7d1d041f625b" obligation="normative">
<title id="_e91e01f8-dd67-d6d2-91ff-315c2b5bc461">Use Cases and Applications</title>
<p id="_567c602d-60fd-f8d3-28cf-2afb704922c1">This Standard addresses the needs of Earth observation, environmental monitoring, and geospatial analysis applications that require efficient, scalable access to multidimensional datasets. It enables the harmonisation of existing data models with operational encoding formats suitable for cloud-native storage and analysis.</p>

<p id="_230e98d2-b024-cb20-bc6c-aa01ba5d573b">Typical use cases include: * Storage and processing of raster and gridded data * Management of data cubes with temporal or vertical dimensions * Integration with catalogue systems through standardized metadata * Multi-resolution tiling for efficient visualization and analysis * Cloud-optimized access to large geospatial datasets</p>
</clause>
</clause>

<clause id="_e109e492-b841-94f2-3a8e-182d9a9f277a" type="conformance" obligation="normative">
<title id="_e246d3c1-cf3f-232c-cb69-d9b3793ef60f">Conformance</title>
<quote id="_13e7ca54-8478-9be3-fdf9-bf5e33b18e90"><admonition id="_cfac01b9-69be-50b9-6856-445836cdc031" type="warning"><p id="_75509573-6d6e-3210-c09c-0535a4675295">This section should be ignored and requirements classes should be designed and summarized here once the specification is completed.</p>
</admonition></quote>

<p id="_bb720209-a3cd-31fd-3744-90ebba528bbf">The GeoZarr Unified Data Model is structured around a modular set of requirements classes. These classes define the conformance criteria for datasets and implementations adopting the GeoZarr specification. Each class provides a distinct set of structural or semantic expectations, facilitating interoperability across a broad spectrum of geospatial and scientific use cases.</p>

<p id="_fa412c86-edb6-7590-5744-c177abac29c6">The <strong>Core</strong> requirements class defines the minimal compliance necessary to claim conformance with the GeoZarr Unified Data Model. It is intentionally open and permissive, supporting incremental adoption and broad compatibility with existing Zarr tools and data models based on the Unidata Common Data Model (CDM).</p>

<p id="_e6b15c9b-f2be-8a85-6280-28b7ceab49a5">Additional requirements classes are defined to support enhanced functionality, semantic richness, and interoperability with established geospatial conventions and systems. These include extensions for time series, coordinate systems, affine transformations, and multiscale tiling.</p>

<table id="_15036c87-b820-4ef6-5410-18ab4b4151ac"><colgroup><col width="30%"/><col width="40%"/><col width="30%"/></colgroup>
<name id="_5a33da75-0658-0b5d-c7dc-d2eb171235b7">Requirements Classes Overview</name>
<thead><tr id="_fd297a99-1168-e786-429c-a9ed864a796a"><th id="_75ae4778-af1d-fc0e-6177-41e1390f4a7d" valign="middle" align="left">Requirements Class</th>
<th id="_50603049-d540-5ca4-6e78-2b4f02267b26" valign="middle" align="left">Description</th>
<th id="_c66e0090-79fe-d43b-18d5-421f200f5e3f" valign="middle" align="left">Identifier</th>
</tr></thead>
<tbody><tr id="_f551f1a1-7c00-44f8-ef03-18e5f539fda1"><td id="_545f0017-6042-381c-00cb-6b512a8d1088" valign="middle" align="left">Core Model</td>
<td id="_fde61485-8b47-b6f9-7cb0-a14ffedacc80" valign="middle" align="left">Specifies minimum conformance for encoding multidimensional datasets in Zarr using CDM-aligned constructs. Includes dimensions, variables, attributes, and groups.</td>
<td id="_8e030f0b-c464-19ac-4e59-a97ba7e68a0b" valign="middle" align="left"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/core"/></tt></td>
</tr><tr id="_0b3bb43e-d695-6b0b-9abe-2f2c64495d76"><td id="_935801d5-6e2a-a0c4-540b-2c143a488c67" valign="middle" align="left">Time Series Support</td>
<td id="_e4020701-ad3b-4939-9876-623e40d143e8" valign="middle" align="left">Defines conventions for temporal dimensions and time coordinate variables to support time-aware arrays.</td>
<td id="_7ad43996-e465-9611-4d72-1c367ffe7b0f" valign="middle" align="left"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/time"/></tt></td>
</tr><tr id="_cc2ac3ed-dddd-c2fb-30d3-24b210385d17"><td id="_e218dcf3-c330-2bb8-67a1-f12a019649a6" valign="middle" align="left">Coordinate Reference Systems</td>
<td id="_0294ab9b-749a-573c-35eb-afb91f48ad0d" valign="middle" align="left">Specifies use of CF-compliant CRS metadata, including <tt>grid_mapping</tt>, <tt>standard_name</tt>, and EPSG codes.</td>
<td id="_d4db5bc0-63b5-022d-1d34-2fd89d3f1e8c" valign="middle" align="left"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/crs"/></tt></td>
</tr><tr id="_09100429-24e8-cf92-dd6b-a440de2b3735"><td id="_2f2f6e3b-2fc3-7c7d-7bf8-0107a53c455a" valign="middle" align="left">GeoTransform Metadata</td>
<td id="_a3efbb4b-d425-a26a-540b-18a233096dce" valign="middle" align="left">Enables affine spatial referencing via GDAL-compatible <tt>GeoTransform</tt> metadata and optional interpolation hints.</td>
<td id="_b697d366-2642-0ba6-0cdb-61cfd7101a4a" valign="middle" align="left"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/geotransform"/></tt></td>
</tr><tr id="_faedd423-3259-ed81-d073-af9bb53c50d1"><td id="_2f78ecce-47dd-49e0-06fb-0ab652257320" valign="middle" align="left">Multiscale Overviews</td>
<td id="_2db8312e-2471-c431-bfcf-2e6096145d13" valign="middle" align="left">Specifies multiscale tiled layout using zoom levels and Tile Matrix Sets as per OGC API – Tiles.</td>
<td id="_284a2451-311d-a492-f19a-d44b2ce11755" valign="middle" align="left"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/overviews"/></tt></td>
</tr><tr id="_f5376f73-c016-0739-5ff4-56aa6736e055"><td id="_43d8ef84-364b-74d2-88f6-e0c9cf6373c3" valign="middle" align="left">STAC Metadata Integration</td>
<td id="_a6250224-b439-d922-bbbd-a1d10950411b" valign="middle" align="left">Allows embedding or referencing of STAC Collection/Item metadata for discovery and indexing.</td>
<td id="_63395a49-39a8-ac93-25c1-ffef36ab076b" valign="middle" align="left"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/stac"/></tt></td>
</tr><tr id="_3ab272ee-be38-b7f3-7f4b-c2ae66addd78"><td id="_14d5786b-6ebe-ce61-710d-82ccaac27eda" valign="middle" align="left">Projection Coordinates</td>
<td id="_98ac0d73-98c0-89c0-d367-881d3af66009" valign="middle" align="left">Supports encoding of data in projected coordinate systems and association with spatial reference metadata.</td>
<td id="_d823b74f-7de4-7acc-2129-a4cd53726c76" valign="middle" align="left"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/projected"/></tt></td>
</tr><tr id="_a925efcd-c2e1-c6e5-ae05-45c6a9649926"><td id="_ba7f3e79-781c-3cda-e5ac-834f22a869e5" valign="middle" align="left">Spectral Bands</td>
<td id="_694d91c7-ef26-6426-14b0-05502ed702e5" valign="middle" align="left">Defines conventions for encoding multi-band imagery, including band identifiers, wavelengths, and metadata attributes.</td>
<td id="_1841c337-89a7-9e37-1bc0-2d9a4967ee07" valign="middle" align="left"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/bands"/></tt></td>
</tr></tbody>
</table>

<p id="_be4b9780-a2a4-db5c-7e83-291ffdb224c4">Each requirements class is independently defined. Implementations may declare conformance with any subset of classes appropriate to their use case. All classes build upon the Core model.</p>

<p id="_fb62f738-4e12-df8d-123b-95cba210290f">Associated conformance tests for each class are detailed in Annex A.</p>
</clause>



<clause id="_9a5b4587-e268-194b-752a-1ca0e609c3e3" obligation="normative" type="terms">
<title id="_ea74c380-d933-7f6a-d5ce-c2199bb044eb">Terms, definitions and abbreviated terms</title><p id="_fd16447f-e831-b957-4070-3e82ddcd6f73">This document uses the terms defined in <link target="https://portal.ogc.org/public_ogc/directives/directives.php">OGC Policy Directive 49</link>, which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this document and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2.</p>

<p id="_316a9967-2d19-a471-57e7-e352a4ce176b">This document also uses terms defined in the OGC Standard for Modular specifications (<link target="https://portal.opengeospatial.org/files/?artifact_id=34762">OGC 08-131r3</link>), also known as the ‘ModSpec’. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec.</p>

<p id="_a605e310-fb97-016b-65e8-0d636b9ef70c">For the purposes of this document, the following additional terms and definitions apply.</p>

<terms id="_8d6df0b8-6750-870f-a15f-3534ccbdfbea" obligation="normative">
<title id="_e6d9e30b-ba32-3676-ec96-82039e04fb4b">Terms and definitions</title>
<p id="_3e50e433-5d2a-f7b1-a4c7-c5be1036293c">GeoZarr specification inherits the terms from the following sources:</p>

<ul id="_fd2eee75-7d83-9e3c-5d9b-82758a912d77"><li><p id="_08939a19-dd15-8d28-44b8-849d2216bf61"><link target="https://docs.unidata.ucar.edu/netcdf-java/5.2/userguide/common_data_model_overview.html#data-access-layer-object-model">Unidata Common Data Model</link></p>
</li>
<li><p id="_aee06f37-c11c-ea9b-f4e1-ab19b232a0ae"><link target="https://zarr-specs.readthedocs.io/en/latest/v3/core/index.html#concepts-and-terminology">Zarr concepts and terminology</link>.</p>
</li>
</ul>

<term id="_7e3a2525-4b18-e16e-a40d-f7195627adb8" anchor="term-affine-transformation"><preferred><expression>
<name>affine transformation</name>
</expression>
</preferred>
<definition id="_5ebf306e-2e32-c78b-d3ea-238b6073ee80"><verbal-definition id="_eced0e76-2fdc-47f6-8c98-0746055d40fe"><p id="_f01d82ff-dc27-28ab-b1a5-1d120a3ac2c9">An affine transformation is a geometric mapping that preserves points, straight lines, and parallelism. It combines linear transformations (such as rotation, scaling, reflection, or shear) with translation.</p></verbal-definition></definition>
 </term>

<term id="_f5233d89-db83-f5c7-8fed-487467875cbc" anchor="term-array"><preferred><expression>
<name>array</name>
</expression>
</preferred>
<definition id="_cb71c44e-0c4e-ad0d-fb46-a672e8c08889"><verbal-definition id="_e6636ba2-4e71-91b8-2cd8-896cdc0d1275"><p id="_3ea1e447-f48a-d786-26a7-0c52aef4adf0">A multidimensional, regularly spaced collection of values (e.g., raster data or gridded measurements), typically indexed by dimensions such as time, latitude, longitude, or spectral band.</p></verbal-definition></definition>
 </term>

<term id="_38ff69ca-206e-8b5e-958c-c9e1284b13ce" anchor="term-chunk"><preferred><expression>
<name>chunk</name>
</expression>
</preferred>
<definition id="_f3ffb01e-9bab-3cf1-2e7c-934eacae0968"><verbal-definition id="_7ef49b70-80ae-b2c5-a3eb-dc07b0341024"><p id="_276bfc80-4a93-0cc9-28e7-193f26a7ff47">A sub-array representing a partition of a larger array, used to optimize data access and storage. In Zarr, data is stored and accessed as a collection of independently compressed chunks.</p></verbal-definition></definition>
 </term>

<term id="_4f9557ed-f896-78b3-fc06-72706b6f9a7b" anchor="term-coordinate-variable"><preferred><expression>
<name>coordinate variable</name>
</expression>
</preferred>
<definition id="_cd2170ba-74fc-5eac-fac1-d1af477e7b91"><verbal-definition id="_cbb943a4-f9c6-9184-b8ce-3167611d7e20"><p id="_f917132b-19f1-f855-449e-4291c11b6266">A one-dimensional array whose values define the coordinate system for a dimension of one or more data variables. Typical examples include latitude, longitude, time, or vertical levels.</p></verbal-definition></definition>
 </term>

<term id="_928e5262-2c82-8d27-1929-537653c5d552" anchor="term-data-model"><preferred><expression>
<name>data model</name>
</expression>
</preferred>
<definition id="_914b3a9f-62ac-6692-55f2-d57976099772"><verbal-definition id="_5a0f1bd1-f47f-4c6c-c71b-7c3873bd8d7d"><p id="_6b5c5778-c7ca-76dc-8350-58791b4a47bf">A data model is an <strong>abstract</strong>, conceptual framework that defines how data is structured, organized, and interpreted, independent of any particular storage medium or implementation. In contrast, a file format represents a concrete realization of this model, defining how the data is stored on disk.</p></verbal-definition></definition>
 </term>

<term id="_24b775c4-2234-e555-1677-75df69fd4843" anchor="term-data-variable"><preferred><expression>
<name>data variable</name>
</expression>
</preferred>
<definition id="_9e492889-9b49-dbfe-e517-b4b9fd37a415"><verbal-definition id="_4d01e67f-1632-a13a-3f0f-06706e09e230"><p id="_7b350d60-c798-f2d3-b89d-0cb42fc0de3f">An array containing the primary geospatial or scientific measurements of interest (e.g., temperature, reflectance). Data variables are defined over one or more dimensions and associated with attributes.</p></verbal-definition></definition>
 </term>

<term id="_105c777b-fc0e-7dc9-a549-aba0f3d30ced" anchor="term-dimension"><preferred><expression>
<name>dimension</name>
</expression>
</preferred>
<definition id="_7cb912db-4ccb-5969-dae6-05846944a888"><verbal-definition id="_8a137a1b-e075-4629-091e-5d45545558db"><p id="_29dfe30f-dce2-e910-5bcd-994ed7b39094">An index axis along which arrays are organised. Dimensions provide a naming and ordering scheme for accessing data in multidimensional arrays (e.g., <tt>time</tt>, <tt>x</tt>, <tt>y</tt>, <tt>band</tt>).</p></verbal-definition></definition>
 </term>

<term id="_ff76915d-85d3-f0bf-6e63-5d2569c6bc4b" anchor="term-dataset"><preferred><expression>
<name>dataset</name>
</expression>
</preferred>
<definition id="_42074df9-7be7-ff9a-3f5a-0082711fccc8"><verbal-definition id="_2863ef04-5688-e046-c26e-f4755b15a692"><p id="_1f285ff5-c420-dc99-5320-8243d4768611"><strong>Avoid using:</strong> this term is overloaded and avoided in this document. A dataset usually represent a self-contained group of variables within a hierarchical data structure. They often share one or more dimensions and represent the unit that can be opened by a data access library (see <xref target="variable-group"><display-text>variable group</display-text></xref>)</p></verbal-definition></definition>
 </term>

<term id="_ba1ba992-7cb6-062c-5ae9-314601cafc42" anchor="term-metadata"><preferred><expression>
<name>metadata</name>
</expression>
</preferred>
<definition id="_bf4010ea-0a39-d96f-f624-29248a0ded4b"><verbal-definition id="_5b20afc1-31e0-aa54-b19d-afc160726481"><p id="_2f699593-54eb-6480-9628-932efda7ea9e">Structured information describing the content, context, and semantics of datasets, variables, and attributes. GeoZarr metadata includes CF attributes, geotransform definitions, and links to STAC metadata where applicable.</p></verbal-definition></definition>
 </term>

<term id="_1accd670-2e7d-f529-3bfd-0730bd432c9b" anchor="term-overview"><preferred><expression>
<name>overview</name>
</expression>
</preferred>
<definition id="_c24f4a35-0590-0ba2-983f-69c87a965f0a"><verbal-definition id="_173917fa-afaf-a9fd-c7a2-3fe4a09b4bd2"><p id="_1f2822fd-a253-b9b7-617d-5036773ee99d">A downscaled representation of a variable that facilitates rapid data display and efficient zooming. Overviews provide lower-resolution versions of the original data, enabling quick visualization and access without reading the full-resolution array. Multiple overview levels may be generated to support progressive rendering across different scales.</p></verbal-definition></definition>
 </term>

<term id="_26a915ff-6a7c-cbb3-f2e2-2bf3ea491e43" anchor="term-store"><preferred><expression>
<name>store</name>
</expression>
</preferred>
<definition id="_34337e4d-bb80-41b3-6380-feaaf51617ca"><verbal-definition id="_fd3e4db8-e765-6cf8-5790-dbc0a117ed51"><p id="_26c48b96-76de-9ae5-817f-0f005a113de1">A system that provides storage and retrieval operations for Zarr hierarchies, as defined in the <link target="https://zarr-specs.readthedocs.io/en/latest/v3/core/index.html#stores">Zarr core specification</link>. A store implements the abstract store interface and can be backed by various storage technologies such as filesystems, cloud object storage, or databases. GeoZarr hierarchies are stored within and accessed through Zarr stores.</p></verbal-definition></definition>
 </term>

<term id="_5a3d1847-7fb0-81bd-6323-40e4e7b5ab13" anchor="term-tile-matrix-set"><preferred><expression>
<name>tile matrix set</name>
</expression>
</preferred>
<definition id="_6bbaf570-489d-504b-f3c9-0d1ebe605903"><verbal-definition id="_0f18644d-a0bc-200c-cc3c-c97d0bd08da8"><p id="_feab0c6b-f7c6-dbc0-23de-719f1f33659e">A spatial tiling scheme defined by a hierarchy of zoom levels and consistent grid parameters (e.g., scale, CRS). Tile Matrix Sets enable spatial indexing and tiling of gridded data.</p></verbal-definition></definition>
 </term>

<term id="_a1761efe-9243-d3d1-50ad-1637820f926d" anchor="variable-group"><preferred><expression>
<name>variable group</name>
</expression>
</preferred>
<definition id="_d364016f-16b9-ad99-2f1d-ba8e76801d04"><verbal-definition id="_804c62c5-8f54-d1b0-3597-f22e033e1e93"><p id="_46d38eaa-98ee-f996-87ab-fdad1d866687">A variable group is a container that includes a coherent collection of variables sharing the same dimensional structure and coordinate system ( and may contain additional variables or subgroups). It is conceptually equivalent to an xarray Dataset..</p></verbal-definition></definition>
 </term>
</terms>

<definitions id="_c6927e9f-0fdd-e38d-69f0-6270b11fee57" type="abbreviated_terms" obligation="normative">
<title id="_32e29d4b-6207-26d1-09e5-7ab17e052031">Abbreviated terms</title>
<dl id="_541be585-e504-d15d-e0cd-db511731106e"><dt anchor="symbol-API" id="_a45af4c5-d078-ef09-2f73-d8824d32644a">API</dt><dd id="_fd5246c9-5710-0a95-bc86-6a5b769d67fc"><p id="_28eedaac-bdbf-cc6f-ca8a-d99fbde45a4f">Application Programming Interface</p>
</dd>
<dt anchor="symbol-CDM" id="_ed0d1a8e-3c23-a1a3-d68f-be3f7074e981">CDM</dt><dd id="_214ad45e-cbac-309b-14cb-8eac2f62ff46"><p id="_cd4ec71f-eb9b-a657-abc9-5a4f79543dfd">Common Data Model</p>
</dd>
<dt anchor="symbol-CF" id="_b90ffbc1-29fb-4f29-fea2-8711b8d39f1a">CF</dt><dd id="_12861f90-d763-93ec-dae8-62ee609d9add"><p id="_fde1393e-83d1-878d-a97d-9ab23cf68949">Climate and Forecast Conventions</p>
</dd>
<dt anchor="symbol-CRS" id="_1a95b2ce-01ec-9c80-2375-b03308b9a396">CRS</dt><dd id="_ba42eb69-42c1-246a-70fb-2e5904005e3c"><p id="_18e8c709-1c35-b94a-0b3c-15ab3e4020ba">Coordinate Reference System</p>
</dd>
<dt anchor="symbol-EPSG" id="_7ccdde7a-9d9d-3fdb-b0dd-271ef4249f08">EPSG</dt><dd id="_a0de7d35-beaa-7fdd-24b3-0038f5b1e4dc"><p id="_db782992-ca0d-c0e2-23fc-002f0c049aba">European Petroleum Survey Group</p>
</dd>
<dt anchor="symbol-GDAL" id="_3d4dccba-46fd-8616-300d-7df976f82f49">GDAL</dt><dd id="_bb99a6df-c5e4-8185-95fd-5786e14bd11d"><p id="_f977d85e-3839-2e72-5409-ccfa920610c3">Geospatial Data Abstraction Library</p>
</dd>
<dt anchor="symbol-GeoTIFF" id="_dbe7491d-80f9-addf-701a-5cbb52bc420e">GeoTIFF</dt><dd id="_1dbaf944-c33c-5826-a364-72bfd786d71b"><p id="_8f73e6f5-c198-ba19-3370-cc3b446cec3b">Georeferenced Tagged Image File Format</p>
</dd>
<dt anchor="symbol-JSON" id="_194d85d3-6ac1-8872-aaba-a111a5eca799">JSON</dt><dd id="_b52a009c-632d-80e1-cd1c-61cfe648aed5"><p id="_e7b93399-13ab-a9d3-a9fa-3a0a68f6e79f">JavaScript Object Notation</p>
</dd>
<dt anchor="symbol-OGC" id="_55925392-263c-3c15-c201-65d710b3ee33">OGC</dt><dd id="_547ffcd3-e82f-6aa5-12ea-cf590cc4c5f4"><p id="_4a34b5fc-cf70-0ef3-5417-1efdead10c52">Open Geospatial Consortium</p>
</dd>
<dt anchor="symbol-STAC" id="_b8eb0296-95b6-42fb-2535-8c2684edb6cc">STAC</dt><dd id="_8c0215ab-d635-187e-df20-786a1e6bf411"><p id="_bb141437-155e-ff77-2dfa-c29efac26ce4">SpatioTemporal Asset Catalog</p>
</dd>
<dt anchor="symbol-UDM" id="_9032c766-c61c-b17a-e248-e27d065ac7a5">UDM</dt><dd id="_43edf792-c379-3128-79b4-a9141a522f62"><p id="_52076992-cf81-8656-059e-887c3002d26f">Unified Data Model</p>
</dd>
<dt anchor="symbol-URI" id="_4ba15fd6-f96f-5b6f-6ac0-0e92c12cc93c">URI</dt><dd id="_e2feee5e-8011-d794-e9d7-fe4c3b8a85bb"><p id="_368630b8-b901-c838-aa23-5c0528ad1d28">Uniform Resource Identifier</p>
</dd>
<dt anchor="symbol-URL" id="_e4363b16-833a-2bdc-7a10-171fed7be183">URL</dt><dd id="_3263c241-58fb-93b4-89ad-c1aa4f70d91a"><p id="_201608b6-a085-c2c3-30d4-ff5291930caf">Uniform Resource Locator</p>
</dd>
<dt anchor="symbol-Zarr" id="_2673d0e1-0ede-27d4-eb5d-288930379b34">Zarr</dt><dd id="_c1b79e6d-d287-b892-bcdb-d9074502a712"><p id="_0233ecb8-2155-42d3-02a0-c1796e90d0cf">Zipped Array Storage format</p>
</dd></dl>
</definitions></clause>

<clause id="_0b31a2f8-71f8-4baf-fbfe-7cd1554ea528" obligation="normative">
<title id="_f9d680fa-eb91-8fb3-1391-c5e4a3bdb0cd">Conventions</title>
<p id="_22173e5b-b415-9245-b5a0-658bca9d4ac4">This section describes the conventions used throughout this Standard, including identifiers, metadata schemas, and referencing mechanisms relevant to the GeoZarr Unified Data Model.</p>

<clause id="_32982728-c7e8-b7e6-5d7e-fdd8b6a77ec4" obligation="normative">
<title id="_defdf1b5-40d4-a6a4-09ed-91ea356ad7e1">Identifiers</title>
<p id="_3a65f4b9-cc4e-103f-e6dd-a8dbcf28d1f6">The normative provisions in this Standard are denoted by the base URI:</p>

<p id="_cff42f2f-5cbc-ee6e-dfb3-aae721b06653"><tt><link target="http://www.opengis.net/spec/geozarr/1.0"/></tt></p>

<p id="_8927c2b2-52ad-7fee-b3a4-1a356822d2f7">All requirements, recommendations, permissions, and conformance tests that appear in this document are assigned relative URIs anchored to this base.</p>

<p id="_a62cca54-98f9-e4b3-a85f-0a2621590c3a">For example:</p>

<p id="_1ded83b6-b292-9e83-0d5d-1a13ab17ab9a"><tt><link target="http://www.opengis.net/spec/geozarr/1.0/conf/core"/></tt> — refers to the Core Requirements Class of the GeoZarr Unified Data Model.</p>
</clause>

<clause id="_8d0ef5c7-4182-7a59-03af-aa605c990f8e" obligation="normative">
<title id="_c16ff00f-df4c-9442-71f0-d48ddd74c813">Data Encoding</title>
<p id="_77f83588-b6c5-892e-16a6-f1ab77c70686">This Standard specifies the encoding of geospatial data in the Zarr format. Zarr is a chunked, compressed, binary format for n-dimensional arrays, with support for both Version 2 and Version 3 encodings.</p>

<p id="_b406905a-80b3-8957-b2cc-0b781ca0090f">The specification makes extensive use of:</p>

<ul id="_beac7b9a-7382-57d7-ff9f-8cb9ad68c763"><li><p id="_464b8176-39dd-67c9-9dcf-baafb7ffdc2b"><tt>zarr.json</tt> metadata documents (Zarr v3)</p>
</li>
<li><p id="_803747ce-c733-4477-296e-5be1fac9eedc"><tt>.zgroup</tt>, <tt>.zattrs</tt>, <tt>.zarray</tt> metadata files (Zarr v2)</p>
</li>
<li><p id="_86385eba-b3e3-fbdf-8035-efe682b93813">JSON-compatible structures for metadata, attributes, and conformance declarations</p>
</li>
</ul>
</clause>

<clause id="_79e55793-9f00-8a6c-3942-5f7457560ac7" obligation="normative">
<title id="_b433839e-b379-d2d6-eb1d-dc261b3108f2">Schemas</title>
<p id="_03bd23e2-8043-9f4a-7e74-5812b316bb2e">Metadata schemas referenced in this Standard are represented using JSON-compatible objects and may be defined formally using JSON Schema. Metadata structures for tile matrix sets, STAC properties, or CF metadata may be embedded inline or referenced externally via URI.</p>
</clause>

<clause id="_431584ec-d9a6-af49-a27c-079f528e95f4" obligation="normative">
<title id="_5bb8e7be-fc23-8e7e-f817-24dcf1e4b117">URI Usage</title>
<p id="_19bf9bf9-4a7d-6853-1ef8-fba41aaba697">URIs used in this Standard must comply with [RFC3986] (URI Syntax). When including reserved characters in a URI, they must be percent-encoded. Dataset identifiers, metadata links, and STAC references should use persistent and canonical forms to support reproducibility and catalogue integration.</p>
</clause>
</clause>

<clause id="_6f8ca0ac-133b-bfe5-ea3c-830f2943a16e" anchor="overview" obligation="normative">
<title id="_6e683f7b-dd63-b6db-bc8e-1f01ba441e1d">Overview</title>
<p id="_bb7dc609-5340-f14e-5146-f13cdc6111c8">The <strong>GeoZarr Standard</strong> defines an <strong>abstract data model</strong> and a set of <strong>conventions</strong> for representing and describing geospatial and scientific datasets using the <strong>Zarr</strong> format.</p>

<p id="_8b257f90-e82d-6579-d4f2-f0c7e9bfca2e">Zarr provides efficient, chunked storage for n-dimensional arrays but does not include the semantic constructs required for geospatial and scientific data workflows. The <strong>Unidata Common Data Model (CDM)</strong> addresses this gap by introducing essential concepts that structure information through <strong>variables</strong>, <strong>groups</strong>, <strong>coordinates</strong>, and <strong>metadata</strong>. This abstract data model provides the semantic framework that enables structured interpretation of array-based data on top of Zarr’s storage foundation.</p>

<p id="_c262188a-8844-86e8-a43e-fc1b5dee8d33">The <strong>primary objective</strong> of GeoZarr is to specify how the <strong>CDM</strong> is encoded within Zarr. GeoZarr provides normative rules for encoding these CDM concepts in Zarr and thereby standardises the encoding practices already adopted by CDM-compatible libraries such as <strong>xarray</strong> and <strong>nczarr</strong>, promoting consistent interpretation and interoperability across tools and platforms.</p>

<p id="_f513e370-1409-b98e-79bc-fad65a1ad7af">By defining an <strong>abstract model</strong> based on the <strong>CDM</strong> and a corresponding <strong>encoding for Zarr</strong>, GeoZarr establishes an explicit relationship between <strong>the conceptual structure of the data</strong> and <strong>its physical storage representation</strong>. Zarr defines how data are stored and accessed as chunked, hierarchical arrays, while GeoZarr specifies how this stored structure represents the scientific and geospatial meaning of the dataset..</p>

<p id="_ef51793b-331d-e508-8ec3-d00ca21cdd0e">As a <strong>secondary objective</strong>, GeoZarr extends the <strong>CDM base layer</strong> with additional capabilities required for geospatial and cloud-native applications. These extensions include <strong>multiscale overviews</strong>, which enable the representation of data at multiple levels of detail, and <strong>affine transformations</strong>, which define the spatial relationship between data coordinates and real-world locations. All extensions remain fully aligned with the CDM framework.</p>

<p id="_61eb9f66-cc6c-cc83-285d-9d9f6e3f91ac">The <strong>CDM</strong> base layer also provides a <strong>generic framework</strong> capable of hosting metadata from a wide range of community standards. GeoZarr encourages the use of the <strong>Climate and Forecast (CF) Conventions</strong>, which are themselves defined around the CDM model, without imposing them as mandatory. This flexibility also supports metadata from other domain-specific standards such as <strong>GeoTIFF</strong>, <strong>GDAL</strong>, and similar geospatial conventions.</p>
</clause>

<clause id="_c3d1f896-f486-89c2-82cc-62334cc8fb57" anchor="data-model" obligation="=informative">
<title id="_48280d6a-8344-f898-ec3e-ab38c9b8c85b">GeoZarr Data Model</title>
<clause id="_67135944-cdcb-e513-7ce0-aead5d912822" obligation="=informative">
<title id="_de93b126-0dfe-3663-00da-5ab8d9ad2c5e">Scope and Purpose</title>
<p id="_11aad1d0-8883-2ac0-e282-1a06611e38ab">The GeoZarr Data Model defines the abstract structure for representing geospatial and scientific gridded data within the GeoZarr framework.</p>

<p id="_07a7d99f-5795-42f6-bbdf-8574fb132311">The GeoZarr Data Model serves the following purposes:</p>

<ul id="_ec3938cb-e251-2e82-31c0-5f0ff5e8447c"><li><p id="_fd76f26f-609e-9347-85b9-3f1e42164909">to <strong>clarify the role of the Common Data Model (CDM)</strong> as the structural foundation (recognising its suitability for Zarr as demonstrated by <strong>xarray</strong>, <strong>GDAL</strong>, and <strong>nczarr</strong>);</p>
</li>
<li><p id="_30b0afa6-0314-dccf-9090-a5add5ec7da7">to <strong>extend the CDM</strong> with additional geospatial capabilities required for cloud-native and tiled data representations, including <strong>affine transformations</strong> and <strong>multiscale overviews</strong>;</p>
</li>
<li><p id="_c81a9683-640f-1da8-9638-422738331867">to <strong>ensure compatibility</strong> with established data models and conventions such as <strong>netCDF</strong>, <strong>CF</strong>, <strong>GDAL</strong>, and <strong>GeoTIFF</strong>.</p>
</li>
</ul>
</clause>

<clause id="_2a5ff173-a816-6b6f-4686-f3183abef8c4" obligation="=informative">
<title id="_849512cc-b7ed-8a2a-7039-40645373e4a0">Conceptual Basis</title>
<p id="_046b5259-9b18-26f7-ba55-0bc418f92706">The GeoZarr Data Model adopts and extends the <strong>Unidata Common Data Model (CDM)</strong> as its conceptual foundation. The CDM defines a hierarchy of  <strong>groups</strong>, <strong>variables</strong>, <strong>dimensions</strong>, and <strong>attributes</strong> that together describe the logical organisation of scientific data.</p>

<p id="_80669406-392f-d322-6975-83a3d45bf291">GeoZarr reuses these constructs and introduces an additional layer of <strong>GeoZarr Extensions</strong> that provide explicit geospatial semantics and support for cloud-native scalability:      <strong> <strong>Affine transformations</strong> defining spatial reference through linear mapping between array indices and real-world coordinates;      </strong> <strong>Overviews</strong> enabling multiscale representations and efficient visualization of large datasets.</p>
</clause>

<clause id="_1e81d31e-aa45-a615-1247-a52e8a2842d8" obligation="=informative">
<title id="_3b3458eb-c3f7-a56c-3f8e-e9810d008dd7">Format Independence</title>
<p id="_73c16274-6b8d-afee-4b31-a47d24a7ec90">Although the model was defined to support encoding in <strong>Zarr</strong>, it remains <strong>format-agnostic</strong> at the conceptual level. Implementations may serialise the same GeoZarr Data Model structure into other compatible encodings, such as NetCDF or alternative object-based formats, provided they preserve the semantics and conformance requirements defined herein.</p>

<p id="_4f875bea-cd2f-177b-136c-b31b44db103d">This separation between <strong>conceptual model</strong> and <strong>physical encoding</strong> ensures that GeoZarr can evolve alongside emerging storage technologies while maintaining interoperability with existing CDM- and CF-based infrastructures.</p>
</clause>

<clause id="_7b1b0b14-e1ec-a479-33d2-05f25939acd6" obligation="=informative">
<title id="_9016f1c9-36a7-5889-496b-97984eaa4ad5">Conceptual Layers</title>
<p id="_e16d02fb-d71c-1621-4793-1bf0af83a420">The GeoZarr Data Model is organised into two conceptual layers:</p>

<ol id="_324db16b-31c2-2825-67db-e0c228a03c0d" type="arabic"><li><p id="_f8131cd2-08de-b459-4edf-6b9130c04233">the <strong>Common Data Model (CDM)</strong> – structural foundation for multidimensional data;</p>
</li>
<li><p id="_9489736c-ce24-01fd-f238-c8c0abdd88b1">the <strong>GeoZarr Extensions</strong> – additional constructs for geospatial semantics and multiscale representations.</p>
</li>
</ol>

<clause id="_86c39618-c47d-35a6-bfd3-4c40942f51bb" obligation="=informative">
<title id="_9be0c3ae-9f7e-f776-e1c5-1ed67766367c">Common Data Model (CDM)</title>
<p id="_acc3909a-c0ef-f1b9-a196-c6546877eced">The <strong>Unidata Common Data Model (CDM)</strong> defines the logical structure of scientific datasets through a hierarchy of <strong>Groups</strong>, <strong>Variables</strong>, <strong>Dimensions</strong>, and <strong>Attributes</strong>. It provides the foundation upon which GeoZarr and many existing libraries (such as  <strong>xarray</strong>, <strong>GDAL</strong>, and <strong>nczarr</strong>) operate.</p>

<sourcecode id="_475bb88a-e8ec-d232-f83c-0240f05a1588"><body>@startuml
class Group {
}

class Variable {
}

class Dimension {
}

class Attribute {
}

class DataArray {
}

class CoordinateVariable {
}

class Subgroup {
}

Group "1" *-- "0..*" Variable
Group "1" *-- "0..*" Dimension
Group "1" *-- "0..*" Attribute
Group "1" *-- "0..*" Subgroup
Variable "1" *-- "1" DataArray
Variable &lt;|-- CoordinateVariable

@enduml</body></sourcecode>


<ul id="_1f37ef16-f543-e30b-2da6-45fe048f0883"><li><p id="_1344986b-f2c7-f519-e6f7-1a9736dbb797">A <strong>Group</strong> is a container that may include variables, dimensions, attributes, and subgroups.</p>
</li>
<li><p id="_e7a24dd2-c648-56c2-7984-b51125b9accc">A <strong>Variable</strong> represents a multidimensional array associated with one or more dimensions and attributes.</p>
</li>
<li><p id="_b39abefe-64f0-85d0-cb81-043ccc413026">A <strong>Dimension</strong> defines an index axis used to organise data within variables.</p>
</li>
<li><p id="_d383e5cf-97d6-9ddf-f91c-3de48654f7bc">An <strong>Attribute</strong> holds descriptive metadata for groups or variables.</p>
</li>
<li><p id="_9394b7d2-5360-c2e9-561b-8d93978f80a6">A <strong>Coordinate Variables</strong>  supplies coordinate values along dimensions, establishing spatial or temporal context.</p>
</li>
<li><p id="_82555b11-497f-efbf-f647-5b1c36a6f177">A <strong>Data Array</strong>  represents observed or simulated phenomena, associated with dimensions and coordinate variables.</p>
</li>
</ul>

<p id="_240e5c1e-04f1-8ad0-07f0-d576d8c838b0">This structure enables consistent representation of scientific data independently of storage format, providing the base semantic framework for all GeoZarr encodings.</p>
</clause>

<clause id="_d88db19d-f389-d0f8-2bc9-338ddc828672" obligation="=informative">
<title id="_d8380862-496c-3517-84bf-cafdbd7344cd">GeoZarr Extensions</title>
<p id="_040f84ee-82cf-53b3-8e46-8743e3387ea3">GeoZarr extends the CDM with additional geospatial constructs required for cloud-native applications:</p>

<ul id="_ad06736e-beea-a9f0-1974-9f67bad0a2b5"><li><p id="_c94f183a-998e-8c7a-c00b-c5e3d6973b42"><strong>Affine transformations</strong> — define the mapping between array indices and real-world coordinates using linear coefficients. This enables compact georeferencing for regularly gridded data.</p>
</li>
<li><p id="_b19b3580-dd98-eeef-34d4-1e96e5e90309"><strong>Multiscale overviews</strong> — represent downsampled versions of variables for efficient visualisation and scalable access. Overviews are structured as subordinate variable groups sharing the same coordinate system.</p>
</li>
</ul>

<p id="_922d0594-d4e9-5f78-0d34-f8acfb1f5f17">All extensions remain aligned with the CDM hierarchy and are encoded using the same core constructs (groups, variables, and attributes). Together, they provide the minimal geospatial extensions necessary for efficient, standards-based representation of Earth observation and scientific data in cloud environments.</p>

<sourcecode id="_9a3a2f73-d7f0-ecbe-959e-910d76c8965b"><body>@startuml
skinparam classAttributeIconSize 0
skinparam linetype ortho
skinparam packageStyle rectangle
skinparam backgroundColor #FFFFFF
title GeoZarr Extensions – Geospatial Enhancements

package "Common Data Model (CDM)" {
  class Group
  class Variable
  class Dimension
  class Attribute
}

package "GeoZarr Extensions" {
  class AffineTransform
  class Overview
}

Variable --&gt; AffineTransform : georeference
Group --&gt; Overview : provides
Variable --&gt; Overview : provides

@enduml</body></sourcecode>

</clause>
</clause>

<clause id="_4ef7d0cc-72bc-da17-736f-ba7f6ecd5348" obligation="=informative">
<title id="_4adde0ae-839e-3d59-2818-1e7e6c5e8aa3">Interoperability with Other Frameworks</title>
<p id="_a6863b1b-9c29-66df-f053-541d50565d70">The Common Data Model (CDM), with its flexible hierarchy of groups, variables, dimensions, and attributes allows direct representation of metadata constructs used across multiple scientific and geospatial standards.</p>

<p id="_f942fb48-772c-7c5f-e333-1ecda2a45560">This design enables the CDM—and therefore GeoZarr—to act as a <strong>host model</strong> for conventions and metadata originating from other frameworks, while preserving their semantics within a unified structure.</p>

<ul id="_682598f4-0e87-d9aa-64fc-b725428356ab"><li><p id="_3c72b8ba-90bd-5f2a-d153-f7304d264bb4"><strong>netCDF and the Enhanced Data Model</strong> – The netCDF Enhanced Data Model and the CDM share common origins and are conceptually aligned. Both organise data into variables, dimensions, and attributes. As a result, most netCDF datasets can be represented as CDM hierarchies without loss of structure or metadata. Conversely, GeoZarr datasets that follow the CDM pattern can be serialised as valid netCDF encodings.</p>
</li>
<li><p id="_898ca1bf-9518-8fbf-8e09-85fb360a3240"><strong>CF Conventions</strong> – The CF data model is encoding independent but conceptually compatible with the CDM. CF metadata constructs—such as coordinate and auxiliary coordinate variables, standard names, units, and grid mappings—map directly onto CDM variables and attributes. This allows GeoZarr datasets to incorporate CF semantics naturally, achieving partial or full CF compliance without modifying the underlying data model.</p>
</li>
<li><p id="_48bdb853-6e17-32dd-e393-481d747bed20"><strong>GDAL Metadata and Geotransform</strong> – GDAL expresses georeferencing through affine transformation coefficients and projection information. These map directly to GeoZarr extension attributes (for affine transforms and CRS) stored as CDM attributes. GDAL domain metadata can likewise be represented as CDM attributes within groups or variables, maintaining equivalence between GDAL and GeoZarr geospatial metadata.</p>
</li>
<li><p id="_e0f954d6-d78a-3304-b569-0f3cb4e63e42"><strong>GeoTIFF Tags and Metadata</strong> – GeoTIFF georeferencing information, including coordinate reference system definitions, tie points, and pixel scale, correspond closely to the affine transform and CRS constructs in the GeoZarr Extensions. These elements can be represented as attributes within CDM-compliant groups and variables, ensuring semantic consistency between file-based and cloud-native representations.</p>
</li>
</ul>

<p id="_c19fd88b-b1b9-e6cf-b0b2-76da7a4c6b45">Through these mappings, the CDM acts as a <strong>common semantic framework</strong> that integrates metadata from diverse geospatial standards.
This interoperability ensures that GeoZarr can serve as both a native storage model and a bridge between existing ecosystems such as netCDF/CF, GDAL, and GeoTIFF.<note id="_7eabb4be-41bb-937f-2e16-c9d33f0999dd"><p id="_406ca6ab-3d6d-ed99-3d6a-000ac5c5ec62">GeoZarr does <strong>not</strong> define the mappings to CDM for metadata from existing conventions or formats such as CF, netCDF, GDAL, or GeoTIFF. These mappings are already established and maintained by widely used libraries and implementations, including  <strong>xarray</strong>, <strong>netCDF-Java</strong>, <strong>GDAL</strong>, etc. The role of GeoZarr is to provide a <strong>data model and encoding framework</strong>, not to redefine or replicate existing translation logic between metadata standards.</p>

<p id="_d7ee430e-f882-6486-4e13-53ec7a796c73">Accordingly, the <strong>GeoZarr encoding specification</strong> will only prescribe additional rules where a specific encoding behaviour in <strong>Zarr</strong> is required for interoperability or conformance.</p>
</note></p>



<clause id="_b799d42f-b344-c83a-d233-470c150e802c" obligation="=informative">
<title id="_fc28ceef-4094-5c41-4187-6f5b3cb3c8fe">Metadata and Discovery Integration</title>
<p id="_907fdad4-735e-f504-e400-65b0197e52aa">STAC compatibility enables integration with catalogue services for discovery and indexing. Datasets can expose STAC-compliant metadata alongside core metadata, supporting federated search and filtering via STAC APIs.</p>

<p id="_6be5871c-f2c3-a428-ac24-1636846f8088">This approach enables seamless integration into modern data catalogues and platforms that support EO discovery standards.</p>
</clause>

<clause id="_dfb68fd2-3101-572f-a92f-b41b6eebba56" obligation="=informative">
<title id="_ae5a39e4-ad84-9133-88cc-8b7ec605ccd4">Tool and Ecosystem Support</title>
<p id="_4f1beb63-ad51-c96e-b9fc-8ddd5261aa1b">The Unified Data Model facilitates interoperability with tools and libraries across the following domains:</p>

<ul id="_9bda426d-104b-57c3-923e-653eed1bee30"><li><p id="_7133f4ee-5cf5-e851-fc3c-3a42002cc913"><strong>Scientific computing</strong>: NetCDF-based libraries (e.g., xarray, netCDF4), Zarr-compatible clients.</p>
</li>
<li><p id="_fdec75e9-60b1-ad4e-2b16-6921976cf25b"><strong>Geospatial processing</strong>: GDAL, rasterio, QGIS (via Zarr driver extensions or translations).</p>
</li>
<li><p id="_0d6dfe63-d68f-30f4-0a29-64ac26caa438"><strong>Cloud-native infrastructure</strong>: support for parallel access, chunked storage, and hierarchical grouping compatible with object storage.</p>
</li>
</ul>

<p id="_0a532da4-d695-2dec-6d77-98d182faf2f7">Tooling support is expected to grow via standard-conformant implementations, easing adoption across domains and infrastructures.</p>
</clause>
</clause>
</clause>

<clause id="_810249b0-5f45-fbfb-acb1-3152cee4d37c" obligation="normative">
<title id="_f1086027-0c53-5b1b-6f87-9648664f3425">Encodings for Zarr</title>
<p id="_0f797f70-4536-106b-4ea6-45d7f5dc8a04">This clause defines the normative mapping between the <strong>GeoZarr Data Model</strong> and the <strong>Zarr storage format</strong>. It specifies how the structural elements of the  <strong>Common Data Model (CDM)</strong> — groups, variables, dimensions, and attributes — are encoded in <strong>Zarr v2</strong> and <strong>Zarr v3</strong>, and identifies additional constraints introduced by GeoZarr.</p>

<p id="_13b81f41-d440-1761-0dd9-35f375eb4f90">GeoZarr’s encoding rules are limited to cases where explicit guidance is required for interoperability. GeoZarr does  <strong>not</strong> redefine how CF, GDAL, or other metadata conventions map to CDM constructs — these mappings are already implemented in community libraries such as <strong>xarray</strong>, <strong>GDAL</strong>, and <strong>netCDF-Java</strong>.</p>

<p id="_f55a2afd-274f-5207-0e1b-8827a8adb976">The GeoZarr encoding rules therefore focus on <strong>CDM structure and semantics</strong>, with additional subsections specifying any <strong>Zarr-specific requirements</strong> for supported metadata conventions.</p>

<clause id="_11652b51-6780-14ba-5872-0a11d25ef147" obligation="normative">
<title id="_5a19ca2e-cc5e-19d0-995c-5102766f733e">Common Data Model Encodings</title>
<clause id="_47ea375d-542a-ca65-5a28-6f0204962c3e" obligation="normative">
<title id="_f8ea3ac9-d9aa-dbf4-8b53-59d8ca6b87d5">Hierarchical Structure</title>
<p id="_a61374af-6df7-eb14-567d-4d4ea31fb385">A GeoZarr hierarchy follows the CDM model of a tree of <strong>groups</strong>, <strong>variables</strong> (arrays), <strong>dimensions</strong>, and <strong>attributes</strong>. Each Zarr store contains a single root group and an arbitrary number of child groups and arrays, organised recursively.</p>

<table id="_2897d2d6-c949-7e04-bc4c-2a51c6fcbec0"><colgroup><col width="20%"/><col width="40%"/><col width="40%"/></colgroup><thead><tr id="_8bfc2537-574d-f12f-4bae-48cbe540ea79"><th id="_d8123c0b-3f7f-d6e4-8497-42f46a720d57" valign="middle" align="left">CDM Element</th>
<th id="_6f41d240-3e35-d208-ae46-cc9909d590c7" valign="middle" align="left">Zarr v2 Encoding</th>
<th id="_81412d68-df5c-7aa3-dab7-c742e3fec97d" valign="middle" align="left">Zarr v3 Encoding</th>
</tr></thead>
<tbody><tr id="_e23e50b4-7a0b-a51a-7345-d585b6a49deb"><td id="_73a63c6a-c0bb-8dc5-ae66-84d2a1e010a3" valign="middle" align="left">Group</td>
<td id="_d68a0282-2a66-9d8b-46ee-cb3075b5ccac" valign="middle" align="left">Directory with <tt>.zgroup</tt> and <tt>.zattrs</tt></td>
<td id="_c6d49e51-dfa2-a084-a83e-d7450012219c" valign="middle" align="left">Directory containing <tt>zarr.json</tt> with <tt>"node_type": "group"</tt></td>
</tr><tr id="_9b657346-2aa4-0455-9dd7-6ba33c539b5b"><td id="_71fbe2bd-7c47-0949-68dd-e087f0f6a0d3" valign="middle" align="left">Variable (Array)</td>
<td id="_b0d949cc-a52d-8204-8975-8eb8b25c88bc" valign="middle" align="left">Directory with <tt>.zarray</tt> and <tt>.zattrs</tt></td>
<td id="_49d1c89b-d4f6-e101-d903-864977700256" valign="middle" align="left">Directory containing <tt>zarr.json</tt> with <tt>"node_type": "array"</tt></td>
</tr><tr id="_31856d50-afe5-41bb-faf6-cfc958ab5ce8"><td id="_ed763bb3-e1b4-ba73-5993-69cc6b2d8074" valign="middle" align="left">Attributes</td>
<td id="_6cf8e761-1ec7-e81d-cc32-1c52e3862e17" valign="middle" align="left"><tt>.zattrs</tt> file (JSON object)</td>
<td id="_ae7af946-83cb-c8b0-daa0-b295a6a51253" valign="middle" align="left"><tt>attributes</tt> field in <tt>zarr.json</tt></td>
</tr></tbody>
</table>

<p id="_72756461-dcf4-d5e8-1388-017e9fa20524">Zarr v3 nodes must declare <tt>"zarr_format": 3</tt> and include <tt>"node_type"</tt> set to either <tt>"group"</tt> or <tt>"array"</tt>. All user-defined metadata, including GeoZarr attributes, shall be placed within the  <tt>attributes</tt> field.</p>
</clause>

<clause id="_69dee8a6-6f60-3cc0-07af-e71ff72d8c17" obligation="normative">
<title id="_9d744d1e-3b0e-d7c3-cd41-613f57f06d9c">Dimensions</title>
<p id="_f2b7fe98-87bf-c2b7-533a-0a1a52eafb26">Dimensions define the index axes for variables.</p>

<table id="_1721f845-3d61-7558-1ab5-f49e8bb63a5b"><colgroup><col width="20%"/><col width="40%"/><col width="40%"/></colgroup><thead><tr id="_09ed6fa4-f8dc-b7df-396f-9195ef0c8092"><th id="_4b4eac82-62e3-082c-e9e9-1262891f5318" valign="middle" align="left">Aspect</th>
<th id="_ce24edd8-598d-1764-e904-2a816c86c518" valign="middle" align="left">Zarr v2</th>
<th id="_9e370112-adbe-3ac2-6974-3e4837883180" valign="middle" align="left">Zarr v3</th>
</tr></thead>
<tbody><tr id="_0c71b715-7726-1319-6f09-6162a51ac28e"><td id="_89629ff3-2e3b-74ac-9677-1090df3a9516" valign="middle" align="left">Declaration</td>
<td id="_5b03133d-7bf4-77f8-af22-86c11788ec1f" valign="middle" align="left"><tt>_ARRAY_DIMENSIONS</tt> attribute in <tt>.zattrs</tt></td>
<td id="_d9d87b7d-30fa-1f45-0a78-059222e47f2d" valign="middle" align="left"><tt>dimension_names</tt> field in <tt>zarr.json</tt></td>
</tr><tr id="_74629e88-2be3-f560-d38b-5dc3d0cb49da"><td id="_62a9f172-01eb-f12c-d6ae-8ae1a5132b81" valign="middle" align="left">Scope</td>
<td id="_021e86ec-b58d-ff84-49ab-f7e05b987015" valign="middle" align="left">Implicit, per array</td>
<td id="_50b663aa-8889-86e3-c608-467abebc35c2" valign="middle" align="left">Explicit, per array; names are globally unique within a group hierarchy</td>
</tr></tbody>
</table>

<p id="_191ca971-605d-51df-a12b-0b3f3a17bb27">Example (Zarr v3 array with two dimensions):</p>

<sourcecode id="_364c50c6-c79f-5cbb-6500-de3e28a3414b" lang="json"><body>{
  "zarr_format": 3,
  "node_type": "array",
  "shape": [180, 360],
  "dimension_names": ["lat", "lon"],
  ...
}</body></sourcecode>


<p id="_79a52b9d-38d9-ba90-fccc-db14b4d2f2c4"><strong>Shared Dimensions:</strong></p>

<p id="_68da2e24-833b-621c-c564-2b1086da899c">Zarr does not define dimension entities as standalone objects. To preserve CDM semantics, GeoZarr requires that dimension names be  <strong>unique within each group hierarchy</strong> and reused consistently across variables that share the same axis.</p>

<p id="_5b864f4c-437d-9311-4c87-d313b5384a63">As in <strong>netCDF-4</strong>, where groups can define their own local dimensions, GeoZarr allows dimensions to be scoped within groups. When a dimension defined in one group is shared by variables located in descendant groups, implementations may indicate this relationship by prefixing the dimension name with a slash (e.g.,  <tt>"/time"</tt>). In this context, the leading slash signifies that the dimension is defined in an  <strong>ancestor group</strong>—not necessarily the root of the hierarchy—and should be interpreted as a shared axis accessible to all subordinate groups.</p>
</clause>

<clause id="_d0e44483-1250-d37f-0df6-55b0afaf08da" obligation="normative">
<title id="_d8c1d9bc-baf0-e28a-4814-1d5daacbc147">Coordinate Variables</title>
<p id="_eb6e7327-1e8f-4616-fdf5-11094088be67">Coordinate variables define the spatial, temporal, or other contextual axes for data variables. They are stored as one-dimensional arrays associated with their corresponding dimensions.</p>

<table id="_2614d1d5-0430-3487-cbea-29b7d0e6cdf5"><colgroup><col width="20%"/><col width="40%"/><col width="40%"/></colgroup><thead><tr id="_fd87fecc-2eb2-a0fd-601f-c4b2c1cfb67c"><th id="_1e0b9dac-da22-6bee-8dbe-39410976cb4c" valign="middle" align="left">Aspect</th>
<th id="_654c7d9d-ad5c-d7f8-b763-df102fb6b3b7" valign="middle" align="left">Zarr v2</th>
<th id="_5fe9dc67-e574-318d-9540-83ad56a592c0" valign="middle" align="left">Zarr v3</th>
</tr></thead>
<tbody><tr id="_d83e8b32-fbd4-da46-ed2d-c56485718e15"><td id="_6979ff0c-9c3e-3091-c540-f5f1dc61ae9b" valign="middle" align="left">Storage</td>
<td id="_384f9f32-957c-848b-0acc-16d529c1fe6a" valign="middle" align="left">Zarr array with <tt>.zarray</tt>, <tt>.zattrs</tt></td>
<td id="_ef2da135-1bde-6f24-41cb-9de96076a203" valign="middle" align="left">Zarr array with <tt>zarr.json</tt></td>
</tr><tr id="_fc95c42e-a701-5a6c-16e1-52d49d5a94af"><td id="_6ebb1284-4b13-8b8a-8d24-2bd0341666c9" valign="middle" align="left">Dimension Binding</td>
<td id="_0734af17-0e85-85a8-5743-4229b22c9e26" valign="middle" align="left"><tt>_ARRAY_DIMENSIONS</tt> in <tt>.zattrs</tt></td>
<td id="_b02eba16-6bc2-2f12-aee0-c81da5202705" valign="middle" align="left"><tt>dimension_names</tt> in <tt>zarr.json</tt></td>
</tr><tr id="_24fe2179-caf2-1c75-11dd-37bf328f381d"><td id="_98805bd6-f89a-6bc6-01de-ef3abccc2f3c" valign="middle" align="left">Metadata</td>
<td id="_453a2340-76c5-6492-a0a1-a9589b02578c" valign="middle" align="left">CF-style attributes (e.g., <tt>standard_name</tt>, <tt>units</tt>, <tt>axis</tt>)</td>
<td id="_e8970f66-ccd6-ba00-cc37-4d84f15dd70f" valign="middle" align="left">Same under <tt>attributes</tt></td>
</tr></tbody>
</table>

<p id="_3cffbeb8-2275-a81c-79c9-1cbe81183926">Example (Zarr v3 coordinate array):</p>

<sourcecode id="_ca13b744-3462-2194-3a8b-9fd01f547413" lang="json"><body>{
  "zarr_format": 3,
  "node_type": "array",
  "shape": [180],
  "dimension_names": ["lat"],
  "data_type": "float32",
  "attributes": {
    "standard_name": "latitude",
    "units": "degrees_north",
    "axis": "Y"
  }
}</body></sourcecode>


<p id="_6943a71c-cb73-744a-a8c0-0d187fb368b5">Coordinate variables may also reference <strong>grid mapping</strong> variables for coordinate reference systems, as defined in the CF conventions.</p>
</clause>

<clause id="_5558e653-b6f8-a36f-8357-3c3c6cad86e3" obligation="normative">
<title id="_3aac02a7-f48c-7db6-f65c-d0d1254cf5ef">Data Variables</title>
<p id="_e985951d-9c87-760a-51a5-1b2b62385f23">Data variables represent primary measurements or derived quantities. They are encoded as multidimensional arrays linked to one or more dimensions and accompanied by descriptive metadata.</p>

<table id="_0f79f688-03a1-24aa-8bd6-3f1bcf092185"><colgroup><col width="20%"/><col width="40%"/><col width="40%"/></colgroup><thead><tr id="_5394ba4f-5d4f-9516-1a19-0bca9f145ccf"><th id="_358cfeab-6559-348f-a547-48b8b3af7ade" valign="middle" align="left">Aspect</th>
<th id="_596c6445-e7eb-74ed-6933-2feaf746cb8f" valign="middle" align="left">Zarr v2</th>
<th id="_56771566-5dc6-83a9-ee58-5ac5ed349ed2" valign="middle" align="left">Zarr v3</th>
</tr></thead>
<tbody><tr id="_add2f1a3-b592-201e-8794-37cdeb31f2a6"><td id="_e8621052-6b10-5eee-1a45-3a86099702ba" valign="middle" align="left">Storage</td>
<td id="_704145f8-8574-2242-07d6-a68d46a5e6dc" valign="middle" align="left">Directory containing <tt>.zarray</tt> and <tt>.zattrs</tt></td>
<td id="_0d4a778f-03a8-ff3d-e52a-9d05e3d4c65d" valign="middle" align="left">Directory containing <tt>zarr.json</tt> with <tt>"node_type": "array"</tt></td>
</tr><tr id="_a8288773-6dbc-8f7d-b4fe-221c81be7159"><td id="_66b34eb1-a443-6ad9-d7dc-f8246128ea5d" valign="middle" align="left">Dimension Binding</td>
<td id="_6fc1abdc-3242-fd74-544b-fabc1daa2eea" valign="middle" align="left"><tt>_ARRAY_DIMENSIONS</tt> attribute</td>
<td id="_3291ebc7-d91b-79ac-54a8-f450220d603e" valign="middle" align="left"><tt>dimension_names</tt> field</td>
</tr><tr id="_4a2b073d-2d1d-a141-90dd-e5bd9159d802"><td id="_c9841ab0-28da-6f49-2b8f-63a1f826277e" valign="middle" align="left">Metadata</td>
<td id="_5daeabc7-e256-d744-2e7a-0c3f3e269881" valign="middle" align="left">Attributes such as <tt>standard_name</tt>, <tt>units</tt>, <tt>long_name</tt>, <tt>_FillValue</tt>, <tt>scale_factor</tt>, <tt>add_offset</tt></td>
<td id="_be65038d-a1cf-c1c6-70f8-983bc204dab5" valign="middle" align="left">Same, with typed attributes permitted in v3</td>
</tr></tbody>
</table>

<p id="_315bddc7-02c6-240a-b822-67f40dc4e701">Example:</p>

<sourcecode id="_fed736e1-d0e4-590f-9fee-6bddbe65cf54" lang="json"><body>{
  "zarr_format": 3,
  "node_type": "array",
  "shape": [12, 180, 360],
  "dimension_names": ["time", "lat", "lon"],
  "attributes": {
    "standard_name": "air_temperature",
    "units": "K",
    "long_name": "Surface air temperature",
    "_FillValue": -9999.0
  }
}</body></sourcecode>

</clause>

<clause id="_fbef39ab-88e9-6be6-cb05-8d23a0cc756b" obligation="normative">
<title id="_bd5f42f3-ffbf-53a2-1a95-8e7be51a006d">Global and Group Metadata</title>
<p id="_dd9ff000-05fc-23c8-b4d5-bf28cc816ff4">Metadata applying to the entire hierarchy or subgroup is stored at the group level.</p>

<table id="_5a652c5a-0bf6-318e-2a9a-636791421cd4"><colgroup><col width="20%"/><col width="40%"/><col width="40%"/></colgroup><thead><tr id="_1707eff0-105f-76c8-4d77-5158213c0c6c"><th id="_8c9c1740-537c-6502-9acf-85384b0df265" valign="middle" align="left">Aspect</th>
<th id="_683efa93-5195-2354-1005-7dd81cb0f541" valign="middle" align="left">Zarr v2</th>
<th id="_eb8d3a39-31fb-2cb7-2e83-a3a66b793d4c" valign="middle" align="left">Zarr v3</th>
</tr></thead>
<tbody><tr id="_a0f82f96-3c4b-2e8f-ed56-2793316531f1"><td id="_c2aa0c8a-3b4e-ad11-0fbf-3d63e6d91ad0" valign="middle" align="left">Location</td>
<td id="_aab625bb-5b51-4636-e005-33645bce00b3" valign="middle" align="left"><tt>.zattrs</tt> in root group</td>
<td id="_81eee5c9-bb18-d082-59e6-28e5c55e61b9" valign="middle" align="left"><tt>attributes</tt> field in root <tt>zarr.json</tt></td>
</tr><tr id="_4fd6d388-8811-66b1-33d3-88cefd303cd4"><td id="_6b39b599-e599-20a2-d1f7-cd7c05d335c9" valign="middle" align="left">Identification</td>
<td id="_d77a46ff-4f4a-2967-c528-9636d39bed11" valign="middle" align="left"><tt>.zgroup</tt> file</td>
<td id="_be15b4cb-c7a6-6102-d2ed-436a174593e3" valign="middle" align="left"><tt>"node_type": "group"</tt></td>
</tr><tr id="_f9b927c7-3410-f26b-eac4-4fc2b4194a65"><td id="_dbc5d58e-4ad8-57c1-ebec-37b6f6fc6847" valign="middle" align="left">Conventions</td>
<td id="_713a52e3-8c12-47c8-39cf-961ee5612b56" valign="middle" align="left"><tt>Conventions</tt> attribute (e.g., <tt>CF-1.10</tt>)</td>
<td id="_ff3ef00f-e758-34f8-4999-ff01c798d226" valign="middle" align="left">Same under <tt>attributes</tt></td>
</tr></tbody>
</table>

<p id="_fb144751-cc62-a4bb-8146-66bf25d9940f">Example:</p>

<sourcecode id="_02a5e3ca-2d3a-f471-2c12-32e93d831650" lang="json"><body>{
  "zarr_format": 3,
  "node_type": "group",
  "attributes": {
    "title": "Example Dataset",
    "summary": "Multidimensional Earth Observation data",
    "institution": "Example Space Agency",
    "Conventions": "CF-1.10"
  }
}</body></sourcecode>

</clause>

<clause id="_818e0843-770c-047a-83af-16dc449196fe" obligation="normative">
<title id="_2bfa3d6c-ec7b-4837-73b3-130168eb2dd3">Variable and Attribute Metadata</title>
<p id="_91f8d61b-18c8-6e32-1ea4-2bb2115f26ad">All metadata attributes for groups, coordinate variables, and data variables should follow established community naming and typing conventions. GeoZarr encourages CF-compliant naming where applicable but does not require it.</p>

<p id="_8e24812e-e084-026f-732a-8ffde95871ee">Attributes shall: - use UTF-8–encoded names; - have JSON-compatible values (string, number, boolean, or array); - remain consistent across group hierarchies.</p>

<p id="_c89b56ee-b305-491d-6664-cbc490065ef8">Typical attributes include:</p>

<ul id="_db5dda00-f702-5d57-4907-167818c1e65b"><li><p id="_9a6bdc4b-1874-84f2-e6d3-61787a14c686">CF: <tt>standard_name</tt>, <tt>units</tt>, <tt>axis</tt>, <tt>grid_mapping</tt></p>
</li>
<li><p id="_e8518b48-3720-28c6-60d4-4a428414e301">Generic: <tt>_FillValue</tt>, <tt>scale_factor</tt>, <tt>add_offset</tt>, <tt>long_name</tt>, <tt>missing_value</tt></p>
</li>
<li><p id="_b9854402-9b2e-686e-2ce0-48827d42cec5">GDAL-compatible: <tt>spatial_ref</tt>, <tt>GeoTransform</tt>, <tt>AREA_OR_POINT</tt></p>
</li>
</ul>

<p id="_b432e28e-4317-5acf-a05f-7207fc0bbb13">Structured metadata values, such as JSON or XML content, may be included directly as objects rather than as serialised text. Implementations are encouraged to <strong>store such metadata in deserialised form</strong> (as native JSON objects) whenever possible, ensuring that attributes remain machine-readable and conform to JSON type rules.</p>

<p id="_5fd8371e-277b-4eb7-e457-34f1ab4b3c2d">If serialised representations (e.g., XML strings or JSON text blocks) are used, they shall be valid UTF-8 strings and clearly identified by attribute naming or context.</p>
</clause>

<clause id="_3c4e7e8b-c0c5-02e6-da79-7b44c26ba680" obligation="normative">
<title id="_a0498835-9a7e-8d7b-d802-25dd603eaf42">CDM Encoding Notes and Special Cases</title>
<ul id="_ac94a529-0026-ada6-2ba0-0fcc64dafe24"><li><p id="_b148cc9c-2b18-60ee-ca87-b1bc00767291"><strong>Shared Dimensions</strong> – To emulate the CDM concept of shared dimensions, GeoZarr requires that identical dimension names across arrays refer to the same logical axis. Libraries implementing GeoZarr should preserve this relationship explicitly in their in-memory representations.</p>
</li>
<li><p id="_230e11c6-9f4d-52eb-e1fd-051014ed884e"><strong>Unlimited Dimensions</strong> – Zarr’s chunked structure inherently supports extensible dimensions. A dimension can be declared unlimited by allowing its corresponding array dimension to grow dynamically (e.g., time). The use of  <tt>"resizeable": true</tt> (Zarr v3) or dynamic chunk append operations is recommended.</p>
</li>
<li><p id="_1d5fc35b-e952-191a-4dba-93110304ac9e"><strong>Nested Groups and Subgroups</strong> – Zarr v3 groups may nest recursively. Each subgroup represents a CDM group and may hold its own variables and attributes. This structure supports logical organisation such as multiple collections, products, or resolution levels.</p>
</li>
</ul>
</clause>

<clause id="_163b3cee-2dfd-955a-5e47-283ccb7a6c0c" obligation="normative">
<title id="_6d101cfa-7a16-aff3-96ad-8dd8df817643">Metadata Integration for CF, GDAL, and GeoTIFF</title>
<p id="_723c7e24-10b6-b16b-2ffe-099aadba6e39">While the GeoZarr Data Model provides the structure for metadata storage, <strong>GeoZarr does not redefine how CF, GDAL, or GeoTIFF metadata are mapped into this structure</strong>. These mappings are well established in community libraries (e.g.,  <strong>xarray</strong>, <strong>netCDF-Java</strong>, <strong>GDAL</strong>).</p>

<p id="_6f161a34-2a62-5aa3-85d0-feea69ef550e">GeoZarr encoding rules therefore only specify <strong>when a specific Zarr encoding requirement applies</strong>, such as:</p>

<ul id="_11902157-f608-27f6-4959-bfbf55986d65"><li><p id="_51b87f35-52f7-4d7c-6713-a62ddb6dea94">use of <tt>attributes</tt> fields in <tt>zarr.json</tt> for CF or GDAL metadata;</p>
</li>
<li><p id="_a8203ba5-22dc-59f5-ab7f-de5bbbebbd71">preservation of key metadata names (<tt>grid_mapping</tt>, <tt>spatial_ref</tt>, <tt>GeoTransform</tt>);</p>
</li>
<li><p id="_a7de5cae-55b0-d667-97a9-1f82990d4dff">ensuring metadata values remain valid JSON types.</p>
</li>
</ul>

<p id="_0b251807-50c4-9fda-518b-40e1f4317592">Implementations may rely on existing libraries to populate or interpret such metadata consistently.</p>
</clause>
</clause>

<clause id="_238eaede-680f-b063-6661-7f5b6e554ba0" obligation="normative">
<title id="_82856d99-a4ac-4064-6d51-6e10ee7752dd">Encoding of Multiscale Overviews in Zarr</title>
<p id="_3674b5ee-eecf-4b8a-253c-008123760056">This clause specifies how multiscale tiling (also known as overviews or pyramids) is encoded in Zarr hierarchies conforming to the Unified Data Model. The encoding supports both Zarr Version 2 and Version 3 and is aligned with the OGC Two Dimensional Tile Matrix Set Standard.</p>

<p id="_5f411bbe-d9c4-57f1-5fd7-13006de84678">A <xref target="term-multiscale-group"><display-text>multiscale group</display-text></xref> contains one or more child groups, where each child group is a <xref target="term-dataset"><display-text>dataset</display-text></xref> representing a zoom level of the data. Additional resolution levels can be added over time, with each new level storing a coarser-resolution resampled version of the original data variables.</p>

<clause id="_cac79d5b-7ef4-7385-fb58-190b3f8993a7" obligation="normative">
<title id="_ec26da6e-e8ca-40b7-9f6b-644537d9166f">Hierarchical Layout</title>
<p id="_8450d300-b963-e5d3-2a12-780dad610abf">Each zoom level SHALL be represented as a child group, identified by the Tile Matrix identifier (e.g., <tt>"0"</tt>, <tt>"1"</tt>, <tt>"2"</tt>). These child groups SHALL be organized hierarchically under a common multiscale group and each SHALL be a <xref target="term-dataset"><display-text>dataset</display-text></xref> containing the complete set of variables (arrays) corresponding to that resolution. All zoom-level datasets MUST maintain consistent structure.</p>

<table id="_ea85bd74-dec1-ba6e-5346-736b1a32e870"><colgroup><col width="20%"/><col width="40%"/><col width="40%"/></colgroup><thead><tr id="_5e235dc0-a603-7fcf-e11e-f470f1fb3433"><th id="_b9252dce-0593-7e63-9e5d-683ecc358662" valign="middle" align="left">Structure</th>
<th id="_c0bff4a1-9dc5-a28f-cb35-f8a2b9becdd8" valign="middle" align="left">Zarr v2</th>
<th id="_c071d6da-c9bb-183b-8331-6a8101fdc25c" valign="middle" align="left">Zarr v3</th>
</tr></thead>
<tbody><tr id="_758eccdf-90f2-0af3-cad2-b4ba7092355f"><td id="_e813dabb-ef9c-4bad-a15e-756e47ddd7a4" valign="middle" align="left">Zoom level datasets</td>
<td id="_2091b14c-f2db-f830-67dd-c45935a96440" valign="middle" align="left">Subdirectories with <tt>.zgroup</tt> and <tt>.zattrs</tt></td>
<td id="_d65aec64-5127-5336-4e81-ee8bb3efcf92" valign="middle" align="left">Subdirectories with <tt>zarr.json</tt>, <tt>node_type: group</tt></td>
</tr><tr id="_98421832-eacd-24e8-013a-7e8403498e6f"><td id="_1cae30b1-b6d9-a0cd-158c-2f3c83af8877" valign="middle" align="left">Variables at each level</td>
<td id="_9e2b0bc4-21ec-36f1-13e0-fe40461be73e" valign="middle" align="left">Arrays (<tt>.zarray</tt>, <tt>.zattrs</tt>) in each dataset</td>
<td id="_183a6412-2433-632f-de9a-5aa3b40ed454" valign="middle" align="left">Arrays (<tt>zarr.json</tt>, <tt>node_type: array</tt>) in each dataset</td>
</tr><tr id="_19fcfbbd-baab-c2c6-ca2d-dbeceb1ff505"><td id="_0d47511f-9332-2c2c-6195-9bfcc8fe899f" valign="middle" align="left">Multiscale metadata</td>
<td id="_4e5edfe0-5f48-c732-8cdf-b0e56cc467e6" valign="middle" align="left"><tt>multiscales</tt> defined in multiscale group <tt>.zattrs</tt></td>
<td id="_2f5ecaaa-07ae-c348-e8e5-390ce48f6774" valign="middle" align="left"><tt>multiscales</tt> defined in multiscale group <tt>zarr.json</tt> under <tt>attributes</tt></td>
</tr></tbody>
</table>

<p id="_bbe3da80-6b04-8698-5ef7-df20aab95ac8">Each zoom-level dataset MUST define chunking (tiling) along the spatial dimensions (<tt>X</tt>, <tt>Y</tt>, or <tt>lon</tt>, <tt>lat</tt>). Recommended chunk sizes are 256×256 or 512×512.</p>
</clause>

<clause id="_720d354a-b93e-d66f-4e1e-6042e3f701c4" obligation="normative">
<title id="_7857e892-9d09-4b1b-1850-898fd4769792">Metadata Encoding</title>
<p id="_657ff276-498c-07cd-455e-a9add404c522">Multiscale metadata SHALL be defined using a <tt>multiscales</tt> attribute located in the multiscale group. This attribute SHALL be a JSON object with the following members:</p>

<ul id="_9249fe64-1397-49e8-8ff4-5115d841a684"><li><p id="_c74f02bc-3ecd-4da4-b1f3-e54f63445aaa"><tt>tile_matrix_set</tt> – Identifier, URI, or inline JSON object compliant with OGC TileMatrixSet v2</p>
</li>
<li><p id="_948a3841-bf79-778e-1812-4597d60ed339"><tt>resampling_method</tt> – One of the standard string values (e.g., <tt>"nearest"</tt>, <tt>"average"</tt>)</p>
</li>
<li><p id="_1fd11434-4037-4628-2e46-083843185c0f"><tt>tile_matrix_set_limits</tt> – (optional) Zoom-level limits following the STAC Tiled Asset style</p>
</li>
</ul>

<clause id="_84872925-d7cc-4caa-cd07-4c0e3906411c" obligation="normative">
<title id="_57b9b954-7c36-c221-2f43-b0bb47790a93">Zarr v2 Encoding Example (<tt>.zattrs</tt>)</title>
<sourcecode id="_26d460b2-2c03-918f-841f-1314c6690cc8" lang="json"><body>{
  "multiscales": {
    "tile_matrix_set": "WebMercatorQuad",
    "resampling_method": "nearest"
  }
}</body></sourcecode>

</clause>

<clause id="_1bafa26b-212f-d9d4-036e-22c76d4358b4" obligation="normative">
<title id="_9cb9e28a-2d1e-47e3-db98-affe544c235c">Zarr v3 Encoding Example (<tt>zarr.json</tt>)</title>
<sourcecode id="_86269534-9deb-6639-28b6-ea5bdba11c38" lang="json"><body>{
  "zarr_format": 3,
  "node_type": "group",
  "attributes": {
    "multiscales": {
      "tile_matrix_set": "WebMercatorQuad",
      "resampling_method": "nearest"
    }
  }
}</body></sourcecode>

</clause>
</clause>

<clause id="_f7d2bfc5-06ef-f0ff-0655-6ce9f69f0202" obligation="normative">
<title id="_3378f409-a06f-f9ca-d649-4de112d1976b">Tile Matrix Set Representation</title>
<p id="_6e63cefb-fe82-f406-ff8e-51bb61f6e866">The <tt>tile_matrix_set</tt> member MAY take one of the following forms:</p>

<ul id="_4dd4c57c-dc7a-8b8a-a669-25e2bfdec261"><li><p id="_8deb54cd-5c6a-72f8-9216-47b17e2c716e">A string referring to a well-known identifier (e.g., <tt>"WebMercatorQuad"</tt>)</p>
</li>
<li><p id="_a55073b9-0924-4502-4c1b-d058164dcdbb">A URI pointing to a JSON document describing the tile matrix set</p>
</li>
<li><p id="_9f778bac-361a-bf67-55be-43117541f7ca">An inline JSON object (CamelCase, OGC TMS 2.0 compatible)</p>
</li>
</ul>

<p id="_b1778fff-7601-61d3-8b7d-ec52a5de4943">Zoom level identifiers in the tile matrix set MUST match the names of the child groups. The spatial reference system declared in <tt>supportedCRS</tt> MUST match the one declared in the corresponding <tt>grid_mapping</tt> of the data variables.</p>
</clause>

<clause id="_b4902249-7416-05b5-a409-f4feb7756310" obligation="normative">
<title id="_1ea01c97-309b-c6c9-ee1f-ed2c644cf285">Chunk Layout Alignment</title>
<p id="_a3c96e85-b67b-eaa8-c03b-11d21a3103d3">At each zoom level, chunking SHALL match the tile layout defined by the TileMatrix:</p>

<ul id="_dce8035d-7037-7083-018c-0de9c99d112c"><li><p id="_f0c7e649-fabc-3f63-0ee3-9937495d744b">Chunks MUST be aligned with the tile grid (1:1 mapping between chunks and tiles)</p>
</li>
<li><p id="_966edeea-70d3-0cc7-28c4-efece8e3f85e">Chunk sizes MUST match the <tt>tileWidth</tt> and <tt>tileHeight</tt> declared in the TileMatrix</p>
</li>
<li><p id="_8df3850d-767e-3ee2-1b7e-3a3c34062228">Spatial dimensions MUST be clearly identified using <tt>dimension_names</tt> (v3) or <tt>_ARRAY_DIMENSIONS</tt> (v2)</p>
</li>
</ul>
</clause>

<clause id="_44ce6567-134b-cad0-0815-ffe09f8b3869" obligation="normative">
<title id="_a4aa80b8-50d6-ae67-d00f-892ff90fa65f">Tile Matrix Set Limits</title>
<p id="_d74899ac-42ee-74ba-be79-16032526ce1d">The <tt>tile_matrix_set_limits</tt> object MAY define the extent of actual data coverage for each zoom level. This follows the style of the STAC tiled-assets extension rather than the full OGC JSON encoding.</p>

<p id="_19570a2f-e00a-bab0-a049-8443cdcdde4b">Example:</p>

<sourcecode id="_cd85f0b9-510a-e967-23cd-b7919303f172" lang="json"><body>"tile_matrix_set_limits": {
  "1": {
    "min_tile_col": 0,
    "max_tile_col": 1,
    "min_tile_row": 0,
    "max_tile_row": 1
  }
}</body></sourcecode>

</clause>

<clause id="_112c27ba-42e3-4d72-5663-6ded36a8ec77" obligation="normative">
<title id="_6b90a112-5625-d0f0-04fa-6deb907b2929">Resampling Method</title>
<p id="_e245ed92-050a-c0c2-86d4-60aa13880d2b">The <tt>resampling_method</tt> MUST indicate the method used for downsampling across zoom levels. The value MUST be one of:</p>

<p id="_394bf8d0-5526-b1fd-a3a6-51421202a285"><tt>nearest</tt>, <tt>average</tt>, <tt>bilinear</tt>, <tt>cubic</tt>, <tt>cubic_spline</tt>, <tt>lanczos</tt>, <tt>mode</tt>, <tt>max</tt>, <tt>min</tt>, <tt>med</tt>, <tt>sum</tt>, <tt>q1</tt>, <tt>q3</tt>, <tt>rms</tt>, <tt>gauss</tt></p>

<p id="_4d782810-59e6-b32f-5210-2c48e5fdc7a7">The same method MUST apply across all levels.</p>
</clause>
</clause>
</clause>
</sections><bibliography><references id="_bcb73788-5a33-e2fc-7e02-d9dcd23af261" normative="true" obligation="informative">
<title id="_461cd77a-5cfe-f57e-70ab-04e5c4142c2b">Normative references</title><p id="_02b1c060-f2f9-4bc4-035d-e49887f749e3">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>





<bibitem anchor="ZarrV2" id="_5f9485da-5313-c230-91c3-c4a9b79c51a9"><formattedref format="application/x-isodoc+xml">Miles, A., et al.: <em>Zarr Specification Version 2</em>. Zarr Developers. <link target="https://zarr.readthedocs.io/en/stable/spec/v2.html"/></formattedref><docidentifier>Zarr Specification v2</docidentifier><docnumber>2</docnumber><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="ZarrV3" id="_daaf31a2-e5a2-8ab2-72e3-3ad6c89cfa32"><formattedref format="application/x-isodoc+xml">Zarr Community: <em>Zarr Specification Version 3</em>. <link target="https://zarr-specs.readthedocs.io/en/latest/v3.0"/></formattedref><docidentifier>Zarr Specification v3</docidentifier><docnumber>3</docnumber><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="CDM" id="_d031b5ce-a0d4-81ef-7552-09af93a5349d"><formattedref format="application/x-isodoc+xml">Unidata: <em>The Common Data Model</em>. <link target="https://docs.unidata.ucar.edu/netcdf-java/5.0/userguide/common_data_model_overview.html"/></formattedref><docidentifier>Unidata Common Data Model</docidentifier><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="NetCDFClassic" id="_fa18eb99-0a22-05e6-0fc9-3cb60ca17162"><formattedref format="application/x-isodoc+xml">Rew, R., Davis, G.: <em>NetCDF: An Interface for Scientific Data Access</em>. IEEE Computer Graphics and Applications, 10(4), 76–82 (1990). <link target="https://doi.org/10.1109/38.56302"/></formattedref><docidentifier>NetCDF Classic Format</docidentifier><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="CFConventions" id="_43647390-c021-66b1-badc-87727751e871"><formattedref format="application/x-isodoc+xml">CF Community: <em>Climate and Forecast (CF) Metadata Conventions, Version 1.10</em>. <link target="https://cfconventions.org/"/></formattedref><docidentifier>CF Metadata Conventions</docidentifier><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="GDAL" id="_1c05a212-ee1c-7f88-6b45-5521665c5ec9"><formattedref format="application/x-isodoc+xml">GDAL Developers: <em>GDAL/OGR Version 3.8 Documentation</em>. Open Source Geospatial Foundation. <link target="https://gdal.org"/></formattedref><docidentifier>GDAL – Geospatial Data Abstraction Library</docidentifier><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="OGCTMS" id="_0a29305a-b6d3-ba79-8b22-1e518ecb48a9"><formattedref format="application/x-isodoc+xml">Open Geospatial Consortium: <em>OGC Two Dimensional Tile Matrix Set and Tile Pyramid</em> (OGC 17-083r2). <link target="https://docs.ogc.org/is/17-083r2/17-083r2.html"/></formattedref><docidentifier type="OGC">OGC Two Dimensional Tile Matrix Set</docidentifier><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="STAC" id="_0f7f0ff4-d2e3-b845-7605-e32975494df7"><formattedref format="application/x-isodoc+xml">STAC Community: <em>STAC Specification v1.0.0</em>. <link target="https://stacspec.org/en/"/></formattedref><docidentifier>SpatioTemporal Asset Catalog (STAC) Specification</docidentifier><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="OGCCTPP" id="_dc676e25-319f-022f-c8c3-f9b3bcc420b9"><formattedref format="application/x-isodoc+xml">Open Geospatial Consortium: <em>OGC Compliance Testing Policies and Procedures</em>, OGC 08-134r10. <link target="https://portal.ogc.org/files/?artifact_id=55184"/></formattedref><docidentifier type="OGC">OGC Compliance Testing Policies and Procedures</docidentifier><language>en</language><script>Latn</script></bibitem>
</references></bibliography>
</metanorma>
