@developmentseed/deck.gl-raster 0.6.1 → 0.7.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import type { CompositeLayerProps, DefaultProps, Layer } from "@deck.gl/core";
2
2
  import { CompositeLayer } from "@deck.gl/core";
3
- import type { TileLayerProps, _TileLoadProps as TileLoadProps } from "@deck.gl/geo-layers";
3
+ import type { _Tile2DHeader as Tile2DHeader, TileLayerProps, _TileLoadProps as TileLoadProps } from "@deck.gl/geo-layers";
4
4
  import type { Device } from "@luma.gl/core";
5
5
  import type { RenderTileResult } from "../raster-layer.js";
6
6
  import type { TilesetDescriptor } from "../raster-tileset/index.js";
@@ -148,6 +148,22 @@ export declare class RasterTileLayer<DataT extends MinimalTileData = MinimalTile
148
148
  * any inferred default. Returns `undefined` when no callback is available.
149
149
  */
150
150
  protected _renderTileCallback(): RasterTileLayerProps<DataT>["renderTile"];
151
+ /**
152
+ * Hook for rendering per-tile debug overlay sub-layers.
153
+ *
154
+ * Called once per tile from `_renderSubLayers` only when `props.debug` is
155
+ * `true`. The hook fires both before data has arrived (`data` is `null`) and
156
+ * after (`data` is the fetched `DataT`), so the default outline can render
157
+ * during loading.
158
+ *
159
+ * Default behavior renders the primary tile boundary via
160
+ * {@link renderDebugTileOutline} using the active descriptor. Subclasses can
161
+ * override to replace, extend (via `super._renderDebug(...)`), or suppress
162
+ * the default — for example, a multi-source layer can replace the default
163
+ * with per-band tile outlines and tiered metadata labels once `data` is
164
+ * available.
165
+ */
166
+ protected _renderDebug(tile: Tile2DHeader<DataT>, _data: DataT | null): Layer[];
151
167
  renderLayers(): Layer | null;
152
168
  private _renderTileLayer;
153
169
  private _wrapGetTileData;
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tile-layer.d.ts","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,KAAK,EAEN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAEV,cAAc,EACd,cAAc,IAAI,aAAa,EAEhC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAKpE;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG;IACnC,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAC9B,KAAK,SAAS,eAAe,GAAG,eAAe,IAC7C,mBAAmB,GACrB,IAAI,CACF,cAAc,EACZ,UAAU,GACV,YAAY,GACZ,SAAS,GACT,SAAS,GACT,QAAQ,GACR,cAAc,GACd,cAAc,GACd,kBAAkB,GAClB,aAAa,GACb,oBAAoB,CACvB,GAAG;IACF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,gBAAgB,GAAG,IAAI,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AASJ;;;;;;;GAOG;AACH,KAAK,wBAAwB,CAAC,KAAK,SAAS,eAAe,IAAI,IAAI,CACjE,oBAAoB,CAAC,KAAK,CAAC,EAC3B,mBAAmB,GAAG,aAAa,GAAG,YAAY,CACnD,CAAC;AAEF;;;;GAIG;AACH,KAAK,gCAAgC,CAAC,KAAK,SAAS,eAAe,IAAI,IAAI,CACzE,oBAAoB,CAAC,KAAK,CAAC,EAC3B,mBAAmB,GAAG,aAAa,GAAG,YAAY,CACnD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe,CAC1B,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,UAAU,SAAS,MAAM,GAAG,gCAAgC,CAAC,KAAK,CAAC,CACnE,SAAQ,cAAc,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;IACpE,OAAgB,SAAS,SAAqB;IAC9C,OAAgB,YAAY,sDAAgB;IAE5C;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,kBAAkB,IAAI,iBAAiB,GAAG,SAAS;IAK7D;;;;;;OAMG;IACH,SAAS,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;IAI5E;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;IAIjE,YAAY,IAAI,KAAK,GAAG,IAAI;IAYrC,OAAO,CAAC,gBAAgB;YAwDV,gBAAgB;IAiB9B,OAAO,CAAC,gBAAgB;CAuFzB"}
1
+ {"version":3,"file":"raster-tile-layer.d.ts","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,31 @@ export class RasterTileLayer extends CompositeLayer {
62
62
  _renderTileCallback() {
63
63
  return this.props.renderTile;
64
64
  }
65
+ /**
66
+ * Hook for rendering per-tile debug overlay sub-layers.
67
+ *
68
+ * Called once per tile from `_renderSubLayers` only when `props.debug` is
69
+ * `true`. The hook fires both before data has arrived (`data` is `null`) and
70
+ * after (`data` is the fetched `DataT`), so the default outline can render
71
+ * during loading.
72
+ *
73
+ * Default behavior renders the primary tile boundary via
74
+ * {@link renderDebugTileOutline} using the active descriptor. Subclasses can
75
+ * override to replace, extend (via `super._renderDebug(...)`), or suppress
76
+ * the default — for example, a multi-source layer can replace the default
77
+ * with per-band tile outlines and tiered metadata labels once `data` is
78
+ * available.
79
+ */
80
+ _renderDebug(tile, _data) {
81
+ const descriptor = this._tilesetDescriptor();
82
+ if (!descriptor) {
83
+ return [];
84
+ }
85
+ // Tiles built by RasterTileset2D are augmented with TileMetadata
86
+ // (projectedBbox/Corners, tileWidth/Height) at construction time. The cast
87
+ // makes that runtime augmentation visible to the typed helper.
88
+ return renderDebugTileOutline(`${this.id}-${tile.id}-bounds`, tile, descriptor.projectTo4326);
89
+ }
65
90
  renderLayers() {
66
91
  const descriptor = this._tilesetDescriptor();
67
92
  const getTileData = this._getTileDataCallback();
@@ -72,9 +97,28 @@ export class RasterTileLayer extends CompositeLayer {
72
97
  return this._renderTileLayer(descriptor, getTileData, renderTile);
73
98
  }
74
99
  _renderTileLayer(descriptor, getTileData, renderTile) {
100
+ // Capture the device once so the inner `TilesetFactory` can read
101
+ // its current effective device-pixel ratio per `getTileIndices`
102
+ // call. The ratio is sampled lazily so window-drag-between-displays
103
+ // (or runtime changes to `useDevicePixels`) take effect on the next
104
+ // traversal. See dev-docs/lod-and-pixel-matching.md § (A).
105
+ //
106
+ // We compute drawingBuffer/CSS rather than using
107
+ // `cssToDeviceRatio()` (deprecated) or the `devicePixelRatio`
108
+ // property (always reflects the system value, ignoring
109
+ // `Deck.useDevicePixels`). The drawing-buffer ratio is the
110
+ // *effective* DPR Deck is rendering at.
111
+ const device = this.context.device;
75
112
  class TilesetFactory extends RasterTileset2D {
76
113
  constructor(opts) {
77
- super(opts, descriptor);
114
+ super(opts, descriptor, {
115
+ getPixelRatio: () => {
116
+ const ctx = device.getDefaultCanvasContext();
117
+ const [drawingBufferWidth] = ctx.getDrawingBufferSize();
118
+ const [cssWidth] = ctx.getCSSSize();
119
+ return cssWidth ? drawingBufferWidth / cssWidth : 1;
120
+ },
121
+ });
78
122
  }
79
123
  }
80
124
  const { tileSize, zoomOffset, maxZoom, minZoom, extent, debounceTime, maxCacheSize, maxCacheByteSize, maxRequests, refinementStrategy, updateTriggers, } = this.props;
@@ -113,22 +157,21 @@ export class RasterTileLayer extends CompositeLayer {
113
157
  _renderSubLayers(props, descriptor, renderTile) {
114
158
  const { maxError, debug, debugOpacity } = this.props;
115
159
  const tile = props.tile;
116
- const layers = [];
117
- if (debug) {
118
- layers.push(...renderDebugTileOutline(`${this.id}-${tile.id}-bounds`, tile, descriptor.projectTo4326));
119
- }
160
+ const debugLayers = debug
161
+ ? this._renderDebug(tile, props.data ?? null)
162
+ : [];
120
163
  if (!props.data) {
121
- return layers;
164
+ return debugLayers;
122
165
  }
123
166
  const { x, y, z } = tile.index;
124
167
  const level = descriptor.levels[z];
125
168
  if (!level) {
126
- return layers;
169
+ return debugLayers;
127
170
  }
128
171
  const { forwardTransform, inverseTransform } = level.tileTransform(x, y);
129
172
  const tileResult = renderTile(props.data);
130
173
  if (!tileResult) {
131
- return layers;
174
+ return debugLayers;
132
175
  }
133
176
  const { image, renderPipeline } = tileResult;
134
177
  const { width, height } = props.data;
@@ -173,7 +216,7 @@ export class RasterTileLayer extends CompositeLayer {
173
216
  debugOpacity,
174
217
  ...deckProjectionProps,
175
218
  }));
176
- return [rasterLayer, ...layers];
219
+ return [rasterLayer, ...debugLayers];
177
220
  }
178
221
  }
179
222
  //# sourceMappingURL=raster-tile-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tile-layer.js","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raster-tile-layer.js","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Affine } from "@developmentseed/affine";
2
2
  import type { TilesetLevel } from "./tileset-interface.js";
3
- import type { Bounds, Corners } from "./types.js";
3
+ import type { Bounds, Corners, ProjectionFunction } from "./types.js";
4
4
  /**
5
5
  * Constructor options for {@link AffineTilesetLevel}.
6
6
  */
@@ -43,8 +43,8 @@ export declare class AffineTilesetLevel implements TilesetLevel {
43
43
  constructor(options: AffineTilesetLevelOptions);
44
44
  projectedTileCorners(col: number, row: number): Corners;
45
45
  tileTransform(col: number, row: number): {
46
- forwardTransform: (x: number, y: number) => [number, number];
47
- inverseTransform: (x: number, y: number) => [number, number];
46
+ forwardTransform: ProjectionFunction;
47
+ inverseTransform: ProjectionFunction;
48
48
  };
49
49
  crsBoundsToTileRange(projectedMinX: number, projectedMinY: number, projectedMaxX: number, projectedMaxY: number): {
50
50
  minCol: number;
@@ -1 +1 @@
1
- {"version":3,"file":"affine-tileset-level.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/affine-tileset-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,yBAAyB;IA6B9C,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAavD,aAAa,CACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV;QACD,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC9D;IAaD,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAmCtE"}
1
+ {"version":3,"file":"affine-tileset-level.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/affine-tileset-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,yBAAyB;IA6B9C,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAavD,aAAa,CACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV;QACD,gBAAgB,EAAE,kBAAkB,CAAC;QACrC,gBAAgB,EAAE,kBAAkB,CAAC;KACtC;IAaD,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAmCtE"}
@@ -0,0 +1,62 @@
1
+ import type { OrientedBoundingBox } from "@math.gl/culling";
2
+ import type { Bounds, ZRange } from "./types.js";
3
+ /**
4
+ * A memoized tile bounding volume, tagged with the elevation range it was
5
+ * computed for (so a `zRange` change can invalidate it).
6
+ */
7
+ export interface BoundingVolumeCacheEntry {
8
+ zRange: ZRange;
9
+ boundingVolume: OrientedBoundingBox;
10
+ commonSpaceBounds: Bounds;
11
+ }
12
+ /**
13
+ * Options for {@link BoundingVolumeCache}.
14
+ */
15
+ export interface BoundingVolumeCacheOptions {
16
+ /**
17
+ * Soft cap on the number of cached tile bounding volumes. When a
18
+ * `getTileIndices` traversal begins and the cache holds more than this many
19
+ * entries, the least-recently-used entries are dropped down to roughly half.
20
+ * Eviction never runs mid-traversal (only via {@link BoundingVolumeCache.sweep}),
21
+ * so a single frame is never starved of an entry it computed earlier that
22
+ * same frame. `0` makes every traversal start from an empty cache.
23
+ *
24
+ * @default 65_536
25
+ */
26
+ maxEntries?: number;
27
+ }
28
+ /**
29
+ * An LRU cache of tile bounding volumes keyed by `"z/x/y"`.
30
+ *
31
+ * The raster tile traversal recomputes a tile's bounding volume (several proj4
32
+ * reprojections plus an oriented-bounding-box fit) only on a cache miss; on a
33
+ * hit it returns the stored volume. A tile's bounding volume depends only on
34
+ * `(z, x, y, zRange)` for a given tileset descriptor, so it is safe to memoize
35
+ * across `getTileIndices` calls (i.e. across animation frames).
36
+ *
37
+ * NOTE: this assumes a non-Globe traversal (`project === null`) — the only kind
38
+ * `RasterTileNode.getBoundingVolume` currently supports. If Globe-view bounding
39
+ * volumes are ever implemented, the cache key will need a viewport/resolution
40
+ * component.
41
+ */
42
+ export declare class BoundingVolumeCache {
43
+ private entries;
44
+ private maxEntries;
45
+ constructor({ maxEntries, }?: BoundingVolumeCacheOptions);
46
+ /** Number of cached entries. */
47
+ get size(): number;
48
+ /**
49
+ * Look up the cached bounding volume for tile `(z, x, y)`. On a hit the entry
50
+ * is marked most-recently-used. Returns `undefined` on a miss.
51
+ */
52
+ get(z: number, x: number, y: number): BoundingVolumeCacheEntry | undefined;
53
+ /** Store the bounding volume for tile `(z, x, y)` as most-recently-used. */
54
+ set(z: number, x: number, y: number, entry: BoundingVolumeCacheEntry): void;
55
+ /**
56
+ * If the cache is over its soft cap, drop least-recently-used entries down to
57
+ * roughly half of `maxEntries`. No-op when at or under the cap. Call once at
58
+ * the start of a traversal, never mid-traversal.
59
+ */
60
+ sweep(): void;
61
+ }
62
+ //# sourceMappingURL=bounding-volume-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounding-volume-cache.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/bounding-volume-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,mBAAmB,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,UAAU,CAAS;gBAEf,EACV,UAAgC,GACjC,GAAE,0BAA+B;IAIlC,gCAAgC;IAChC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAY1E,4EAA4E;IAC5E,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,GAAG,IAAI;IAM3E;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAiBd"}
@@ -0,0 +1,70 @@
1
+ const DEFAULT_MAX_ENTRIES = 65_536;
2
+ /**
3
+ * An LRU cache of tile bounding volumes keyed by `"z/x/y"`.
4
+ *
5
+ * The raster tile traversal recomputes a tile's bounding volume (several proj4
6
+ * reprojections plus an oriented-bounding-box fit) only on a cache miss; on a
7
+ * hit it returns the stored volume. A tile's bounding volume depends only on
8
+ * `(z, x, y, zRange)` for a given tileset descriptor, so it is safe to memoize
9
+ * across `getTileIndices` calls (i.e. across animation frames).
10
+ *
11
+ * NOTE: this assumes a non-Globe traversal (`project === null`) — the only kind
12
+ * `RasterTileNode.getBoundingVolume` currently supports. If Globe-view bounding
13
+ * volumes are ever implemented, the cache key will need a viewport/resolution
14
+ * component.
15
+ */
16
+ export class BoundingVolumeCache {
17
+ entries = new Map();
18
+ maxEntries;
19
+ constructor({ maxEntries = DEFAULT_MAX_ENTRIES, } = {}) {
20
+ this.maxEntries = Math.max(0, maxEntries);
21
+ }
22
+ /** Number of cached entries. */
23
+ get size() {
24
+ return this.entries.size;
25
+ }
26
+ /**
27
+ * Look up the cached bounding volume for tile `(z, x, y)`. On a hit the entry
28
+ * is marked most-recently-used. Returns `undefined` on a miss.
29
+ */
30
+ get(z, x, y) {
31
+ const key = `${z}/${x}/${y}`;
32
+ const entry = this.entries.get(key);
33
+ if (entry === undefined) {
34
+ return undefined;
35
+ }
36
+ // Re-insert to move the key to the most-recently-used end of the Map.
37
+ this.entries.delete(key);
38
+ this.entries.set(key, entry);
39
+ return entry;
40
+ }
41
+ /** Store the bounding volume for tile `(z, x, y)` as most-recently-used. */
42
+ set(z, x, y, entry) {
43
+ const key = `${z}/${x}/${y}`;
44
+ this.entries.delete(key);
45
+ this.entries.set(key, entry);
46
+ }
47
+ /**
48
+ * If the cache is over its soft cap, drop least-recently-used entries down to
49
+ * roughly half of `maxEntries`. No-op when at or under the cap. Call once at
50
+ * the start of a traversal, never mid-traversal.
51
+ */
52
+ sweep() {
53
+ if (this.entries.size <= this.maxEntries) {
54
+ return;
55
+ }
56
+ const target = Math.floor(this.maxEntries / 2);
57
+ const excess = this.entries.size - target;
58
+ const keysToDelete = [];
59
+ for (const key of this.entries.keys()) {
60
+ keysToDelete.push(key);
61
+ if (keysToDelete.length >= excess) {
62
+ break;
63
+ }
64
+ }
65
+ for (const key of keysToDelete) {
66
+ this.entries.delete(key);
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=bounding-volume-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounding-volume-cache.js","sourceRoot":"","sources":["../../src/raster-tileset/bounding-volume-cache.ts"],"names":[],"mappings":"AA+BA,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,mBAAmB;IACtB,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IACtD,UAAU,CAAS;IAE3B,YAAY,EACV,UAAU,GAAG,mBAAmB,MACF,EAAE;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,KAA+B;QAClE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;QAC1C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,YAAY,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBAClC,MAAM;YACR,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;CACF"}
@@ -19,6 +19,7 @@
19
19
  import type { Viewport } from "@deck.gl/core";
20
20
  import type { OrientedBoundingBox } from "@math.gl/culling";
21
21
  import { CullingVolume } from "@math.gl/culling";
22
+ import { BoundingVolumeCache } from "./bounding-volume-cache.js";
22
23
  import type { TilesetDescriptor, TilesetLevel } from "./tileset-interface.js";
23
24
  import type { Bounds, TileIndex, ZRange } from "./types.js";
24
25
  /**
@@ -55,12 +56,6 @@ export declare class RasterTileNode {
55
56
  private selected?;
56
57
  /** A cache of the children of this node. */
57
58
  private _children?;
58
- /**
59
- * A cached bounding volume for this tile, used for frustum culling
60
- *
61
- * This stores the result of `getBoundingVolume`.
62
- */
63
- private _boundingVolume?;
64
59
  constructor(x: number, y: number, z: number, { descriptor }: {
65
60
  descriptor: TilesetDescriptor;
66
61
  });
@@ -104,6 +99,20 @@ export declare class RasterTileNode {
104
99
  maxZ?: number;
105
100
  /** Optional geographic bounds filter */
106
101
  bounds?: Bounds;
102
+ /**
103
+ * Device pixels per CSS pixel. The LOD test selects a tile when its
104
+ * source pixels are at most one *device* pixel wide; on HiDPI displays
105
+ * (`pixelRatio > 1`) this picks a finer overview than the CSS-pixel
106
+ * comparison would. See `dev-docs/lod-and-pixel-matching.md` § (A).
107
+ */
108
+ pixelRatio: number;
109
+ /**
110
+ * Bounding-volume cache shared by every node in this traversal. Populated
111
+ * lazily as tiles are visited; reused across `getTileIndices` calls (so
112
+ * animation frames don't recompute proj4 reprojections + oriented-bounding-
113
+ * box fits). See {@link BoundingVolumeCache}.
114
+ */
115
+ boundingVolumeCache: BoundingVolumeCache;
107
116
  }): boolean;
108
117
  /**
109
118
  * Collect all tiles marked as selected in the tree.
@@ -122,16 +131,26 @@ export declare class RasterTileNode {
122
131
  */
123
132
  insideBounds(bounds: Bounds, commonSpaceBounds: Bounds): boolean;
124
133
  /**
125
- * Calculate the 3D bounding volume for this tile in deck.gl's common
126
- * coordinate space for frustum culling.
134
+ * The 3D bounding volume for this tile in deck.gl's common coordinate space,
135
+ * used for frustum culling.
127
136
  *
128
- * TODO: In the future, we can add a fast path in the case that the source
129
- * tiling is already in EPSG:3857.
137
+ * Memoized in `boundingVolumeCache` (keyed by `z/x/y`): a tile's bounding
138
+ * volume depends only on `(z, x, y, zRange)` for a given descriptor, so on a
139
+ * cache hit it is returned without rerunning {@link computeBoundingVolume}'s
140
+ * proj4 reprojections + oriented-bounding-box fit.
130
141
  */
131
- getBoundingVolume(zRange: ZRange, project: ((xyz: number[]) => number[]) | null): {
142
+ getBoundingVolume(zRange: ZRange, project: ((xyz: number[]) => number[]) | null, boundingVolumeCache: BoundingVolumeCache): {
132
143
  boundingVolume: OrientedBoundingBox;
133
144
  commonSpaceBounds: Bounds;
134
145
  };
146
+ /**
147
+ * Compute (without caching) the 3D bounding volume for this tile in deck.gl's
148
+ * common coordinate space.
149
+ *
150
+ * TODO: In the future, we can add a fast path in the case that the source
151
+ * tiling is already in EPSG:3857.
152
+ */
153
+ private computeBoundingVolume;
135
154
  /**
136
155
  * Generic case - sample reference points and reproject to Web Mercator, then
137
156
  * convert to deck.gl common space
@@ -174,5 +193,20 @@ export declare function getTileIndices(descriptor: TilesetDescriptor, opts: {
174
193
  maxZ: number;
175
194
  zRange: ZRange | null;
176
195
  wgs84Bounds: Bounds;
196
+ /**
197
+ * Device pixels per CSS pixel for the LOD criterion. Defaults to 1
198
+ * (CSS-pixel-accurate selection). Pass deck.gl's
199
+ * `device.canvasContext.cssToDeviceRatio()` for device-pixel accuracy
200
+ * on HiDPI displays. See `dev-docs/lod-and-pixel-matching.md` § (A).
201
+ */
202
+ pixelRatio?: number;
203
+ /**
204
+ * Cache for tile bounding volumes, reused across `getTileIndices` calls so
205
+ * repeated traversals (animation frames) don't redo the proj4 reprojections
206
+ * + oriented-bounding-box fit. Pass the {@link BoundingVolumeCache} owned by
207
+ * the `RasterTileset2D`. If omitted, a throwaway cache is used — it still
208
+ * dedups within a single traversal but provides no cross-call benefit.
209
+ */
210
+ boundingVolumeCache?: BoundingVolumeCache;
177
211
  }): TileIndex[];
178
212
  //# sourceMappingURL=raster-tile-traversal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tile-traversal.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/raster-tile-traversal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raster-tile-traversal.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/raster-tile-traversal.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ import { _GlobeViewport, assert } from "@deck.gl/core";
20
20
  import { transformBounds } from "@developmentseed/proj";
21
21
  import { CullingVolume, makeOrientedBoundingBoxFromPoints, Plane, } from "@math.gl/culling";
22
22
  import { lngLatToWorld, worldToLngLat } from "@math.gl/web-mercator";
23
+ import { BoundingVolumeCache } from "./bounding-volume-cache.js";
23
24
  /**
24
25
  * The size of the entire world in deck.gl's common coordinate space.
25
26
  *
@@ -110,12 +111,6 @@ export class RasterTileNode {
110
111
  selected;
111
112
  /** A cache of the children of this node. */
112
113
  _children;
113
- /**
114
- * A cached bounding volume for this tile, used for frustum culling
115
- *
116
- * This stores the result of `getBoundingVolume`.
117
- */
118
- _boundingVolume;
119
114
  constructor(x, y, z, { descriptor }) {
120
115
  this.x = x;
121
116
  this.y = y;
@@ -182,9 +177,9 @@ export class RasterTileNode {
182
177
  // Reset state
183
178
  this.childVisible = false;
184
179
  this.selected = false;
185
- const { viewport, cullingVolume, elevationBounds, minZ, maxZ = this.descriptor.levels.length - 1, project, bounds, } = params;
180
+ const { viewport, cullingVolume, elevationBounds, minZ, maxZ = this.descriptor.levels.length - 1, project, bounds, pixelRatio, boundingVolumeCache, } = params;
186
181
  // Get bounding volume for this tile
187
- const { boundingVolume, commonSpaceBounds } = this.getBoundingVolume(elevationBounds, project);
182
+ const { boundingVolume, commonSpaceBounds } = this.getBoundingVolume(elevationBounds, project, boundingVolumeCache);
188
183
  // Step 1: Bounds checking
189
184
  // If geographic bounds are specified, reject tiles outside those bounds
190
185
  if (bounds && !this.insideBounds(bounds, commonSpaceBounds)) {
@@ -202,12 +197,15 @@ export class RasterTileNode {
202
197
  // Only select this tile if no child is visible (prevents overlapping tiles)
203
198
  // "When pitch is low, force selection at maxZ."
204
199
  if (!this.childVisible && this.z >= minZ) {
205
- const metersPerScreenPixel = getMetersPerPixelAtBoundingVolume(boundingVolume, viewport.zoom);
200
+ const metersPerCSSPixel = getMetersPerPixelAtBoundingVolume(boundingVolume, viewport.zoom);
206
201
  const tileMetersPerPixel = this.level.metersPerPixel;
207
- if (tileMetersPerPixel <= metersPerScreenPixel ||
202
+ // On-screen size of one source pixel, measured in device pixels.
203
+ // ≤ 1 means the source can fully resolve the rendered framebuffer.
204
+ // See dev-docs/lod-and-pixel-matching.md.
205
+ const devicePixelsPerSourcePixel = (tileMetersPerPixel * pixelRatio) / metersPerCSSPixel;
206
+ if (devicePixelsPerSourcePixel <= 1 ||
208
207
  this.z >= maxZ ||
209
208
  (children === null && this.z >= minZ)) {
210
- // "Select this tile when its scale is at least as detailed as the screen."
211
209
  this.selected = true;
212
210
  return true;
213
211
  }
@@ -261,19 +259,31 @@ export class RasterTileNode {
261
259
  return inside;
262
260
  }
263
261
  /**
264
- * Calculate the 3D bounding volume for this tile in deck.gl's common
265
- * coordinate space for frustum culling.
262
+ * The 3D bounding volume for this tile in deck.gl's common coordinate space,
263
+ * used for frustum culling.
264
+ *
265
+ * Memoized in `boundingVolumeCache` (keyed by `z/x/y`): a tile's bounding
266
+ * volume depends only on `(z, x, y, zRange)` for a given descriptor, so on a
267
+ * cache hit it is returned without rerunning {@link computeBoundingVolume}'s
268
+ * proj4 reprojections + oriented-bounding-box fit.
269
+ */
270
+ getBoundingVolume(zRange, project, boundingVolumeCache) {
271
+ const hit = boundingVolumeCache.get(this.z, this.x, this.y);
272
+ if (hit && hit.zRange[0] === zRange[0] && hit.zRange[1] === zRange[1]) {
273
+ return hit;
274
+ }
275
+ const result = this.computeBoundingVolume(zRange, project);
276
+ boundingVolumeCache.set(this.z, this.x, this.y, { zRange, ...result });
277
+ return result;
278
+ }
279
+ /**
280
+ * Compute (without caching) the 3D bounding volume for this tile in deck.gl's
281
+ * common coordinate space.
266
282
  *
267
283
  * TODO: In the future, we can add a fast path in the case that the source
268
284
  * tiling is already in EPSG:3857.
269
285
  */
270
- getBoundingVolume(zRange, project) {
271
- const cached = this._boundingVolume;
272
- if (cached &&
273
- cached.zRange[0] === zRange[0] &&
274
- cached.zRange[1] === zRange[1]) {
275
- return cached.result;
276
- }
286
+ computeBoundingVolume(zRange, project) {
277
287
  // Case 1: Globe view - need to construct an oriented bounding box from
278
288
  // reprojected sample points, but also using the `project` param
279
289
  if (project) {
@@ -288,9 +298,7 @@ export class RasterTileNode {
288
298
  // corners.
289
299
  // Case 4: Generic case - sample reference points and reproject to
290
300
  // Web Mercator, then convert to deck.gl common space
291
- const result = this._getGenericBoundingVolume(zRange);
292
- this._boundingVolume = { zRange, result };
293
- return result;
301
+ return this._getGenericBoundingVolume(zRange);
294
302
  }
295
303
  /**
296
304
  * Generic case - sample reference points and reproject to Web Mercator, then
@@ -480,7 +488,14 @@ export function createRootTiles(opts) {
480
488
  * Overview levels follow the descriptor ordering: index 0 = coarsest, higher = finer.
481
489
  */
482
490
  export function getTileIndices(descriptor, opts) {
483
- const { viewport, maxZ, zRange, wgs84Bounds } = opts;
491
+ const { viewport, maxZ, zRange, wgs84Bounds, pixelRatio = 1 } = opts;
492
+ // Shared by every node in this traversal (the recursion threads it through
493
+ // `update`'s params). A throwaway one is fine — it still dedups within the
494
+ // traversal; only a caller-provided cache survives to the next call.
495
+ const boundingVolumeCache = opts.boundingVolumeCache ?? new BoundingVolumeCache();
496
+ // Trim the cache (no-op when under cap) before the traversal — never during,
497
+ // so this frame can never evict an entry it will need again this frame.
498
+ boundingVolumeCache.sweep();
484
499
  // Only define `project` function for Globe viewports, same as upstream
485
500
  const project = viewport instanceof _GlobeViewport && viewport.resolution
486
501
  ? viewport.projectPosition
@@ -541,6 +556,8 @@ export function getTileIndices(descriptor, opts) {
541
556
  minZ,
542
557
  maxZ,
543
558
  bounds,
559
+ pixelRatio,
560
+ boundingVolumeCache,
544
561
  };
545
562
  for (const root of roots) {
546
563
  root.update(traversalParams);
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tile-traversal.js","sourceRoot":"","sources":["../../src/raster-tileset/raster-tile-traversal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raster-tile-traversal.js","sourceRoot":"","sources":["../../src/raster-tileset/raster-tile-traversal.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,34 @@ export type TileMetadata = {
38
38
  */
39
39
  tileHeight: number;
40
40
  };
41
+ /**
42
+ * Configuration for a {@link RasterTileset2D}.
43
+ */
44
+ export interface RasterTileset2DOptions {
45
+ /**
46
+ * Returns the current drawing-buffer-pixel/CSS-pixel ratio.
47
+ *
48
+ * Read at every `getTileIndices` call so that runtime changes (e.g. dragging
49
+ * the window between displays of different DPR, or toggling
50
+ * `Deck.useDevicePixels`) take effect on the next tile evaluation.
51
+ *
52
+ * Defaults to a constant `1` if omitted, which makes LOD selection
53
+ * CSS-pixel-accurate but blurry on HiDPI displays. The `RasterTileLayer`
54
+ * wires this to `drawingBufferWidth / cssWidth` read from the layer's
55
+ * canvas context per call. See `dev-docs/lod-and-pixel-matching.md` § (A).
56
+ */
57
+ getPixelRatio?: () => number;
58
+ /**
59
+ * Soft cap on the number of tile bounding volumes cached across
60
+ * `getTileIndices` calls. Bounding volumes are expensive to compute (proj4
61
+ * reprojections + an oriented-bounding-box fit) and frame-invariant, so
62
+ * caching them keeps repeated traversals (animation frames) cheap. See
63
+ * `dev-docs/specs/2026-05-11-traversal-bounding-volume-cache-design.md`.
64
+ *
65
+ * @default 65536
66
+ */
67
+ maxBoundingVolumeCacheSize?: number;
68
+ }
41
69
  /**
42
70
  * A generic tileset implementation organized according to the OGC
43
71
  * [TileMatrixSet](https://docs.ogc.org/is/17-083r4/17-083r4.html)
@@ -48,7 +76,9 @@ export type TileMetadata = {
48
76
  export declare class RasterTileset2D extends Tileset2D {
49
77
  private descriptor;
50
78
  private wgs84Bounds;
51
- constructor(opts: Tileset2DProps, descriptor: TilesetDescriptor);
79
+ private getPixelRatio;
80
+ private boundingVolumeCache;
81
+ constructor(opts: Tileset2DProps, descriptor: TilesetDescriptor, { getPixelRatio, maxBoundingVolumeCacheSize }?: RasterTileset2DOptions);
52
82
  /**
53
83
  * Get tile indices visible in viewport
54
84
  * Uses frustum culling similar to OSM implementation
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/raster-tileset-2d.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EACV,cAAc,EACd,eAAe,IAAI,cAAc,EAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAEV,OAAO,EACP,oBAAoB,EACpB,SAAS,EACT,MAAM,EACP,MAAM,YAAY,CAAC;AAEpB,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,oBAAoB,CAAC;IAEpC;;;;;;OAMG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,WAAW,CAAS;gBAEhB,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB;IAsB/D;;;;;;;;;;;;;;;;OAgBG;IACM,cAAc,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,GAAG,SAAS,EAAE;IAuBN,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAInC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS;IAiC3C,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAIrC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY;CAmDzD"}
1
+ {"version":3,"file":"raster-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/raster-tileset-2d.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EACV,cAAc,EACd,eAAe,IAAI,cAAc,EAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAEV,OAAO,EACP,oBAAoB,EACpB,SAAS,EACT,MAAM,EACP,MAAM,YAAY,CAAC;AAEpB,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,oBAAoB,CAAC;IAEpC;;;;;;OAMG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAE7B;;;;;;;;OAQG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,mBAAmB,CAAsB;gBAG/C,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,iBAAiB,EAC7B,EAAE,aAAa,EAAE,0BAA0B,EAAE,GAAE,sBAA2B;IA2B5E;;;;;;;;;;;;;;;;OAgBG;IACM,cAAc,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,GAAG,SAAS,EAAE;IAyBN,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAInC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS;IAiC3C,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAIrC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY;CAmDzD"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { _Tileset2D as Tileset2D } from "@deck.gl/geo-layers";
9
9
  import { transformBounds } from "@developmentseed/proj";
10
+ import { BoundingVolumeCache } from "./bounding-volume-cache.js";
10
11
  import { getTileIndices } from "./raster-tile-traversal.js";
11
12
  /**
12
13
  * A generic tileset implementation organized according to the OGC
@@ -18,9 +19,15 @@ import { getTileIndices } from "./raster-tile-traversal.js";
18
19
  export class RasterTileset2D extends Tileset2D {
19
20
  descriptor;
20
21
  wgs84Bounds;
21
- constructor(opts, descriptor) {
22
+ getPixelRatio;
23
+ boundingVolumeCache;
24
+ constructor(opts, descriptor, { getPixelRatio, maxBoundingVolumeCacheSize } = {}) {
22
25
  super(opts);
23
26
  this.descriptor = descriptor;
27
+ this.getPixelRatio = getPixelRatio ?? (() => 1);
28
+ this.boundingVolumeCache = new BoundingVolumeCache({
29
+ maxEntries: maxBoundingVolumeCacheSize,
30
+ });
24
31
  const rawBounds = transformBounds(this.descriptor.projectTo4326, ...this.descriptor.projectedBounds);
25
32
  // Web Mercator cannot represent latitudes outside ~±85.051°, and the
26
33
  // downstream tile traversal calls `lngLatToWorld` on these bounds which
@@ -66,6 +73,8 @@ export class RasterTileset2D extends Tileset2D {
66
73
  maxZ,
67
74
  zRange: opts.zRange ?? null,
68
75
  wgs84Bounds: this.wgs84Bounds,
76
+ pixelRatio: this.getPixelRatio(),
77
+ boundingVolumeCache: this.boundingVolumeCache,
69
78
  });
70
79
  return tileIndices;
71
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tileset-2d.js","sourceRoot":"","sources":["../../src/raster-tileset/raster-tileset-2d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raster-tileset-2d.js","sourceRoot":"","sources":["../../src/raster-tileset/raster-tileset-2d.ts"],"names":[],"mappings":"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"}
@@ -61,8 +61,8 @@ export interface TilesetLevel {
61
61
  * non-affine transforms (e.g. GCPs) in the future.
62
62
  */
63
63
  tileTransform: (col: number, row: number) => {
64
- forwardTransform: (x: number, y: number) => [number, number];
65
- inverseTransform: (x: number, y: number) => [number, number];
64
+ forwardTransform: ProjectionFunction;
65
+ inverseTransform: ProjectionFunction;
66
66
  };
67
67
  }
68
68
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tileset-interface.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/tileset-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IAErB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;;;;;;;OAUG;IACH,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAE5D;;;;;;;;OAQG;IACH,oBAAoB,EAAE,CACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,KAClB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAExE;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,CACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,KACR;QACH,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC9D,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,MAAM,EAAE,YAAY,EAAE,CAAC;IAEvB;;;;;OAKG;IACH,aAAa,EAAE,kBAAkB,CAAC;IAElC;;;;;OAKG;IACH,aAAa,EAAE,kBAAkB,CAAC;IAElC;;;;OAIG;IACH,eAAe,EAAE,kBAAkB,CAAC;IAEpC;;;;OAIG;IACH,eAAe,EAAE,kBAAkB,CAAC;IAEpC,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"tileset-interface.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/tileset-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IAErB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;;;;;;;OAUG;IACH,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAE5D;;;;;;;;OAQG;IACH,oBAAoB,EAAE,CACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,KAClB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAExE;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,CACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,KACR;QACH,gBAAgB,EAAE,kBAAkB,CAAC;QACrC,gBAAgB,EAAE,kBAAkB,CAAC;KACtC,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,MAAM,EAAE,YAAY,EAAE,CAAC;IAEvB;;;;;OAKG;IACH,aAAa,EAAE,kBAAkB,CAAC;IAElC;;;;;OAKG;IACH,aAAa,EAAE,kBAAkB,CAAC;IAElC;;;;OAIG;IACH,eAAe,EAAE,kBAAkB,CAAC;IAEpC;;;;OAIG;IACH,eAAe,EAAE,kBAAkB,CAAC;IAEpC,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;CACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@developmentseed/deck.gl-raster",
3
- "version": "0.6.1",
3
+ "version": "0.7.0-beta.1",
4
4
  "description": "Georeferenced image data visualization in deck.gl",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -41,7 +41,7 @@
41
41
  "@luma.gl/core": "^9.3.2",
42
42
  "@luma.gl/shadertools": "^9.3.2",
43
43
  "@types/node": "^25.6.0",
44
- "jsdom": "^29.0.2",
44
+ "jsdom": "^29.1.1",
45
45
  "typescript": "^6.0.3",
46
46
  "vitest": "^4.1.5"
47
47
  },
@@ -52,15 +52,15 @@
52
52
  "@deck.gl/mesh-layers": "^9.3.0",
53
53
  "@luma.gl/core": "^9.3.2",
54
54
  "@luma.gl/shadertools": "^9.3.2",
55
- "@developmentseed/morecantile": "^0.6.1"
55
+ "@developmentseed/morecantile": "^0.7.0-beta.1"
56
56
  },
57
57
  "dependencies": {
58
58
  "@math.gl/core": "^4.1.0",
59
59
  "@math.gl/culling": "^4.1.0",
60
60
  "@math.gl/web-mercator": "^4.1.0",
61
- "@developmentseed/affine": "^0.6.1",
62
- "@developmentseed/proj": "^0.6.1",
63
- "@developmentseed/raster-reproject": "^0.6.1"
61
+ "@developmentseed/affine": "^0.7.0-beta.1",
62
+ "@developmentseed/proj": "^0.7.0-beta.1",
63
+ "@developmentseed/raster-reproject": "^0.7.0-beta.1"
64
64
  },
65
65
  "volta": {
66
66
  "extends": "../../package.json"