Skip to content

Commit 112c16f

Browse files
authored
chore: prepare release 0.4 (#358)
* 0.4 release blog * changelog * support math in docs * add content * bump package version * updated wording * wording
1 parent c4137c5 commit 112c16f

20 files changed

Lines changed: 251 additions & 10 deletions

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
# Changelog
22

3+
## v0.4.0 - 2026-03-20
4+
5+
## What's Changed
6+
7+
* feat: expose maxRequests on COGLayer by @maxrjones in https://github.com/developmentseed/deck.gl-raster/pull/333
8+
* fix: Bump proj4 to fix web mercator projection by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/346
9+
* fix: fix setting default values for inherited props from TileLayer by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/347
10+
* fix: Render mesh from Web Mercator coordinates by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/349
11+
* fix: Clamp to Web Mercator latitude bounds by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/182
12+
* feat: create new `@developmentseed/proj` subpackage by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/356
13+
* fix: Support TileLayer refinement strategies by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/354
14+
* feat: add ndvi filter slider to NAIP-mosaic example by @kylebarron in https://github.com/developmentseed/deck.gl-raster/pull/357
15+
16+
## New Contributors
17+
* @maxrjones made their first contribution in https://github.com/developmentseed/deck.gl-raster/pull/333
18+
* @aboydnw made their first contribution in https://github.com/developmentseed/deck.gl-raster/pull/348
19+
20+
**Full Changelog**: https://github.com/developmentseed/deck.gl-raster/compare/v0.3.0...v0.4.0
21+
322
## v0.3.0 - 2026-03-18
423

524
### What's Changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
slug: v0-4-release
3+
title: deck.gl-raster v0.4
4+
authors:
5+
- kylebarron
6+
tags: [release]
7+
---
8+
9+
deck.gl-raster is enabling GPU-accelerated [GeoTIFF][geotiff] and [Cloud-Optimized GeoTIFF][cogeo] (COG) visualization in [deck.gl].
10+
11+
[geotiff]: https://en.wikipedia.org/wiki/GeoTIFF
12+
[cogeo]: https://cogeo.org/
13+
[deck.gl]: https://deck.gl/
14+
15+
Here's what's new in v0.4.
16+
17+
<!-- truncate -->
18+
19+
## Updated Example: NDVI filtering on demand
20+
21+
Our [NAIP Mosaic example](https://developmentseed.org/deck.gl-raster/examples/naip-mosaic/) visualizes the [National Agriculture Imagery Program dataset] from [Microsoft Planetary Computer].
22+
23+
Since NAIP data contains a near-infrared band in addition to true-color red, green, and blue, we can render spectral indexes like [Normalized Difference Vegetation Index (NDVI)][ndvi].
24+
25+
[National Agriculture Imagery Program dataset]: https://planetarycomputer.microsoft.com/dataset/naip
26+
[Microsoft Planetary Computer]: https://planetarycomputer.microsoft.com/
27+
[ndvi]: https://www.earthdata.nasa.gov/topics/land-surface/normalized-difference-vegetation-index-ndvi
28+
29+
NDVI has a pretty simple formula:
30+
31+
$$
32+
NDVI = \frac{NIR - Red}{NIR + Red}
33+
$$
34+
35+
Since we have the raw values of the near-infrared and red bands in the browser, we can compute NDVI _on the GPU_ and then apply a colormap to convert the single value to an RGB color palette.
36+
37+
We've updated the example to also enable _GPU-based filtering_. Drag the slider to control what values of NDVI are displayed. This updates extremely fast because it's all on the GPU.
38+
39+
[![](./../static/img/naip-ndvi-filter-animation.gif)](https://developmentseed.org/deck.gl-raster/examples/naip-mosaic/)
40+
41+
## Render coarser image data while loading finer data
42+
43+
Previously, when zooming in on a map, there would be a "blank" period: _after_ a parent, coarser image tile was no longer selected for display, but _before_ the child, finer image tile had successfully loaded over the network.
44+
45+
_Now_, we support the deck.gl [`refinementStrategy`] prop. This gives the user control for refining which tiles are visible while waiting for all tiles to load.
46+
47+
In this screenshot of the [NLCD Land Cover example](https://developmentseed.org/deck.gl-raster/examples/land-cover/), you can see the lower-resolution data is still rendered while waiting for the higher resolution data to load. (The red rectangular outlines are the boundaries of the COG tiles)
48+
49+
[`refinementStrategy`]: https://deck.gl/docs/api-reference/geo-layers/tile-layer#refinementstrategy
50+
51+
![](./../static/img/tile-refinement-strategy-best-available.gif)
52+
53+
## Fixed projection handling at high latitudes
54+
55+
Previously there could be an incorrect latitude adjustment at high/low latitudes, especially for images stored in EPSG:4326 projection.
56+
57+
| | |
58+
| ------ | -------------------------------------------------------- |
59+
| Before | ![](../static/img/web-mercator-high-latitude-before.jpg) |
60+
| After | ![](../static/img/web-mercator-high-latitude-after.jpg) |
61+
62+
> Image credit [Max Jones](https://github.com/maxrjones) in [#41 (comment)](https://github.com/developmentseed/deck.gl-raster/issues/41#issuecomment-4060870467).
63+
64+
## Avoided crash when rendering of images beyond $\pm 85.05\degree$ latitude
65+
66+
Previously, deck.gl-raster would crash if you tried to render images that extend past the valid Web Mercator latitude range of $\pm 85.05\degree$. It should now render correctly. (Though in the Web Mercator view, such images will be clamped to the valid latitude range.)
67+
68+
This is mostly useful when viewing global imagery in EPSG:4326 projection, such as this screenshot of the [RGB GeoTIFF example](https://developmentseed.org/deck.gl-raster/examples/cog-basic/), selecting the image sample from [EOxCloudless](https://cloudless.eox.at/).
69+
70+
![](../static/img/eox-cloudless-screenshot.jpg)

docs/docusaurus.config.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import type * as Preset from "@docusaurus/preset-classic";
22
import type { Config } from "@docusaurus/types";
33
import { themes as prismThemes } from "prism-react-renderer";
4+
import rehypeKatex from "rehype-katex";
5+
import remarkMath from "remark-math";
46

57
/**
68
* Each package that gets TypeDoc API generation + an independent versioned
@@ -186,6 +188,14 @@ const config: Config = {
186188

187189
trailingSlash: true,
188190

191+
stylesheets: [
192+
{
193+
href: "https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css",
194+
type: "text/css",
195+
crossorigin: "anonymous",
196+
},
197+
],
198+
189199
headTags: [
190200
{
191201
tagName: "script",
@@ -225,10 +235,14 @@ const config: Config = {
225235
sidebarPath: "./sidebars.ts",
226236
editUrl:
227237
"https://github.com/developmentseed/deck.gl-raster/tree/main/docs/",
238+
remarkPlugins: [remarkMath],
239+
rehypePlugins: [rehypeKatex],
228240
},
229241
blog: {
230242
showReadingTime: true,
231243
feedOptions: { type: ["rss", "atom"] },
244+
remarkPlugins: [remarkMath],
245+
rehypePlugins: [rehypeKatex],
232246
},
233247
theme: {
234248
customCss: "./src/css/custom.css",

docs/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
"prism-react-renderer": "^2.3.0",
2525
"react": "^19.0.0",
2626
"react-dom": "^19.0.0",
27+
"rehype-katex": "^7.0.1",
28+
"remark-math": "^6.0.0",
2729
"typedoc-plugin-mdn-links": "^5.1.1"
2830
},
2931
"devDependencies": {
1.17 MB
Loading
2.51 MB
Loading
2.66 MB
Loading
561 KB
Loading
518 KB
Loading

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "monorepo",
33
"private": true,
4-
"version": "0.3.0",
4+
"version": "0.4.0",
55
"description": "GPU-accelerated COG and Zarr visualization in deck.gl",
66
"scripts": {
77
"build": "pnpm --recursive --filter=!docs build",

0 commit comments

Comments
 (0)