Sitemap

Zarr: os cubos de dados modernos

4 min readSep 24, 2025

--

Antes de começar a trabalhar com dados de sensoriamento remoto, sempre ouvia sobre os cubos de dados.

Quando o INPE lançou o Brazilian Data Cube, fiquei maravilhado. Ao mesmo tempo que percebia que era algo grande e útil, não entendia muito bem como funcionava.

Afinal, o que são os tais cubos de dados? Também conhecidos como data cubes, ND-Arrays e Dados Multidimensionais.

Press enter or click to view image in full size
Source: EO4Society ESA

Cubos de dados são estruturas multi dimensionais capazes de organizar dados raster de maneira organizada em grids que representam o espaço e tempo.

Complicado?

Para simplificar: pensa que você quer criar uma série temporal para 2024, de uma determinada área com imagens mensais do Sentinel-2. No total, serão 12 imagens.

Cada imagem já tem duas dimensões. Neste caso, as coordenadas X e Y. Por enquanto, 2D não configura um cubo. A terceira dimensão é o tempo, o que transforma, então, nosso conjunto de dados de 2D para 3D.

A terceira dimensão não necessariamente precisa ser imagens ao longo do tempo. Pode ser temperatura, tamanho das ondas, velocidade do vento, entre muitas outras variáveis climáticas, físicas e astronômicas.

Geralmente, cubos de dados são fornecidos em NetCDF ou HDF5. Inclusive, é possível usar NetCDF em modelos de Machine Learning. O problema, porém, é que esses tipos de arquivos não são feitos para computação e armazenamento em nuvem. E, para suprir essa necessidade, é que surge o Zarr.

Claro que com o desenvolvimento de um novo formato de arquivo, várias coisas foram otimizadas e melhoradas, e não foi criado somente para maior compatibilidade com a nuvem.

Press enter or click to view image in full size
Source: XArray Intro To Zarr

Para explicar o Zarr de forma simples, imagine ele como um sistema de pastas e arquivos, mas feito para dados científicos. A estrutura dele é bem organizada, o que facilita muito o trabalho, principalmente na nuvem.

No topo, você tem a hierarquia do Zarr, que é a pasta principal. Dentro dela, existem os grupos, que são como subpastas para organizar temas diferentes. Por exemplo, você pode ter um grupo chamado “temperatura” e outro “precipitação”.

Get Rodrigo Brust’s stories in your inbox

Join Medium for free to get updates from this writer.

Dentro de cada grupo, ficam os arrays, que são os conjuntos de dados. Pense em uma tabela: o array de temperatura teria várias colunas, como dia, hora e valor. Cada uma dessas colunas seria uma dimensão do seu array.

O grande segredo do Zarr é como ele lida com o tamanho desses arrays com chunking. Isso nada mais é que dividir os dados em pedaços menores, chamados chunks. Esses chunks são o que o Zarr armazena como arquivos individuais. Ao invés de carregar um arquivo gigante com todos os dados de temperatura do ano, você só carrega o chunk referente a um dia específico que você precisa. Isso é o que torna o Zarr super rápido.

Para não se perder no meio de tantos arquivos, o Zarr usa as metadatas. As metadatas são como rótulos, um arquivo de texto que fica em cada grupo e array. Elas descrevem o que está lá dentro: o formato dos dados, as dimensões, como os chunks foram criados e outras informações importantes. É o guia que permite ao Zarr saber exatamente onde encontrar a informação que você precisa, sem precisar vasculhar tudo.

Como faço para abrir um arquivo Zarr?

Da mesma forma como você já faz com os NetCDFs. Com as bibliotecas XArray e Dash, no ambiente Python, e também com QGIS. Importante apontar que, caso seu arquivo tenha apenas dados de precipitação, por exemplo, o QGIS será capaz de carregá-lo, mas não mostrará nada no canvas. Todavia, é possível abrir com a tabela de atributos para uma inspeção rápida.

Podemos também manipular Zarr com a CLI do GDAL. Seja para converter de NetCDF para Zarr, ou verificar informações acerca do arquivo.

// Convertendo de netcdf para zarr com GDAL

gdalmdimtranslate in.nc out.zarr -co ARRAY:COMPRESS=GZIP

--

--