@developmentseed/deck.gl-raster 0.4.0 → 0.5.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/gpu-modules/composite-bands.d.ts +85 -0
- package/dist/gpu-modules/composite-bands.d.ts.map +1 -0
- package/dist/gpu-modules/composite-bands.js +141 -0
- package/dist/gpu-modules/composite-bands.js.map +1 -0
- package/dist/gpu-modules/cutline-bbox.d.ts +70 -0
- package/dist/gpu-modules/cutline-bbox.d.ts.map +1 -0
- package/dist/gpu-modules/cutline-bbox.js +100 -0
- package/dist/gpu-modules/cutline-bbox.js.map +1 -0
- package/dist/gpu-modules/index.d.ts +6 -0
- package/dist/gpu-modules/index.d.ts.map +1 -1
- package/dist/gpu-modules/index.js +3 -0
- package/dist/gpu-modules/index.js.map +1 -1
- package/dist/gpu-modules/linear-rescale.d.ts +39 -0
- package/dist/gpu-modules/linear-rescale.d.ts.map +1 -0
- package/dist/gpu-modules/linear-rescale.js +40 -0
- package/dist/gpu-modules/linear-rescale.js.map +1 -0
- package/dist/gpu-modules/types.d.ts +10 -1
- package/dist/gpu-modules/types.d.ts.map +1 -1
- package/dist/index.d.ts +6 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/layer-utils.d.ts +28 -0
- package/dist/layer-utils.d.ts.map +1 -0
- package/dist/layer-utils.js +56 -0
- package/dist/layer-utils.js.map +1 -0
- package/dist/mesh-layer/mesh-layer.d.ts +15 -3
- package/dist/mesh-layer/mesh-layer.d.ts.map +1 -1
- package/dist/mesh-layer/mesh-layer.js +25 -3
- package/dist/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/multi-raster-tileset/index.d.ts +5 -0
- package/dist/multi-raster-tileset/index.d.ts.map +1 -0
- package/dist/multi-raster-tileset/index.js +3 -0
- package/dist/multi-raster-tileset/index.js.map +1 -0
- package/dist/multi-raster-tileset/multi-tileset-descriptor.d.ts +75 -0
- package/dist/multi-raster-tileset/multi-tileset-descriptor.d.ts.map +1 -0
- package/dist/multi-raster-tileset/multi-tileset-descriptor.js +97 -0
- package/dist/multi-raster-tileset/multi-tileset-descriptor.js.map +1 -0
- package/dist/multi-raster-tileset/secondary-tile-resolver.d.ts +129 -0
- package/dist/multi-raster-tileset/secondary-tile-resolver.d.ts.map +1 -0
- package/dist/multi-raster-tileset/secondary-tile-resolver.js +88 -0
- package/dist/multi-raster-tileset/secondary-tile-resolver.js.map +1 -0
- package/dist/raster-layer.d.ts +30 -12
- package/dist/raster-layer.d.ts.map +1 -1
- package/dist/raster-layer.js +20 -28
- package/dist/raster-layer.js.map +1 -1
- package/dist/raster-tileset/index.d.ts +4 -1
- package/dist/raster-tileset/index.d.ts.map +1 -1
- package/dist/raster-tileset/index.js +2 -1
- package/dist/raster-tileset/index.js.map +1 -1
- package/dist/raster-tileset/raster-tile-traversal.d.ts +35 -51
- package/dist/raster-tileset/raster-tile-traversal.d.ts.map +1 -1
- package/dist/raster-tileset/raster-tile-traversal.js +128 -172
- package/dist/raster-tileset/raster-tile-traversal.js.map +1 -1
- package/dist/raster-tileset/raster-tileset-2d.d.ts +8 -22
- package/dist/raster-tileset/raster-tileset-2d.d.ts.map +1 -1
- package/dist/raster-tileset/raster-tileset-2d.js +18 -81
- package/dist/raster-tileset/raster-tileset-2d.js.map +1 -1
- package/dist/raster-tileset/tile-matrix-set.d.ts +20 -0
- package/dist/raster-tileset/tile-matrix-set.d.ts.map +1 -0
- package/dist/raster-tileset/tile-matrix-set.js +121 -0
- package/dist/raster-tileset/tile-matrix-set.js.map +1 -0
- package/dist/raster-tileset/tileset-interface.d.ts +78 -0
- package/dist/raster-tileset/tileset-interface.d.ts.map +1 -0
- package/dist/raster-tileset/tileset-interface.js +2 -0
- package/dist/raster-tileset/tileset-interface.js.map +1 -0
- package/dist/raster-tileset/types.d.ts +10 -18
- package/dist/raster-tileset/types.d.ts.map +1 -1
- package/package.json +14 -14
package/dist/raster-layer.d.ts
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
|
-
import type { CompositeLayerProps, Layer, UpdateParameters } from "@deck.gl/core";
|
|
1
|
+
import type { CompositeLayerProps, DefaultProps, Layer, TextureSource, UpdateParameters } from "@deck.gl/core";
|
|
2
2
|
import { CompositeLayer } from "@deck.gl/core";
|
|
3
3
|
import type { ReprojectionFns } from "@developmentseed/raster-reproject";
|
|
4
4
|
import { RasterReprojector } from "@developmentseed/raster-reproject";
|
|
5
5
|
import type { RasterModule } from "./gpu-modules/types";
|
|
6
|
+
/**
|
|
7
|
+
* The result returned by a `renderTile` function.
|
|
8
|
+
*
|
|
9
|
+
* Must contain at least one of `image` or `renderPipeline`. If both are
|
|
10
|
+
* provided, `image` is prepended as a `CreateTexture` module so the pipeline
|
|
11
|
+
* can operate on it.
|
|
12
|
+
*/
|
|
13
|
+
export type RenderTileResult = {
|
|
14
|
+
image: TextureSource;
|
|
15
|
+
renderPipeline?: RasterModule[];
|
|
16
|
+
} | {
|
|
17
|
+
renderPipeline: RasterModule[];
|
|
18
|
+
image?: TextureSource;
|
|
19
|
+
};
|
|
6
20
|
/**
|
|
7
21
|
* Props for {@link RasterLayer}.
|
|
8
22
|
*/
|
|
@@ -20,14 +34,23 @@ export interface RasterLayerProps extends CompositeLayerProps {
|
|
|
20
34
|
*/
|
|
21
35
|
reprojectionFns: ReprojectionFns;
|
|
22
36
|
/**
|
|
23
|
-
*
|
|
37
|
+
* The image to display. Accepts any luma.gl `TextureSource` (e.g. a URL,
|
|
38
|
+
* `HTMLImageElement`, `ImageData`, etc.). deck.gl manages the texture
|
|
39
|
+
* lifecycle automatically.
|
|
24
40
|
*
|
|
25
|
-
*
|
|
41
|
+
* If `renderPipeline` is also provided, `image` is prepended as a
|
|
42
|
+
* `CreateTexture` module so the pipeline can operate on it.
|
|
26
43
|
*
|
|
27
|
-
*
|
|
28
|
-
* - Sequence of shader modules to be composed into a shader program
|
|
44
|
+
* @default null
|
|
29
45
|
*/
|
|
30
|
-
|
|
46
|
+
image?: TextureSource | null;
|
|
47
|
+
/**
|
|
48
|
+
* Sequence of shader modules to be composed into a render pipeline.
|
|
49
|
+
*
|
|
50
|
+
* If `image` is also provided, it is automatically prepended as a
|
|
51
|
+
* `CreateTexture` module.
|
|
52
|
+
*/
|
|
53
|
+
renderPipeline?: RasterModule[] | null;
|
|
31
54
|
/**
|
|
32
55
|
* Maximum reprojection error in pixels for mesh refinement.
|
|
33
56
|
* Lower values create denser meshes with higher accuracy.
|
|
@@ -50,10 +73,7 @@ export interface RasterLayerProps extends CompositeLayerProps {
|
|
|
50
73
|
*/
|
|
51
74
|
export declare class RasterLayer extends CompositeLayer<RasterLayerProps> {
|
|
52
75
|
static layerName: string;
|
|
53
|
-
static defaultProps:
|
|
54
|
-
debug: boolean;
|
|
55
|
-
debugOpacity: number;
|
|
56
|
-
};
|
|
76
|
+
static defaultProps: DefaultProps<RasterLayerProps>;
|
|
57
77
|
state: {
|
|
58
78
|
reprojector?: RasterReprojector;
|
|
59
79
|
mesh?: {
|
|
@@ -66,8 +86,6 @@ export declare class RasterLayer extends CompositeLayer<RasterLayerProps> {
|
|
|
66
86
|
updateState(params: UpdateParameters<this>): void;
|
|
67
87
|
protected _generateMesh(): void;
|
|
68
88
|
renderDebugLayer(): Layer | null;
|
|
69
|
-
/** Create assembled render pipeline from the renderPipeline prop input. */
|
|
70
|
-
protected _createRenderPipeline(): RasterModule[];
|
|
71
89
|
renderLayers(): Layer<{}>[] | null;
|
|
72
90
|
}
|
|
73
91
|
//# sourceMappingURL=raster-layer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-layer.d.ts","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,KAAK,EACL,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"raster-layer.d.ts","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAmCxD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,GACzD;IAAE,cAAc,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;IAEjC;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAE7B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oFAAoF;IACpF,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAWD;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IAC/D,OAAgB,SAAS,SAAiB;IAC1C,OAAgB,YAAY,iCAAgB;IAEpC,KAAK,EAAE;QACb,WAAW,CAAC,EAAE,iBAAiB,CAAC;QAChC,IAAI,CAAC,EAAE;YACL,SAAS,EAAE,YAAY,CAAC;YACxB,OAAO,EAAE,WAAW,CAAC;YACrB,SAAS,EAAE,YAAY,CAAC;SACzB,CAAC;KACH,CAAC;IAEO,eAAe,IAAI,IAAI;IAIvB,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IA8BnD,SAAS,CAAC,aAAa,IAAI,IAAI;IAiC/B,gBAAgB,IAAI,KAAK,GAAG,IAAI;IA6DhC,YAAY;CAoDb"}
|
package/dist/raster-layer.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { CompositeLayer } from "@deck.gl/core";
|
|
2
2
|
import { PolygonLayer } from "@deck.gl/layers";
|
|
3
3
|
import { RasterReprojector } from "@developmentseed/raster-reproject";
|
|
4
|
-
import { CreateTexture } from "./gpu-modules/create-texture";
|
|
5
4
|
import { MeshTextureLayer } from "./mesh-layer/mesh-layer";
|
|
6
5
|
const DEFAULT_MAX_ERROR = 0.125;
|
|
7
6
|
const DEBUG_COLORS = [
|
|
@@ -29,6 +28,10 @@ const DEBUG_COLORS = [
|
|
|
29
28
|
[0, 204, 255], // cyan
|
|
30
29
|
];
|
|
31
30
|
const defaultProps = {
|
|
31
|
+
// A prop with `type: "image"` gets converted to a texture automatically by
|
|
32
|
+
// deck.gl (as long as async: true)
|
|
33
|
+
image: { type: "image", value: null, async: true },
|
|
34
|
+
renderPipeline: { type: "array", value: [], compare: true },
|
|
32
35
|
debug: false,
|
|
33
36
|
debugOpacity: 0.5,
|
|
34
37
|
};
|
|
@@ -50,11 +53,21 @@ export class RasterLayer extends CompositeLayer {
|
|
|
50
53
|
updateState(params) {
|
|
51
54
|
super.updateState(params);
|
|
52
55
|
const { props, oldProps, changeFlags } = params;
|
|
53
|
-
// Regenerate mesh if key properties change
|
|
56
|
+
// Regenerate mesh if key properties change.
|
|
57
|
+
// Compare reprojectionFns members individually since callers may create a
|
|
58
|
+
// new wrapper object on every render even when the functions are stable.
|
|
59
|
+
const reprojectionFnsChanged = props.reprojectionFns.forwardTransform !==
|
|
60
|
+
oldProps.reprojectionFns?.forwardTransform ||
|
|
61
|
+
props.reprojectionFns.inverseTransform !==
|
|
62
|
+
oldProps.reprojectionFns?.inverseTransform ||
|
|
63
|
+
props.reprojectionFns.forwardReproject !==
|
|
64
|
+
oldProps.reprojectionFns?.forwardReproject ||
|
|
65
|
+
props.reprojectionFns.inverseReproject !==
|
|
66
|
+
oldProps.reprojectionFns?.inverseReproject;
|
|
54
67
|
const needsMeshUpdate = Boolean(changeFlags.dataChanged) ||
|
|
55
68
|
props.width !== oldProps.width ||
|
|
56
69
|
props.height !== oldProps.height ||
|
|
57
|
-
|
|
70
|
+
reprojectionFnsChanged ||
|
|
58
71
|
props.maxError !== oldProps.maxError;
|
|
59
72
|
if (needsMeshUpdate) {
|
|
60
73
|
this._generateMesh();
|
|
@@ -122,38 +135,17 @@ export class RasterLayer extends CompositeLayer {
|
|
|
122
135
|
pickable: false,
|
|
123
136
|
}));
|
|
124
137
|
}
|
|
125
|
-
/** Create assembled render pipeline from the renderPipeline prop input. */
|
|
126
|
-
_createRenderPipeline() {
|
|
127
|
-
if (this.props.renderPipeline instanceof ImageData) {
|
|
128
|
-
const imageData = this.props.renderPipeline;
|
|
129
|
-
const texture = this.context.device.createTexture({
|
|
130
|
-
format: "rgba8unorm",
|
|
131
|
-
width: imageData.width,
|
|
132
|
-
height: imageData.height,
|
|
133
|
-
data: imageData.data,
|
|
134
|
-
});
|
|
135
|
-
const wrapper = {
|
|
136
|
-
module: CreateTexture,
|
|
137
|
-
props: {
|
|
138
|
-
textureName: texture,
|
|
139
|
-
},
|
|
140
|
-
};
|
|
141
|
-
return [wrapper];
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
return this.props.renderPipeline;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
138
|
renderLayers() {
|
|
148
139
|
const { mesh } = this.state;
|
|
149
|
-
const { debug } = this.props;
|
|
150
|
-
if (!mesh) {
|
|
140
|
+
const { debug, image, renderPipeline } = this.props;
|
|
141
|
+
if (!mesh || (!image && (renderPipeline?.length ?? 0) === 0)) {
|
|
151
142
|
return null;
|
|
152
143
|
}
|
|
153
144
|
const { indices, positions, texCoords } = mesh;
|
|
154
145
|
const meshLayer = new MeshTextureLayer(this.getSubLayerProps({
|
|
155
146
|
id: "raster",
|
|
156
|
-
|
|
147
|
+
image,
|
|
148
|
+
renderPipeline,
|
|
157
149
|
// Dummy data because we're only rendering _one_ instance of this mesh
|
|
158
150
|
// https://github.com/visgl/deck.gl/blob/93111b667b919148da06ff1918410cf66381904f/modules/geo-layers/src/terrain-layer/terrain-layer.ts#L241
|
|
159
151
|
data: [1],
|
package/dist/raster-layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-layer.js","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"raster-layer.js","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export type { TileMetadata } from "./raster-tileset-2d.js";
|
|
2
|
-
export {
|
|
2
|
+
export { RasterTileset2D } from "./raster-tileset-2d.js";
|
|
3
|
+
export { TileMatrixSetAdaptor } from "./tile-matrix-set.js";
|
|
4
|
+
export type { TilesetDescriptor, TilesetLevel } from "./tileset-interface.js";
|
|
5
|
+
export type { Bounds, CornerBounds, Corners, ProjectionFunction, } from "./types.js";
|
|
3
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC9E,YAAY,EACV,MAAM,EACN,YAAY,EACZ,OAAO,EACP,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/raster-tileset/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/raster-tileset/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* This file implements tile traversal for generic 2D tilesets
|
|
3
|
-
* TileMatrixSet tile layouts.
|
|
2
|
+
* This file implements tile traversal for generic 2D tilesets.
|
|
4
3
|
*
|
|
5
4
|
* The main algorithm works as follows:
|
|
6
5
|
*
|
|
@@ -8,26 +7,29 @@
|
|
|
8
7
|
* necessarily the whole world)
|
|
9
8
|
* 2. Test if each tile is visible using viewport frustum culling
|
|
10
9
|
* 3. For visible tiles, compute distance-based LOD (Level of Detail)
|
|
11
|
-
* 4. If LOD is insufficient, recursively subdivide into
|
|
10
|
+
* 4. If LOD is insufficient, recursively subdivide into child tiles
|
|
12
11
|
* 5. Select tiles at appropriate zoom levels based on distance from camera
|
|
13
12
|
*
|
|
14
13
|
* The result is a set of tiles at varying zoom levels that efficiently
|
|
15
14
|
* cover the visible area with appropriate detail.
|
|
15
|
+
*
|
|
16
|
+
* The traversal is driven by a {@link TilesetDescriptor}, which abstracts over
|
|
17
|
+
* both OGC TileMatrixSet grids and Zarr multiscale pyramids.
|
|
16
18
|
*/
|
|
17
19
|
import type { Viewport } from "@deck.gl/core";
|
|
18
|
-
import type { TileMatrix, TileMatrixSet } from "@developmentseed/morecantile";
|
|
19
20
|
import type { OrientedBoundingBox } from "@math.gl/culling";
|
|
20
21
|
import { CullingVolume } from "@math.gl/culling";
|
|
21
|
-
import type {
|
|
22
|
+
import type { TilesetDescriptor, TilesetLevel } from "./tileset-interface.js";
|
|
23
|
+
import type { Bounds, TileIndex, ZRange } from "./types.js";
|
|
22
24
|
/**
|
|
23
|
-
* Raster Tile Node - represents a single tile in
|
|
25
|
+
* Raster Tile Node - represents a single tile in a tileset pyramid.
|
|
24
26
|
*
|
|
25
27
|
* Akin to the upstream OSMNode class.
|
|
26
28
|
*
|
|
27
29
|
* This node class uses the following coordinate system:
|
|
28
30
|
*
|
|
29
|
-
* - x: tile column (0 to
|
|
30
|
-
* - y: tile row (0 to
|
|
31
|
+
* - x: tile column (0 to TilesetLevel.matrixWidth, left to right)
|
|
32
|
+
* - y: tile row (0 to TilesetLevel.matrixHeight, top to bottom)
|
|
31
33
|
* - z: overview level. This assumes ordering where: 0 = coarsest, higher = finer
|
|
32
34
|
*/
|
|
33
35
|
export declare class RasterTileNode {
|
|
@@ -37,7 +39,7 @@ export declare class RasterTileNode {
|
|
|
37
39
|
y: number;
|
|
38
40
|
/** Zoom index assumed to be (higher = finer detail) */
|
|
39
41
|
z: number;
|
|
40
|
-
private
|
|
42
|
+
private descriptor;
|
|
41
43
|
/**
|
|
42
44
|
* Flag indicating whether any descendant of this tile is visible.
|
|
43
45
|
*
|
|
@@ -53,29 +55,32 @@ export declare class RasterTileNode {
|
|
|
53
55
|
private selected?;
|
|
54
56
|
/** A cache of the children of this node. */
|
|
55
57
|
private _children?;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
+
constructor(x: number, y: number, z: number, { descriptor }: {
|
|
65
|
+
descriptor: TilesetDescriptor;
|
|
62
66
|
});
|
|
63
|
-
/** Get
|
|
64
|
-
get
|
|
67
|
+
/** Get the level info for this tile's z index. */
|
|
68
|
+
get level(): TilesetLevel;
|
|
65
69
|
/** Get the children of this node.
|
|
66
70
|
*
|
|
67
71
|
* Find all tiles at level this.z + 1 whose spatial extent overlaps this tile.
|
|
68
72
|
*
|
|
69
|
-
* A
|
|
70
|
-
*
|
|
73
|
+
* A tileset pyramid is not guaranteed to be a quadtree — it is a stack of
|
|
74
|
+
* independent grids. We find children by mapping the parent tile's CRS bounds
|
|
75
|
+
* into the child grid using {@link TilesetLevel.crsBoundsToTileRange}.
|
|
71
76
|
*/
|
|
72
77
|
get children(): RasterTileNode[] | null;
|
|
73
78
|
/**
|
|
74
79
|
* Recursively traverse the tile pyramid to determine if this tile (or its
|
|
75
80
|
* descendants) should be rendered.
|
|
76
81
|
*
|
|
77
|
-
* I.e.
|
|
78
|
-
* into its children
|
|
82
|
+
* I.e. "Given this tile node, should I render this tile, or should I recurse
|
|
83
|
+
* into its children?"
|
|
79
84
|
*
|
|
80
85
|
* The algorithm performs:
|
|
81
86
|
* 1. Visibility culling - reject tiles outside the view frustum
|
|
@@ -93,9 +98,9 @@ export declare class RasterTileNode {
|
|
|
93
98
|
project: ((xyz: number[]) => number[]) | null;
|
|
94
99
|
cullingVolume: CullingVolume;
|
|
95
100
|
elevationBounds: ZRange;
|
|
96
|
-
/** Minimum (coarsest)
|
|
101
|
+
/** Minimum (coarsest) overview level */
|
|
97
102
|
minZ: number;
|
|
98
|
-
/** Maximum (finest)
|
|
103
|
+
/** Maximum (finest) overview level */
|
|
99
104
|
maxZ?: number;
|
|
100
105
|
/** Optional geographic bounds filter */
|
|
101
106
|
bounds?: Bounds;
|
|
@@ -105,7 +110,7 @@ export declare class RasterTileNode {
|
|
|
105
110
|
* Recursively traverses the entire tree and gathers tiles where selected=true.
|
|
106
111
|
*
|
|
107
112
|
* @param result - Accumulator array for selected tiles
|
|
108
|
-
* @returns Array of selected
|
|
113
|
+
* @returns Array of selected RasterTileNode tiles
|
|
109
114
|
*/
|
|
110
115
|
getSelected(result?: RasterTileNode[]): RasterTileNode[];
|
|
111
116
|
/**
|
|
@@ -135,38 +140,17 @@ export declare class RasterTileNode {
|
|
|
135
140
|
private _getGenericBoundingVolume;
|
|
136
141
|
}
|
|
137
142
|
/**
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* Because it's a linear transformation from the tile index to projected bounds,
|
|
141
|
-
* we don't need to sample this for each of the reference points. We only need
|
|
142
|
-
* the corners.
|
|
143
|
+
* Get tile indices visible in viewport.
|
|
143
144
|
*
|
|
144
|
-
*
|
|
145
|
-
|
|
146
|
-
declare function computeProjectedTileBounds(tileMatrix: TileMatrix, { x, y, }: {
|
|
147
|
-
x: number;
|
|
148
|
-
y: number;
|
|
149
|
-
}): [number, number, number, number];
|
|
150
|
-
/**
|
|
151
|
-
* Get tile indices visible in viewport
|
|
152
|
-
* Uses frustum culling similar to OSM implementation
|
|
145
|
+
* Uses frustum culling driven by a {@link TilesetDescriptor}, which abstracts
|
|
146
|
+
* over OGC TileMatrixSet grids and Zarr multiscale pyramids.
|
|
153
147
|
*
|
|
154
|
-
*
|
|
148
|
+
* Overview levels follow the descriptor ordering: index 0 = coarsest, higher = finer.
|
|
155
149
|
*/
|
|
156
|
-
export declare function getTileIndices(
|
|
150
|
+
export declare function getTileIndices(descriptor: TilesetDescriptor, opts: {
|
|
157
151
|
viewport: Viewport;
|
|
158
152
|
maxZ: number;
|
|
159
153
|
zRange: ZRange | null;
|
|
160
|
-
|
|
161
|
-
projectTo4326: ProjectionFunction;
|
|
162
|
-
wgs84Bounds: CornerBounds;
|
|
154
|
+
wgs84Bounds: Bounds;
|
|
163
155
|
}): TileIndex[];
|
|
164
|
-
/**
|
|
165
|
-
* Exports only for use in testing
|
|
166
|
-
*/
|
|
167
|
-
export declare const __TEST_EXPORTS: {
|
|
168
|
-
computeProjectedTileBounds: typeof computeProjectedTileBounds;
|
|
169
|
-
RasterTileNode: typeof RasterTileNode;
|
|
170
|
-
};
|
|
171
|
-
export {};
|
|
172
156
|
//# 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
|
|
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;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,aAAa,EAGd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EACV,MAAM,EAIN,SAAS,EACT,MAAM,EACP,MAAM,YAAY,CAAC;AAiEpB;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,yBAAyB;IACzB,CAAC,EAAE,MAAM,CAAC;IAEV,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAC;IAEV,uDAAuD;IACvD,CAAC,EAAE,MAAM,CAAC;IAEV,OAAO,CAAC,UAAU,CAAoB;IAEtC;;;;;OAKG;IACH,OAAO,CAAC,YAAY,CAAC,CAAU;IAE/B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,CAAU;IAE3B,4CAA4C;IAC5C,OAAO,CAAC,SAAS,CAAC,CAA0B;IAE5C;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAC,CAItB;gBAGA,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,iBAAiB,CAAA;KAAE;IAQnD,kDAAkD;IAClD,IAAI,KAAK,IAAI,YAAY,CAExB;IAED;;;;;;;OAOG;IACH,IAAI,QAAQ,IAAI,cAAc,EAAE,GAAG,IAAI,CA+BtC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,MAAM,EAAE;QACb,QAAQ,EAAE,QAAQ,CAAC;QAEnB,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAE9C,aAAa,EAAE,aAAa,CAAC;QAE7B,eAAe,EAAE,MAAM,CAAC;QACxB,wCAAwC;QACxC,IAAI,EAAE,MAAM,CAAC;QACb,sCAAsC;QACtC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,wCAAwC;QACxC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO;IAiFX;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,GAAE,cAAc,EAAO,GAAG,cAAc,EAAE;IAY5D;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO;IAUhE;;;;;;OAMG;IACH,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,GAC5C;QAAE,cAAc,EAAE,mBAAmB,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE;IAgCrE;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;CAiDlC;AA4GD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE;IACJ,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,GACA,SAAS,EAAE,CA4Fb"}
|