@developmentseed/deck.gl-raster 0.6.1 → 0.7.0
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.
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/layer-utils.d.ts +2 -2
- package/dist/layer-utils.d.ts.map +1 -1
- package/dist/layer-utils.js.map +1 -1
- package/dist/mesh-layer/mesh-layer.d.ts +4 -1
- package/dist/mesh-layer/mesh-layer.d.ts.map +1 -1
- package/dist/mesh-layer/mesh-layer.js +28 -0
- package/dist/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/multi-raster-tileset/index.d.ts +2 -2
- package/dist/multi-raster-tileset/index.d.ts.map +1 -1
- package/dist/multi-raster-tileset/index.js +1 -1
- package/dist/multi-raster-tileset/index.js.map +1 -1
- package/dist/multi-raster-tileset/multi-tileset-descriptor.d.ts +21 -21
- package/dist/multi-raster-tileset/multi-tileset-descriptor.d.ts.map +1 -1
- package/dist/multi-raster-tileset/multi-tileset-descriptor.js +11 -11
- package/dist/multi-raster-tileset/multi-tileset-descriptor.js.map +1 -1
- package/dist/multi-raster-tileset/secondary-tile-resolver.d.ts +4 -4
- package/dist/multi-raster-tileset/secondary-tile-resolver.d.ts.map +1 -1
- package/dist/multi-raster-tileset/secondary-tile-resolver.js +2 -2
- package/dist/multi-raster-tileset/secondary-tile-resolver.js.map +1 -1
- package/dist/raster-layer.d.ts +21 -3
- package/dist/raster-layer.d.ts.map +1 -1
- package/dist/raster-layer.js +6 -17
- package/dist/raster-layer.js.map +1 -1
- package/dist/raster-tile-layer/raster-tile-layer.d.ts +23 -7
- package/dist/raster-tile-layer/raster-tile-layer.d.ts.map +1 -1
- package/dist/raster-tile-layer/raster-tile-layer.js +61 -17
- package/dist/raster-tile-layer/raster-tile-layer.js.map +1 -1
- package/dist/raster-tileset/affine-tileset-level.d.ts +7 -7
- package/dist/raster-tileset/affine-tileset-level.d.ts.map +1 -1
- package/dist/raster-tileset/affine-tileset-level.js +2 -2
- package/dist/raster-tileset/affine-tileset.d.ts +3 -3
- package/dist/raster-tileset/affine-tileset.d.ts.map +1 -1
- package/dist/raster-tileset/affine-tileset.js +1 -1
- package/dist/raster-tileset/bounding-volume-cache.d.ts +62 -0
- package/dist/raster-tileset/bounding-volume-cache.d.ts.map +1 -0
- package/dist/raster-tileset/bounding-volume-cache.js +70 -0
- package/dist/raster-tileset/bounding-volume-cache.js.map +1 -0
- package/dist/raster-tileset/index.d.ts +3 -2
- package/dist/raster-tileset/index.d.ts.map +1 -1
- package/dist/raster-tileset/index.js +1 -0
- package/dist/raster-tileset/index.js.map +1 -1
- package/dist/raster-tileset/raster-tile-traversal.d.ts +55 -21
- package/dist/raster-tileset/raster-tile-traversal.d.ts.map +1 -1
- package/dist/raster-tileset/raster-tile-traversal.js +46 -29
- package/dist/raster-tileset/raster-tile-traversal.js.map +1 -1
- package/dist/raster-tileset/raster-tileset-2d.d.ts +61 -6
- package/dist/raster-tileset/raster-tileset-2d.d.ts.map +1 -1
- package/dist/raster-tileset/raster-tileset-2d.js +39 -2
- package/dist/raster-tileset/raster-tileset-2d.js.map +1 -1
- package/dist/raster-tileset/sort-by-distance.d.ts +41 -0
- package/dist/raster-tileset/sort-by-distance.d.ts.map +1 -0
- package/dist/raster-tileset/sort-by-distance.js +72 -0
- package/dist/raster-tileset/sort-by-distance.js.map +1 -0
- package/dist/raster-tileset/tile-matrix-set.d.ts +4 -4
- package/dist/raster-tileset/tile-matrix-set.d.ts.map +1 -1
- package/dist/raster-tileset/tile-matrix-set.js +1 -1
- package/dist/raster-tileset/tile-matrix-set.js.map +1 -1
- package/dist/raster-tileset/tileset-interface.d.ts +5 -5
- package/dist/raster-tileset/tileset-interface.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
* The result is a set of tiles at varying zoom levels that efficiently
|
|
14
14
|
* cover the visible area with appropriate detail.
|
|
15
15
|
*
|
|
16
|
-
* The traversal is driven by a {@link
|
|
16
|
+
* The traversal is driven by a {@link RasterTilesetDescriptor}, which abstracts over
|
|
17
17
|
* both OGC TileMatrixSet grids and Zarr multiscale pyramids.
|
|
18
18
|
*/
|
|
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
|
|
22
|
+
import { BoundingVolumeCache } from "./bounding-volume-cache.js";
|
|
23
|
+
import type { RasterTilesetDescriptor, RasterTilesetLevel } from "./tileset-interface.js";
|
|
23
24
|
import type { Bounds, TileIndex, ZRange } from "./types.js";
|
|
24
25
|
/**
|
|
25
26
|
* Raster Tile Node - represents a single tile in a tileset pyramid.
|
|
@@ -28,8 +29,8 @@ import type { Bounds, TileIndex, ZRange } from "./types.js";
|
|
|
28
29
|
*
|
|
29
30
|
* This node class uses the following coordinate system:
|
|
30
31
|
*
|
|
31
|
-
* - x: tile column (0 to
|
|
32
|
-
* - y: tile row (0 to
|
|
32
|
+
* - x: tile column (0 to RasterTilesetLevel.matrixWidth, left to right)
|
|
33
|
+
* - y: tile row (0 to RasterTilesetLevel.matrixHeight, top to bottom)
|
|
33
34
|
* - z: overview level. This assumes ordering where: 0 = coarsest, higher = finer
|
|
34
35
|
*/
|
|
35
36
|
export declare class RasterTileNode {
|
|
@@ -55,24 +56,18 @@ 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
|
-
descriptor:
|
|
60
|
+
descriptor: RasterTilesetDescriptor;
|
|
66
61
|
});
|
|
67
62
|
/** Get the level info for this tile's z index. */
|
|
68
|
-
get level():
|
|
63
|
+
get level(): RasterTilesetLevel;
|
|
69
64
|
/** Get the children of this node.
|
|
70
65
|
*
|
|
71
66
|
* Find all tiles at level this.z + 1 whose spatial extent overlaps this tile.
|
|
72
67
|
*
|
|
73
68
|
* A tileset pyramid is not guaranteed to be a quadtree — it is a stack of
|
|
74
69
|
* independent grids. We find children by mapping the parent tile's CRS bounds
|
|
75
|
-
* into the child grid using {@link
|
|
70
|
+
* into the child grid using {@link RasterTilesetLevel.crsBoundsToTileRange}.
|
|
76
71
|
*/
|
|
77
72
|
get children(): RasterTileNode[] | null;
|
|
78
73
|
/**
|
|
@@ -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
|
-
*
|
|
126
|
-
*
|
|
134
|
+
* The 3D bounding volume for this tile in deck.gl's common coordinate space,
|
|
135
|
+
* used for frustum culling.
|
|
127
136
|
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
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
|
|
@@ -157,22 +176,37 @@ export declare class RasterTileNode {
|
|
|
157
176
|
* Exported for unit testing.
|
|
158
177
|
*/
|
|
159
178
|
export declare function createRootTiles(opts: {
|
|
160
|
-
descriptor:
|
|
179
|
+
descriptor: RasterTilesetDescriptor;
|
|
161
180
|
viewport: Pick<Viewport, "getBounds">;
|
|
162
181
|
datasetWgs84Bounds: Bounds;
|
|
163
182
|
}): RasterTileNode[];
|
|
164
183
|
/**
|
|
165
184
|
* Get tile indices visible in viewport.
|
|
166
185
|
*
|
|
167
|
-
* Uses frustum culling driven by a {@link
|
|
186
|
+
* Uses frustum culling driven by a {@link RasterTilesetDescriptor}, which abstracts
|
|
168
187
|
* over OGC TileMatrixSet grids and Zarr multiscale pyramids.
|
|
169
188
|
*
|
|
170
189
|
* Overview levels follow the descriptor ordering: index 0 = coarsest, higher = finer.
|
|
171
190
|
*/
|
|
172
|
-
export declare function getTileIndices(descriptor:
|
|
191
|
+
export declare function getTileIndices(descriptor: RasterTilesetDescriptor, opts: {
|
|
173
192
|
viewport: Viewport;
|
|
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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,aAAa,EAGd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,
|
|
1
|
+
{"version":3,"file":"raster-tile-traversal.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/raster-tile-traversal.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
* The result is a set of tiles at varying zoom levels that efficiently
|
|
14
14
|
* cover the visible area with appropriate detail.
|
|
15
15
|
*
|
|
16
|
-
* The traversal is driven by a {@link
|
|
16
|
+
* The traversal is driven by a {@link RasterTilesetDescriptor}, which abstracts over
|
|
17
17
|
* both OGC TileMatrixSet grids and Zarr multiscale pyramids.
|
|
18
18
|
*/
|
|
19
19
|
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
|
*
|
|
@@ -83,8 +84,8 @@ const MAX_WEB_MERCATOR_LAT = 85.05112877980659;
|
|
|
83
84
|
*
|
|
84
85
|
* This node class uses the following coordinate system:
|
|
85
86
|
*
|
|
86
|
-
* - x: tile column (0 to
|
|
87
|
-
* - y: tile row (0 to
|
|
87
|
+
* - x: tile column (0 to RasterTilesetLevel.matrixWidth, left to right)
|
|
88
|
+
* - y: tile row (0 to RasterTilesetLevel.matrixHeight, top to bottom)
|
|
88
89
|
* - z: overview level. This assumes ordering where: 0 = coarsest, higher = finer
|
|
89
90
|
*/
|
|
90
91
|
export class RasterTileNode {
|
|
@@ -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;
|
|
@@ -132,7 +127,7 @@ export class RasterTileNode {
|
|
|
132
127
|
*
|
|
133
128
|
* A tileset pyramid is not guaranteed to be a quadtree — it is a stack of
|
|
134
129
|
* independent grids. We find children by mapping the parent tile's CRS bounds
|
|
135
|
-
* into the child grid using {@link
|
|
130
|
+
* into the child grid using {@link RasterTilesetLevel.crsBoundsToTileRange}.
|
|
136
131
|
*/
|
|
137
132
|
get children() {
|
|
138
133
|
if (!this._children) {
|
|
@@ -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
|
|
200
|
+
const metersPerCSSPixel = getMetersPerPixelAtBoundingVolume(boundingVolume, viewport.zoom);
|
|
206
201
|
const tileMetersPerPixel = this.level.metersPerPixel;
|
|
207
|
-
|
|
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
|
-
*
|
|
265
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -474,13 +482,20 @@ export function createRootTiles(opts) {
|
|
|
474
482
|
/**
|
|
475
483
|
* Get tile indices visible in viewport.
|
|
476
484
|
*
|
|
477
|
-
* Uses frustum culling driven by a {@link
|
|
485
|
+
* Uses frustum culling driven by a {@link RasterTilesetDescriptor}, which abstracts
|
|
478
486
|
* over OGC TileMatrixSet grids and Zarr multiscale pyramids.
|
|
479
487
|
*
|
|
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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"}
|
|
@@ -9,10 +9,10 @@ import type { Viewport } from "@deck.gl/core";
|
|
|
9
9
|
import type { GeoBoundingBox, _Tileset2DProps as Tileset2DProps } from "@deck.gl/geo-layers";
|
|
10
10
|
import { _Tileset2D as Tileset2D } from "@deck.gl/geo-layers";
|
|
11
11
|
import type { Matrix4 } from "@math.gl/core";
|
|
12
|
-
import type {
|
|
13
|
-
import type { Corners, ProjectedBoundingBox, TileIndex, ZRange } from "./types.js";
|
|
14
|
-
/** Type returned by
|
|
15
|
-
export type
|
|
12
|
+
import type { RasterTilesetDescriptor } from "./tileset-interface.js";
|
|
13
|
+
import type { Corners, ProjectedBoundingBox, ProjectionFunction, TileIndex, ZRange } from "./types.js";
|
|
14
|
+
/** Type returned by {@link RasterTileset2D.getTileMetadata} */
|
|
15
|
+
export type RasterTileMetadata = {
|
|
16
16
|
/**
|
|
17
17
|
* **Axis-aligned** bounding box of the tile in **WGS84 coordinates**.
|
|
18
18
|
*/
|
|
@@ -37,7 +37,51 @@ export type TileMetadata = {
|
|
|
37
37
|
* Tile height in pixels.
|
|
38
38
|
*/
|
|
39
39
|
tileHeight: number;
|
|
40
|
+
/**
|
|
41
|
+
* Forward (tile-local pixel → CRS) transform for this tile.
|
|
42
|
+
*
|
|
43
|
+
* Stable across the tile's lifetime; computed once at tile creation. Stored
|
|
44
|
+
* on the tile so downstream layers (e.g. `RasterTileLayer._renderSubLayers`)
|
|
45
|
+
* receive a reference-stable function across renders, which is what
|
|
46
|
+
* `RasterLayer`'s `reprojectionFnsChanged` check needs to avoid spurious mesh
|
|
47
|
+
* regeneration.
|
|
48
|
+
*/
|
|
49
|
+
forwardTransform: ProjectionFunction;
|
|
50
|
+
/**
|
|
51
|
+
* Inverse (CRS → tile-local pixel) transform.
|
|
52
|
+
*
|
|
53
|
+
* Same stability guarantees as {@link TileMetadata.forwardTransform}.
|
|
54
|
+
*/
|
|
55
|
+
inverseTransform: ProjectionFunction;
|
|
40
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* Configuration for a {@link RasterTileset2D}.
|
|
59
|
+
*/
|
|
60
|
+
export interface RasterTileset2DOptions {
|
|
61
|
+
/**
|
|
62
|
+
* Returns the current drawing-buffer-pixel/CSS-pixel ratio.
|
|
63
|
+
*
|
|
64
|
+
* Read at every `getTileIndices` call so that runtime changes (e.g. dragging
|
|
65
|
+
* the window between displays of different DPR, or toggling
|
|
66
|
+
* `Deck.useDevicePixels`) take effect on the next tile evaluation.
|
|
67
|
+
*
|
|
68
|
+
* Defaults to a constant `1` if omitted, which makes LOD selection
|
|
69
|
+
* CSS-pixel-accurate but blurry on HiDPI displays. The `RasterTileLayer`
|
|
70
|
+
* wires this to `drawingBufferWidth / cssWidth` read from the layer's
|
|
71
|
+
* canvas context per call. See `dev-docs/lod-and-pixel-matching.md` § (A).
|
|
72
|
+
*/
|
|
73
|
+
getPixelRatio?: () => number;
|
|
74
|
+
/**
|
|
75
|
+
* Soft cap on the number of tile bounding volumes cached across
|
|
76
|
+
* `getTileIndices` calls. Bounding volumes are expensive to compute (proj4
|
|
77
|
+
* reprojections + an oriented-bounding-box fit) and frame-invariant, so
|
|
78
|
+
* caching them keeps repeated traversals (animation frames) cheap. See
|
|
79
|
+
* `dev-docs/specs/2026-05-11-traversal-bounding-volume-cache-design.md`.
|
|
80
|
+
*
|
|
81
|
+
* @default 65536
|
|
82
|
+
*/
|
|
83
|
+
maxBoundingVolumeCacheSize?: number;
|
|
84
|
+
}
|
|
41
85
|
/**
|
|
42
86
|
* A generic tileset implementation organized according to the OGC
|
|
43
87
|
* [TileMatrixSet](https://docs.ogc.org/is/17-083r4/17-083r4.html)
|
|
@@ -48,7 +92,9 @@ export type TileMetadata = {
|
|
|
48
92
|
export declare class RasterTileset2D extends Tileset2D {
|
|
49
93
|
private descriptor;
|
|
50
94
|
private wgs84Bounds;
|
|
51
|
-
|
|
95
|
+
private getPixelRatio;
|
|
96
|
+
private boundingVolumeCache;
|
|
97
|
+
constructor(opts: Tileset2DProps, descriptor: RasterTilesetDescriptor, { getPixelRatio, maxBoundingVolumeCacheSize }?: RasterTileset2DOptions);
|
|
52
98
|
/**
|
|
53
99
|
* Get tile indices visible in viewport
|
|
54
100
|
* Uses frustum culling similar to OSM implementation
|
|
@@ -74,9 +120,18 @@ export declare class RasterTileset2D extends Tileset2D {
|
|
|
74
120
|
modelMatrix?: Matrix4;
|
|
75
121
|
modelMatrixInverse?: Matrix4;
|
|
76
122
|
}): TileIndex[];
|
|
123
|
+
/**
|
|
124
|
+
* Sort tile indices by ascending distance from the viewport center in
|
|
125
|
+
* projected (common/world) space so loads initiate center-out.
|
|
126
|
+
*
|
|
127
|
+
* Short-circuits when `tileIndices.length <= maxRequests` — all fetches
|
|
128
|
+
* would start concurrently regardless of order in that case. Mutates and
|
|
129
|
+
* returns `tileIndices`.
|
|
130
|
+
*/
|
|
131
|
+
private sortTileIndicesByDistance;
|
|
77
132
|
getTileId(index: TileIndex): string;
|
|
78
133
|
getParentIndex(index: TileIndex): TileIndex;
|
|
79
134
|
getTileZoom(index: TileIndex): number;
|
|
80
|
-
getTileMetadata(index: TileIndex):
|
|
135
|
+
getTileMetadata(index: TileIndex): RasterTileMetadata;
|
|
81
136
|
}
|
|
82
137
|
//# sourceMappingURL=raster-tileset-2d.d.ts.map
|
|
@@ -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;
|
|
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;AAI7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAEV,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,MAAM,EACP,MAAM,YAAY,CAAC;AAEpB,+DAA+D;AAC/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;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;IAEnB;;;;;;;;OAQG;IACH,gBAAgB,EAAE,kBAAkB,CAAC;IAErC;;;;OAIG;IACH,gBAAgB,EAAE,kBAAkB,CAAC;CACtC,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,CAA0B;IAC5C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,mBAAmB,CAAsB;gBAG/C,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,uBAAuB,EACnC,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;IAyBf;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IA4BxB,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,kBAAkB;CAwD/D"}
|
|
@@ -7,7 +7,9 @@
|
|
|
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";
|
|
12
|
+
import { sortItemsByDistanceFromViewportCenter } from "./sort-by-distance.js";
|
|
11
13
|
/**
|
|
12
14
|
* A generic tileset implementation organized according to the OGC
|
|
13
15
|
* [TileMatrixSet](https://docs.ogc.org/is/17-083r4/17-083r4.html)
|
|
@@ -18,9 +20,15 @@ import { getTileIndices } from "./raster-tile-traversal.js";
|
|
|
18
20
|
export class RasterTileset2D extends Tileset2D {
|
|
19
21
|
descriptor;
|
|
20
22
|
wgs84Bounds;
|
|
21
|
-
|
|
23
|
+
getPixelRatio;
|
|
24
|
+
boundingVolumeCache;
|
|
25
|
+
constructor(opts, descriptor, { getPixelRatio, maxBoundingVolumeCacheSize } = {}) {
|
|
22
26
|
super(opts);
|
|
23
27
|
this.descriptor = descriptor;
|
|
28
|
+
this.getPixelRatio = getPixelRatio ?? (() => 1);
|
|
29
|
+
this.boundingVolumeCache = new BoundingVolumeCache({
|
|
30
|
+
maxEntries: maxBoundingVolumeCacheSize,
|
|
31
|
+
});
|
|
24
32
|
const rawBounds = transformBounds(this.descriptor.projectTo4326, ...this.descriptor.projectedBounds);
|
|
25
33
|
// Web Mercator cannot represent latitudes outside ~±85.051°, and the
|
|
26
34
|
// downstream tile traversal calls `lngLatToWorld` on these bounds which
|
|
@@ -66,8 +74,34 @@ export class RasterTileset2D extends Tileset2D {
|
|
|
66
74
|
maxZ,
|
|
67
75
|
zRange: opts.zRange ?? null,
|
|
68
76
|
wgs84Bounds: this.wgs84Bounds,
|
|
77
|
+
pixelRatio: this.getPixelRatio(),
|
|
78
|
+
boundingVolumeCache: this.boundingVolumeCache,
|
|
79
|
+
});
|
|
80
|
+
return this.sortTileIndicesByDistance(tileIndices, viewport);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Sort tile indices by ascending distance from the viewport center in
|
|
84
|
+
* projected (common/world) space so loads initiate center-out.
|
|
85
|
+
*
|
|
86
|
+
* Short-circuits when `tileIndices.length <= maxRequests` — all fetches
|
|
87
|
+
* would start concurrently regardless of order in that case. Mutates and
|
|
88
|
+
* returns `tileIndices`.
|
|
89
|
+
*/
|
|
90
|
+
sortTileIndicesByDistance(tileIndices, viewport) {
|
|
91
|
+
const { maxRequests } = this.opts;
|
|
92
|
+
if (tileIndices.length <= maxRequests) {
|
|
93
|
+
return tileIndices;
|
|
94
|
+
}
|
|
95
|
+
const descriptor = this.descriptor;
|
|
96
|
+
return sortItemsByDistanceFromViewportCenter(tileIndices, viewport, (tileIndex) => {
|
|
97
|
+
const { x, y, z } = tileIndex;
|
|
98
|
+
const { topLeft, bottomRight } = descriptor.levels[z].projectedTileCorners(x, y);
|
|
99
|
+
const projectedCenter = [
|
|
100
|
+
(topLeft[0] + bottomRight[0]) / 2,
|
|
101
|
+
(topLeft[1] + bottomRight[1]) / 2,
|
|
102
|
+
];
|
|
103
|
+
return descriptor.projectTo4326(projectedCenter[0], projectedCenter[1]);
|
|
69
104
|
});
|
|
70
|
-
return tileIndices;
|
|
71
105
|
}
|
|
72
106
|
getTileId(index) {
|
|
73
107
|
return `${index.x}-${index.y}-${index.z}`;
|
|
@@ -124,6 +158,7 @@ export class RasterTileset2D extends Tileset2D {
|
|
|
124
158
|
// would pass (or fail) the cull-rect test and the refinementStrategy
|
|
125
159
|
// (best-available) would not show parent tiles correctly.
|
|
126
160
|
const [west, south, east, north] = transformBounds(this.descriptor.projectTo4326, ...projectedBounds);
|
|
161
|
+
const { forwardTransform, inverseTransform } = levelDescriptor.tileTransform(x, y);
|
|
127
162
|
return {
|
|
128
163
|
bbox: {
|
|
129
164
|
west,
|
|
@@ -140,6 +175,8 @@ export class RasterTileset2D extends Tileset2D {
|
|
|
140
175
|
projectedCorners,
|
|
141
176
|
tileWidth,
|
|
142
177
|
tileHeight,
|
|
178
|
+
forwardTransform,
|
|
179
|
+
inverseTransform,
|
|
143
180
|
};
|
|
144
181
|
}
|
|
145
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-tileset-2d.js","sourceRoot":"","sources":["../../src/raster-tileset/raster-tileset-2d.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"raster-tileset-2d.js","sourceRoot":"","sources":["../../src/raster-tileset/raster-tileset-2d.ts"],"names":[],"mappings":"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"}
|