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.1.tar.gz (26.4 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.1-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: geozarr_toolkit-0.1.1.tar.gz
  • Upload date:
  • Size: 26.4 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.1.tar.gz
Algorithm Hash digest
SHA256 21930688412db2da0520bf938cfa7d1b7605c19817e8894ea572f2d22f9918d2
MD5 2955ce042c24f1b4b3e5179e8ad739c2
BLAKE2b-256 d1ecb31918ed1f068f2bc2084a50d122fa41c097f37cbcc80409f58024332c80

See more details on using hashes here.

Provenance

The following attestation bundles were made for geozarr_toolkit-0.1.1.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.1-py3-none-any.whl.

File metadata

File hashes

Hashes for geozarr_toolkit-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2504274b654ddf338973d55f9ad8efcd90a29768c1b810190060e59c02fa9d51
MD5 ea618200e6ffa5b76520ec845a3a509e
BLAKE2b-256 37e07ea1a65f38e5d000f1bab62db3cb9522f57729188769a89925ce15ad5881

See more details on using hashes here.

Provenance

The following attestation bundles were made for geozarr_toolkit-0.1.1-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