rumi
01

The problem

GeoTIFF permits many layouts and records an offset and size for every tile.

GeoTIFF permits many storage layouts

Asterisk
GeoTIFF creation options permit many storage layouts.

Every tile needs an offset and a size

Asterisk
Per-file indexes grow to gigabytes across one million files.

Each codec is a separate integration

Asterisk
DEFLATE, Zstandard, and Brotli use separate codec integrations.
02

The approach

Fixed container. Direct frame access.

One container profile, two frame units

Asterisk
Rumi defines one container profile with tile and cell frame layouts.

The index is a prefix sum

Asterisk
Rumi stores packed frame sizes and derives offsets by prefix sum.

Gigabytes of index become megabytes

Asterisk
Rumi uses at most 288 bytes of index for 64 frames.

Compression is a graph, not a monolith

Asterisk
Each OpenZL frame stores the compression graph used to decode it.
03

Benchmark

One Sentinel-2 band, with ratio, write time, and read throughput measured together.

Benchmark I

Asterisk
Compression ratio, write time, and read throughput on one Sentinel-2 band.

Benchmark II

Asterisk
Measured compression results for JPEG2000, OpenZL, Zstandard, and DEFLATE.
reproduce every number on Google Colab
04

The data model

Rumi covers raster storage within the khipu data model.

Rumi is part of the khipu data model

Asterisk
Rumi stores Images and Cubes; Rumikuna groups them into collections.