Skip to content

Commit 5427a3a

Browse files
authored
chore: Prepare for 0.5 release (#431)
* changelog for 0.5 * bump version to 0.5.0 * update changelog * bump 0.5 * fix link * add old/new material * wip blog * include changelog * include changelog * fix headings * improved sentinel example text * Add more screenshots * add sentinel images to readme * rename * wording
1 parent ead5cfc commit 5427a3a

25 files changed

Lines changed: 220 additions & 21 deletions

.release-please-manifest.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
".": "0.3.0",
3-
"packages/affine": "0.3.0",
4-
"packages/geotiff": "0.3.0",
5-
"packages/morecantile": "0.3.0"
2+
".": "0.5.0",
3+
"packages/affine": "0.5.0",
4+
"packages/geotiff": "0.5.0",
5+
"packages/morecantile": "0.5.0"
66
}

CHANGELOG.md

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,68 @@
11
# Changelog
22

3+
4+
## Unreleased
5+
6+
* feat: Create `@developmentseed/geozarr` package and define zod schema by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/395
7+
* feat: Create zarr-tileset as implementation of generic tile traversal by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/397
8+
* feat: Initial, most basic GeoZarr example by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/399
9+
* feat: Web Mercator axis-aligned cutline support by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/424
10+
11+
## v0.5.0 - 2026-05-16
12+
13+
### Breaking Changes
14+
15+
* refactor!: Generalize tile traversal interface by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/391 and refactor(deck.gl-raster)!: Finish generalizing tile traversal by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/394
16+
* This is only a breaking change if you were using the low-level tile traversal primitives exported by `@developmentseed/deck.gl-raster`. There were no breaking changes to the `COGLayer`.
17+
18+
### New Features
19+
20+
- New `MultiCOGLayer`:
21+
* feat: Initial work for `MultiCOGLayer`: cross-resolution tileset for sentinel/landsat by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/408
22+
* feat: Debug view for MultiCOGLayer by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/410
23+
* fix: Fix edge tile rendering in MultiCOGLayer by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/411
24+
* fix: Define `byteLength` on MultiCOG internal tile data by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/413
25+
* fix: Ensure we reset state when changing sources in MultiCOGLayer by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/414
26+
* fix: Filter out nodata pixels in Sentinel-2 example by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/415
27+
* feat: Pass any `TextureSource` to `MeshTextureLayer` by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/369
28+
* feat(geotiff): Support multi-tile fetching by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/406
29+
30+
### Fixes
31+
32+
* fix: Turn off lighting/`material` by default by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/423
33+
* fix: Remove alignment workarounds, bump to deck/luma 9.3 by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/419
34+
* fix: Move `lerc` to non-dev dependencies by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/367
35+
* fix: Fix black flash when panning by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/377
36+
37+
### Performance
38+
39+
* perf: Avoid unnecessary mesh recomputation by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/370
40+
* perf: Cache the result of bounding volume computation per RasterTileNode by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/371
41+
42+
### Other
43+
44+
* feat: Print tile xyz index in COG Layer debug mode by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/378
45+
* ci: pin GitHub Actions to SHA digests (fix zizmor unpinned-uses) by @lhoupert in https://github.com/developmentseed/deck.gl-raster/pull/390
46+
* refactor: move projection utils from `deck.gl-geotiff` to `proj` package by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/398
47+
* fix: Use `MapboxOverlayProps` instead of `DeckProps` in example to fix type check by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/400
48+
* chore: deduplicate tsconfigs in examples folder by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/426
49+
* ci: Ensure we typecheck examples by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/427
50+
* ci: Apply typechecking to source packages on CI by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/430
51+
* ci: deploy docs only on release tags by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/433
52+
* feat: Clean up sentinel-2 example by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/437
53+
* docs: Add link from example cards to code source by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/439
54+
* docs: Update screenshots in docs by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/440
55+
* docs: Update examples to link back to docs website by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/441
56+
57+
### New Contributors
58+
59+
* @lhoupert made their first contribution in https://github.com/developmentseed/deck.gl-raster/pull/390
60+
61+
**Full Changelog**: https://github.com/developmentseed/deck.gl-raster/compare/v0.4.0...v0.5.0
62+
363
## v0.4.0 - 2026-03-20
464

5-
## What's Changed
65+
### What's Changed
666

767
* feat: expose maxRequests on COGLayer by @maxrjones in https://github.com/developmentseed/deck.gl-raster/pull/333
868
* fix: Bump proj4 to fix web mercator projection by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/346
@@ -13,7 +73,8 @@
1373
* fix: Support TileLayer refinement strategies by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/354
1474
* feat: add ndvi filter slider to NAIP-mosaic example by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/357
1575

16-
## New Contributors
76+
### New Contributors
77+
1778
* @maxrjones made their first contribution in https://github.com/developmentseed/deck.gl-raster/pull/333
1879
* @aboydnw made their first contribution in https://github.com/developmentseed/deck.gl-raster/pull/348
1980

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,19 @@ Fully client-side with direct image loading, no server required.
1515

1616
<p align="center"><em><b>1.3GB</b> Land Cover COG rendered in the browser with <b>no server</b></em>: <a href="https://developmentseed.org/deck.gl-raster/examples/land-cover/">Live demo.</a></p>
1717

18+
[![](docs/static/img/sentinel-2-examples-card.jpg)][sentinel-2-example]
19+
Torres del Paine, Chile: Sentinel-2 Infrared False Color composite
20+
21+
[![](docs/static/img/sentinel-2-sossusvlei.jpg)][sentinel-2-example]
22+
Sossusvlei, Namibia: Sentinel-2 Agriculture composite
23+
24+
[![](docs/static/img/sentinel-2-kamchatka.jpg)][sentinel-2-example]
25+
Kamchatka, Russia: Sentinel-2 Vegetation composite
26+
27+
[![](docs/static/img/sentinel-2-mt-etna.jpg)][sentinel-2-example]
28+
Mt Etna, Italy: Sentinel-2 SWIR composite
29+
30+
[![](docs/static/img/sentinel-2-nile-delta.jpg)][sentinel-2-example]
31+
Nile Delta, Egypt: Sentinel-2 Agriculture composite
32+
33+
[sentinel-2-example]: https://developmentseed.org/deck.gl-raster/examples/sentinel-2/

docs/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
api/*
2+
guides/changelog.md
23

34
# Dependencies
45
/node_modules

docs/blog/multi-band-cog.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
slug: multi-band-cog
3+
title: Multi-band COG support
4+
authors:
5+
- kylebarron
6+
tags: [release]
7+
image: ../static/img/sentinel-2-examples-card.jpg
8+
---
9+
10+
deck.gl-raster now supports rendering multi-band [Cloud-Optimized GeoTIFFs][cogeo] (COGs), commonly found for satellite imagery data like Landsat or Sentinel-2.
11+
12+
[cogeo]: https://cogeo.org/
13+
14+
![](../static/img/sentinel-2-examples-card.jpg)
15+
16+
<!-- truncate -->
17+
18+
## Multi-band COG support
19+
20+
Many COGs are distributed as a collection of multiple inter-related files, where they all represent the same scene with the same spatial extent. For example, [Sentinel-2][s2-aws-bucket] or [Landsat](https://registry.opendata.aws/usgs-landsat/) images are distributed in this type of COG layout.
21+
22+
We have a new [`MultiCOGLayer`] to support rendering this type of COG source. This layer is intended to be used whenever multiple separate COG files represent **one single composite image**. If you want to render multiple image sources as a mosaic, use the [`MosaicLayer`].
23+
24+
[s2-aws-bucket]: https://registry.opendata.aws/sentinel-2-l2a-cogs/
25+
[`MultiCOGLayer`]: https://developmentseed.org/deck.gl-raster/api/deck-gl-geotiff/classes/MultiCOGLayer/
26+
[`MosaicLayer`]: https://developmentseed.org/deck.gl-raster/api/deck-gl-geotiff/classes/MosaicLayer/
27+
28+
The `MultiCOGLayer` abstracts many technical implementation details away from the end user. When the source has bands at different resolutions, it will automatically resample across mixed band resolutions — _all on the GPU_.
29+
30+
For example, consider rendering a Sentinel-2 vegetation composite with the near-infrared, short-wave infrared, and red bands. The short-wave band's finest pixel resolution is 20 meters while the other bands have a finest pixel resolution of 10 meters. The `MultiCOGLayer` will _automatically upsample_ the short-wave infrared band up to 10m so that the three can be rendered together at full resolution.
31+
32+
We have a [new example application][sentinel-2-example] to visualize various selected Sentinel-2 scenes, directly from the [Sentinel-2 AWS Open Data bucket][s2-aws-bucket]. Below are screenshots from this example application.
33+
34+
[![](../static/img/sentinel-2-examples-card.jpg)][sentinel-2-example]
35+
Torres del Paine, Chile: Infrared False Color composite
36+
37+
[![](../static/img/sentinel-2-sossusvlei.jpg)][sentinel-2-example]
38+
Sossusvlei, Namibia: Agriculture composite
39+
40+
[![](../static/img/sentinel-2-kamchatka.jpg)][sentinel-2-example]
41+
Kamchatka, Russia: Vegetation composite
42+
43+
[![](../static/img/sentinel-2-mt-etna.jpg)][sentinel-2-example]
44+
Mt Etna, Italy: SWIR composite
45+
46+
[![](../static/img/sentinel-2-nile-delta.jpg)][sentinel-2-example]
47+
Nile Delta, Egypt: Agriculture composite
48+
49+
[sentinel-2-example]: https://developmentseed.org/deck.gl-raster/examples/sentinel-2/
50+
51+
## Fix "muted" colors
52+
53+
Previously we had unintentionally been "muting" colors. This is now fixed to default to rendering input colors as-is without any additional post-processing.
54+
55+
| Before | After |
56+
| ------------------------------------------- | ------------------------------------------- |
57+
| ![](../static/img/material-default-old.jpg) | ![](../static/img/material-default-new.jpg) |
58+
59+
This was happening because deck.gl applied a default [`Material`](https://deck.gl/docs/developer-guide/using-effects#material-settings) to renderings. This is useful for 3D visualizations, but in our case it makes more sense to turn the material off by default.
60+
61+
## Support deck.gl v9.3
62+
63+
In order to support the recent [deck.gl v9.3 release](https://deck.gl/docs/whats-new#deckgl-v93), we removed some previous workarounds around WebGL texture byte alignment. See [#419](https://github.com/developmentseed/deck.gl-raster/pull/419) for more information.
64+
65+
## Internal refactors for future Zarr & GeoZarr support
66+
67+
Previously, the internal "tile traversal" code, which tells deck.gl where to render each tile loaded from an image source, was tied to Cloud-Optimized GeoTIFFs and the [Tile Matrix Set specification](https://www.ogc.org/standards/tms).
68+
69+
We performed some [internal](https://github.com/developmentseed/deck.gl-raster/pull/391) [refactors](https://github.com/developmentseed/deck.gl-raster/pull/394) to generalize this interface. We now have an initial functional prototype of [GeoZarr](https://geozarr.org/) rendering, which will be properly released soon.

docs/docusaurus.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ const crossPackageLinks: Record<string, Record<string, string>> = {
9090
COGLayer: `${BASE_DECK_GL_GEOTIFF}/classes/COGLayer/`,
9191
MosaicLayer: `${BASE_DECK_GL_GEOTIFF}/classes/MosaicLayer/`,
9292
MosaicTileset2D: `${BASE_DECK_GL_GEOTIFF}/classes/MosaicTileset2D/`,
93+
MultiCOGLayer: `${BASE_DECK_GL_GEOTIFF}/classes/MultiCOGLayer/`,
9394
},
9495
"@developmentseed/deck.gl-raster": {
9596
RasterLayer: `${BASE_DECK_GL_RASTER}/classes/RasterLayer/`,
@@ -104,7 +105,6 @@ const crossPackageLinks: Record<string, Record<string, string>> = {
104105
Decoder: `${BASE_GEOTIFF}/type-aliases/Decoder/`,
105106
DecoderMetadata: `${BASE_GEOTIFF}/type-aliases/DecoderMetadata/`,
106107
DecoderPoolOptions: `${BASE_GEOTIFF}/type-aliases/DecoderPoolOptions/`,
107-
ProjJson: `${BASE_GEOTIFF}/type-aliases/ProjJson/`,
108108
parseColormap: `${BASE_GEOTIFF}/functions/parseColormap/`,
109109
},
110110
"@developmentseed/morecantile": {
@@ -222,6 +222,7 @@ const config: Config = {
222222
...typedocPlugins,
223223
...contentDocsPlugins,
224224
"@cmfcmf/docusaurus-search-local",
225+
"./plugins/changelog.js",
225226
],
226227

227228
presets: [

docs/plugins/changelog.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const { readFileSync, writeFileSync } = require("node:fs");
2+
const { resolve } = require("node:path");
3+
4+
const FRONTMATTER = `\
5+
---
6+
sidebar_position: 100
7+
sidebar_label: Changelog
8+
slug: /changelog
9+
---
10+
11+
`;
12+
13+
/**
14+
* Docusaurus plugin that copies the root CHANGELOG.md into the guides
15+
* directory with Docusaurus frontmatter prepended. This keeps the changelog
16+
* on the docs site without requiring manual sync.
17+
*/
18+
module.exports = function changelogPlugin(_context, _options) {
19+
return {
20+
name: "changelog",
21+
async loadContent() {
22+
const src = resolve(__dirname, "../../CHANGELOG.md");
23+
const dest = resolve(__dirname, "../guides/changelog.md");
24+
const content = readFileSync(src, "utf-8");
25+
writeFileSync(dest, FRONTMATTER + content);
26+
},
27+
};
28+
};
468 KB
Loading
391 KB
Loading
616 KB
Loading

0 commit comments

Comments
 (0)