Skip to content

Commit bd68af2

Browse files
authored
chore: Bump to 0.4.0 (#206)
1 parent 8042051 commit bd68af2

2 files changed

Lines changed: 67 additions & 19 deletions

File tree

CHANGELOG.md

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

3+
## 0.4.0 - 2026-05-18
4+
5+
### Breaking Changes
6+
7+
* refactor!: Refactor layers to take in Arrow `RecordBatch` input, not `Table` by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/148
8+
* **Important**: you must now iterate over the input RecordBatches of your `Table` object, passing in **one RecordBatch to each deck.gl-geoarrow layer**. This makes it explicit that one contiguous `RecordBatch` is associated to one physical deck.gl layer.
9+
* chore!: Rename NPM package from `@geoarrow/deck.gl-layers` to `@geoarrow/deck.gl-geoarrow` by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/191
10+
11+
### New features
12+
13+
* feat: Support passing in earcut worker pool to SolidPolygonLayer by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/151
14+
* Expose H3HexagonLayer publicly by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/160
15+
* feat: Add vectorized props from polygon layer to h3 hexagon layer by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/157
16+
* feat: Add a5 layer by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/162
17+
* fix: Ensure separate layer ids by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/163
18+
* fix: Define attributes object if not already defined by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/165
19+
* feat: Add simple wrappings of geohash and s2 layers by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/168
20+
* Freshen up `point` example by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/190
21+
* ci: Set up trusted publishing by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/173
22+
* Update README with build instructions for POINT example by @C-Loftus in https://github.com/geoarrow/deck.gl-geoarrow/pull/197
23+
24+
### Bug fixes
25+
26+
* fix scatterplot layer typing by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/154
27+
* ci: Don't publish npm package with beta string as latest tag by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/156
28+
* fix: H3HexagonLayer fixes by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/159
29+
* chore: Ensure earcut worker props are passed down from PolygonLayer by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/161
30+
31+
### Other
32+
33+
* ci: add Dependabot for GitHub Actions version updates by @lhoupert in https://github.com/geoarrow/deck.gl-geoarrow/pull/177
34+
* chore: Switch to pnpm by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/185
35+
* chore: Switch to biome for linting and formatting by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/186
36+
* chore: Update tsconfig by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/187
37+
* chore: Update build process to match deck.gl-raster by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/188
38+
* chore: Bump vitest and typescript versions by @kylebarron in https://github.com/geoarrow/deck.gl-geoarrow/pull/189
39+
40+
41+
### New Contributors
42+
43+
* @lhoupert made their first contribution in https://github.com/geoarrow/deck.gl-geoarrow/pull/177
44+
* @dependabot[bot] made their first contribution in https://github.com/geoarrow/deck.gl-geoarrow/pull/181
45+
* @C-Loftus made their first contribution in https://github.com/geoarrow/deck.gl-geoarrow/pull/197
46+
47+
**Full Changelog**: https://github.com/geoarrow/deck.gl-geoarrow/compare/v0.3.1...v0.4.0
48+
349
## [0.3.2] - 2026-04-15
450

551
- Deprecate the name `@geoarrow/deck.gl-layers` and prepare the package for renaming to `@geoarrow/deck.gl-geoarrow`.

README.md

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# @geoarrow/deck.gl-geoarrow
22

3-
> Note: this project is in the process of renaming from `@geoarrow/deck.gl-layers` to `@geoarrow/deck.gl-geoarrow`. It has not yet been published to NPM under `@geoarrow/deck.gl-geoarrow`.
4-
53
The easiest, most efficient way to render large geospatial datasets in [deck.gl](https://deck.gl), via [GeoArrow](https://geoarrow.org).
64

75
This is just a _glue library_ to deck.gl. It generates the same layer objects as upstream deck.gl does, but uses a [low-level binary interface](https://deck.gl/docs/developer-guide/performance#supply-attributes-directly) for best performance. Using the binary interface directly is really easy to mess up. Instead, the layer classes exposed by `@geoarrow/deck.gl-geoarrow` focus on making the process easy to use and validating user input, and under the hood pass buffers to deck.gl's binary interface.
@@ -12,9 +10,9 @@ This is just a _glue library_ to deck.gl. It generates the same layer objects as
1210

1311
## Features
1412

15-
- **Fast**: copies binary buffers directly from an [Arrow JS](https://www.npmjs.com/package/apache-arrow) [`Table`](https://arrow.apache.org/docs/js/classes/Arrow_dom.Table.html) object to the GPU using [deck.gl's binary data interface](https://deck.gl/docs/developer-guide/performance#supply-attributes-directly).
13+
- **Fast**: copies binary buffers directly from an [Arrow JS](https://www.npmjs.com/package/apache-arrow) [`RecordBatch`](https://arrow.apache.org/js/current/classes/Arrow.dom.Table.html#batches) object to the GPU using [deck.gl's binary data interface](https://deck.gl/docs/developer-guide/performance#supply-attributes-directly).
1614
- **Memory-efficient**: no intermediate data representation and no garbage-collector overhead.
17-
- **Full layer customization**: Use the same layer properties as in the upstream deck.gl layer documentation. Any _accessor_ (layer property prefixed with `get*`) can be passed an Arrow [`Vector`](https://arrow.apache.org/docs/js/classes/Arrow_dom.Vector.html).
15+
- **Full layer customization**: Use the same layer properties as in the upstream deck.gl layer documentation. Any _accessor_ (layer property prefixed with `get*`) can be passed an Arrow [`Data`](https://arrow.apache.org/js/current/classes/Arrow.dom.Data.html).
1816
- **Input validation**. Validation can be turned off via the `_validate` property on most layer types.
1917
- **Multi-threaded polygon triangulation**. When rendering polygon layers, a process called [polygon triangulation](https://en.wikipedia.org/wiki/Polygon_triangulation) must happen on the CPU before data can be copied to the GPU. Ordinarily, this can block the main thread for several seconds, but the `GeoArrowSolidPolygonLayer` will perform this process off the main thread, on up to 8 web workers.
2018
- **Progressive rendering support**. For streaming-capable data formats like Arrow IPC and Parquet, you can render a GeoArrow layer per chunk as the data loads.
@@ -33,20 +31,21 @@ With `@geoarrow/deck.gl-geoarrow` specifically, there are two ways to pass these
3331

3432
### Pre-computed Arrow columns
3533

36-
If you have an Arrow column ([`Vector`](https://arrow.apache.org/docs/js/classes/Arrow_dom.Vector.html) in Arrow JS terminology), you can pass that directly into a layer:
34+
If you have an Arrow array ([`Data`](https://arrow.apache.org/js/current/classes/Arrow.dom.Data.html) in Arrow JS terminology), you can pass that directly into a layer:
3735

3836
```ts
3937
import { Table } from "apache-arrow";
4038
import { GeoArrowScatterplotLayer } from "@geoarrow/deck.gl-geoarrow";
4139

4240
const table = new Table(...);
41+
const recordBatch = table.batches[0];
4342
const deckLayer = new GeoArrowScatterplotLayer({
4443
id: "scatterplot",
45-
data: table,
44+
data: recordBatch,
4645
/// Geometry column
47-
getPosition: table.getChild("geometry")!,
46+
getPosition: recordBatch.getChild("geometry")!,
4847
/// Column of type FixedSizeList[3] or FixedSizeList[4], with child type Uint8
49-
getFillColor: table.getChild("colors")!,
48+
getFillColor: recordBatch.getChild("colors")!,
5049
});
5150
```
5251

@@ -59,10 +58,9 @@ GeoArrow layers accept a callback that takes an object with `index` and `data`.
5958
```ts
6059
const deckLayer = new GeoArrowPathLayer({
6160
id: "geoarrow-path",
62-
data: table,
61+
data: recordBatch,
6362
getColor: ({ index, data, target }) => {
64-
const recordBatch = data.data;
65-
const row = recordBatch.get(index)!;
63+
const row = data.get(index)!;
6664
return COLORS_LOOKUP[row["scalerank"]];
6765
},
6866
}),
@@ -88,11 +86,12 @@ import { GeoArrowScatterplotLayer } from "@geoarrow/deck.gl-geoarrow";
8886
8987
const resp = await fetch("url/to/file.arrow");
9088
const jsTable = await tableFromIPC(resp);
89+
const recordBatch = jsTable.batches[0];
9190
const deckLayer = new GeoArrowScatterplotLayer({
9291
id: "scatterplot",
93-
data: jsTable,
92+
data: recordBatch,
9493
/// Replace with the correct geometry column name
95-
getPosition: jsTable.getChild("geometry")!,
94+
getPosition: recordBatch.getChild("geometry")!,
9695
});
9796
```
9897

@@ -111,11 +110,12 @@ const resp = await fetch("url/to/file.parquet");
111110
const arrayBuffer = await resp.arrayBuffer();
112111
const wasmTable = readParquet(new Uint8Array(arrayBuffer));
113112
const jsTable = tableFromIPC(wasmTable.intoIPCStream());
113+
const recordBatch = jsTable.batches[0];
114114
const deckLayer = new GeoArrowScatterplotLayer({
115115
id: "scatterplot",
116-
data: jsTable,
116+
data: recordBatch,
117117
/// Replace with the correct geometry column name
118-
getPosition: jsTable.getChild("geometry")!,
118+
getPosition: recordBatch.getChild("geometry")!,
119119
});
120120
```
121121

@@ -134,11 +134,12 @@ const resp = await fetch("url/to/file.parquet");
134134
const arrayBuffer = await resp.arrayBuffer();
135135
const wasmTable = readGeoParquet(new Uint8Array(arrayBuffer));
136136
const jsTable = tableFromIPC(wasmTable.intoTable().intoIPCStream());
137+
const recordBatch = jsTable.batches[0];
137138
const deckLayer = new GeoArrowScatterplotLayer({
138139
id: "scatterplot",
139-
data: jsTable,
140+
data: recordBatch,
140141
/// Replace with the correct geometry column name
141-
getPosition: jsTable.getChild("geometry")!,
142+
getPosition: recordBatch.getChild("geometry")!,
142143
});
143144
```
144145

@@ -157,11 +158,12 @@ const resp = await fetch("url/to/file.fgb");
157158
const arrayBuffer = await resp.arrayBuffer();
158159
const wasmTable = readFlatGeobuf(new Uint8Array(arrayBuffer));
159160
const jsTable = tableFromIPC(wasmTable.intoTable().intoIPCStream());
161+
const recordBatch = jsTable.batches[0];
160162
const deckLayer = new GeoArrowScatterplotLayer({
161163
id: "scatterplot",
162-
data: jsTable,
164+
data: recordBatch,
163165
/// Replace with the correct geometry column name
164-
getPosition: jsTable.getChild("geometry")!,
166+
getPosition: recordBatch.getChild("geometry")!,
165167
});
166168
```
167169

0 commit comments

Comments
 (0)