Skip to main content

GeoZarr convention models, validation, and creation utilities

Project description

geozarr-toolkit

Python library for creating and validating GeoZarr-compliant metadata. Provides Pydantic models, helper functions, and a CLI for the modular Zarr conventions:

  • spatial: -- Coordinate transforms between array indices and spatial coordinates
  • proj: -- Coordinate Reference System (CRS) via EPSG codes, WKT2, or PROJJSON
  • multiscales -- Pyramid structures and resolution levels

Installation

pip install "geozarr-toolkit"

Quick start

Create complete GeoZarr-compliant attributes in one call:

from geozarr_toolkit import create_geozarr_attrs

attrs = create_geozarr_attrs(
    dimensions=["Y", "X"],
    crs="EPSG:32633",
    transform=[10.0, 0.0, 500000.0, 0.0, -10.0, 5000000.0],
    bbox=[500000.0, 4900000.0, 600000.0, 5000000.0],
    shape=[10000, 10000],
)

Or build conventions individually:

from geozarr_toolkit import (
    create_spatial_attrs,
    create_proj_attrs,
    create_zarr_conventions,
    SpatialConventionMetadata,
    ProjConventionMetadata,
)

# Spatial convention
spatial_attrs = create_spatial_attrs(
    dimensions=["Y", "X"],
    transform=[10.0, 0.0, 500000.0, 0.0, -10.0, 5000000.0],
)

# Proj convention
proj_attrs = create_proj_attrs(code="EPSG:32633")

# Combine with zarr_conventions array
attrs = {**spatial_attrs, **proj_attrs}
attrs["zarr_conventions"] = create_zarr_conventions(
    SpatialConventionMetadata(),
    ProjConventionMetadata(),
)

Validation

Validate attributes or Zarr stores against conventions:

from geozarr_toolkit import validate_spatial, validate_proj, detect_conventions

# Validate individual conventions
is_valid, errors = validate_spatial({"spatial:dimensions": ["Y", "X"]})

# Auto-detect and validate all conventions in a dict
from geozarr_toolkit import validate_attrs
results = validate_attrs(attrs)

Working with existing data

Extract convention metadata from rioxarray or GDAL GeoTransforms:

from geozarr_toolkit import from_rioxarray, from_geotransform

# From rioxarray DataArray
attrs = from_rioxarray(da)

# From GDAL GeoTransform
attrs = from_geotransform(
    geotransform=(500000.0, 10.0, 0.0, 5000000.0, 0.0, -10.0),
    crs_wkt='PROJCS["UTM zone 33N"]',
    shape=(10000, 10000),
)

Pydantic models

Use the models directly for type-safe construction and validation:

from geozarr_toolkit import Spatial, Proj

spatial = Spatial(**{"spatial:dimensions": ["Y", "X"]})
proj = Proj(**{"proj:code": "EPSG:4326"})

# Serialize with convention-prefixed keys
attrs = spatial.model_dump(by_alias=True, exclude_none=True)

CLI

# Validate a Zarr store
geozarr validate data.zarr
geozarr validate data.zarr --conventions spatial proj

# Inspect a Zarr store
geozarr info data.zarr
geozarr info data.zarr --json

metazarr

metazarr/ is a client-side JavaScript library and web app for exploring Zarr store hierarchies and validating GeoZarr convention compliance. It runs entirely in the browser with no server required. Deployed at inspect.geozarr.org.

Features:

  • Opens remote Zarr v2 and v3 stores (consolidated metadata, directory crawling, or manual path entry)
  • Displays full array metadata: shape, dtype, chunks, fill value, codecs/compressor, dimension names, chunk key encoding, memory order, and computed statistics (uncompressed size, chunk count, chunk size)
  • Detects sharding (v3 sharding_indexed codec)
  • Auto-detects GeoZarr conventions (spatial:, proj:, multiscales, CF) via zarr_conventions or attribute prefixes
  • Validates nodes against convention JSON Schemas (Draft-07 and Draft 2020-12)
cd metazarr
npm install
npm run dev    # Start dev server at http://localhost:5173
npm test       # Run test suite

Also usable as an ES module:

import { openStore, buildTree, detectConventions, validateNode, buildNodeDocument } from "metazarr";

const result = await openStore("https://example.com/data.zarr");
const tree = buildTreeFromV3(result.v3Entries);
const conventions = detectConventions(tree.attrs);

Development

git clone https://github.com/zarr-developers/geozarr-toolkit.git
cd geozarr-toolkit
uv sync
uv run pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geozarr_toolkit-0.1.2.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geozarr_toolkit-0.1.2-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file geozarr_toolkit-0.1.2.tar.gz.

File metadata

  • Download URL: geozarr_toolkit-0.1.2.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for geozarr_toolkit-0.1.2.tar.gz
Algorithm Hash digest
SHA256 04b4196245210bfc854051729d0c3a92865bc47cf258f70227ae39a5ff40576b
MD5 49f600f3c82ff71ed912b5d922817a8e
BLAKE2b-256 9600eb0acfacf70c23c26ec84730234657279645be24de289de1a865fcad8a7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for geozarr_toolkit-0.1.2.tar.gz:

Publisher: release.yml on zarr-developers/geozarr-toolkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geozarr_toolkit-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for geozarr_toolkit-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6d4317b791da7fcb19fce9df345f8f9ee3a1a822eb3bb3aad448ec41b73b526e
MD5 073c527cb96cf9ceb7e14c60382b4839
BLAKE2b-256 6d2bfb54fdbad8041ca7ffa8332b29afd3697580c8884656540b7ab6a8c56096

See more details on using hashes here.

Provenance

The following attestation bundles were made for geozarr_toolkit-0.1.2-py3-none-any.whl:

Publisher: release.yml on zarr-developers/geozarr-toolkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page