@developmentseed/deck.gl-raster 0.7.0-beta.1 → 0.8.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.
- package/dist/fp64.d.ts +18 -0
- package/dist/fp64.d.ts.map +1 -0
- package/dist/fp64.js +28 -0
- package/dist/fp64.js.map +1 -0
- package/dist/globe-grid-mesh.d.ts +30 -0
- package/dist/globe-grid-mesh.d.ts.map +1 -0
- package/dist/globe-grid-mesh.js +67 -0
- package/dist/globe-grid-mesh.js.map +1 -0
- package/dist/gpu-modules/cutline-bbox.d.ts +26 -40
- package/dist/gpu-modules/cutline-bbox.d.ts.map +1 -1
- package/dist/gpu-modules/cutline-bbox.js +24 -53
- package/dist/gpu-modules/cutline-bbox.js.map +1 -1
- package/dist/gpu-modules/index.d.ts +1 -1
- package/dist/gpu-modules/index.d.ts.map +1 -1
- package/dist/gpu-modules/index.js +1 -1
- package/dist/gpu-modules/index.js.map +1 -1
- 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-fragment.glsl.d.ts +1 -1
- package/dist/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
- package/dist/mesh-layer/mesh-layer-vertex.glsl.d.ts +3 -0
- package/dist/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +1 -0
- package/dist/mesh-layer/mesh-layer-vertex.glsl.js +90 -0
- package/dist/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -0
- package/dist/mesh-layer/mesh-layer.d.ts +31 -5
- package/dist/mesh-layer/mesh-layer.d.ts.map +1 -1
- package/dist/mesh-layer/mesh-layer.js +67 -3
- 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 +39 -4
- package/dist/raster-layer.d.ts.map +1 -1
- package/dist/raster-layer.js +51 -35
- package/dist/raster-layer.js.map +1 -1
- package/dist/raster-tile-layer/raster-tile-layer.d.ts +6 -6
- package/dist/raster-tile-layer/raster-tile-layer.d.ts.map +1 -1
- package/dist/raster-tile-layer/raster-tile-layer.js +40 -31
- package/dist/raster-tile-layer/raster-tile-layer.js.map +1 -1
- package/dist/raster-tileset/affine-tileset-level.d.ts +4 -4
- 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 +11 -4
- package/dist/raster-tileset/bounding-volume-cache.d.ts.map +1 -1
- package/dist/raster-tileset/bounding-volume-cache.js +13 -4
- package/dist/raster-tileset/bounding-volume-cache.js.map +1 -1
- 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 +68 -13
- package/dist/raster-tileset/raster-tile-traversal.d.ts.map +1 -1
- package/dist/raster-tileset/raster-tile-traversal.js +240 -35
- package/dist/raster-tileset/raster-tile-traversal.js.map +1 -1
- package/dist/raster-tileset/raster-tileset-2d.d.ts +64 -6
- package/dist/raster-tileset/raster-tileset-2d.d.ts.map +1 -1
- package/dist/raster-tileset/raster-tileset-2d.js +75 -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 +3 -3
- package/dist/raster-tileset/tileset-interface.d.ts.map +1 -1
- package/dist/raster-tileset/web-mercator-clamp.d.ts +29 -0
- package/dist/raster-tileset/web-mercator-clamp.d.ts.map +1 -0
- package/dist/raster-tileset/web-mercator-clamp.js +54 -0
- package/dist/raster-tileset/web-mercator-clamp.js.map +1 -0
- package/package.json +7 -7
- package/dist/raster-tile-layer/constants.d.ts +0 -11
- package/dist/raster-tile-layer/constants.d.ts.map +0 -1
- package/dist/raster-tile-layer/constants.js +0 -11
- package/dist/raster-tile-layer/constants.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAmC3D;;;;;;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;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAE5C;;;;;;;;;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;;;;;;WAMG;QACH,IAAI,CAAC,EAAE;YACL,OAAO,EAAE;gBAAE,KAAK,EAAE,WAAW,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC;YAC9C,UAAU,EAAE;gBACV,QAAQ,EAAE;oBAAE,KAAK,EAAE,YAAY,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAChD,UAAU,EAAE;oBAAE,KAAK,EAAE,YAAY,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC;aACnD,CAAC;SACH,CAAC;QACF;;;;;;;;WAQG;QACH,cAAc,CAAC,EAAE,YAAY,CAAC;KAC/B,CAAC;IAEO,eAAe,IAAI,IAAI;IAIvB,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IA+BnD,SAAS,CAAC,aAAa,IAAI,IAAI;IAgE/B,gBAAgB,IAAI,KAAK,GAAG,IAAI;IA6DhC,YAAY;CAoCb"}
|
package/dist/raster-layer.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
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 { splitFloat64Array } from "./fp64.js";
|
|
5
|
+
import { buildUniformGridMesh } from "./globe-grid-mesh.js";
|
|
4
6
|
import { MeshTextureLayer } from "./mesh-layer/mesh-layer.js";
|
|
5
7
|
const DEFAULT_MAX_ERROR = 0.125;
|
|
6
8
|
const DEBUG_COLORS = [
|
|
@@ -68,13 +70,37 @@ export class RasterLayer extends CompositeLayer {
|
|
|
68
70
|
props.width !== oldProps.width ||
|
|
69
71
|
props.height !== oldProps.height ||
|
|
70
72
|
reprojectionFnsChanged ||
|
|
71
|
-
props.maxError !== oldProps.maxError
|
|
73
|
+
props.maxError !== oldProps.maxError ||
|
|
74
|
+
props.initialTriangulation !== oldProps.initialTriangulation;
|
|
72
75
|
if (needsMeshUpdate) {
|
|
73
76
|
this._generateMesh();
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
_generateMesh() {
|
|
77
|
-
const { width, height, reprojectionFns, maxError = DEFAULT_MAX_ERROR, } = this.props;
|
|
80
|
+
const { width, height, reprojectionFns, initialTriangulation, maxError = DEFAULT_MAX_ERROR, } = this.props;
|
|
81
|
+
// TEMPORARY GLOBE VIEW HACK:
|
|
82
|
+
//
|
|
83
|
+
// GlobeView (lnglat) uses viewport.resolution, the same detection as
|
|
84
|
+
// RasterTileLayer. THROWAWAY: globe renders a uniform grid instead of the
|
|
85
|
+
// adaptive mesh, because Delatin's reprojection-error metric is blind to
|
|
86
|
+
// sphere curvature and facets at low zoom. See globe-grid-mesh.ts and
|
|
87
|
+
// dev-docs/specs/2026-05-21-globe-view-design.md.
|
|
88
|
+
const isGlobe = this.context?.viewport?.resolution !== undefined;
|
|
89
|
+
if (isGlobe) {
|
|
90
|
+
const { indices, positions64High, positions64Low, texCoords } = buildUniformGridMesh(reprojectionFns, width + 1, height + 1);
|
|
91
|
+
this.setState({
|
|
92
|
+
reprojector: undefined,
|
|
93
|
+
mesh: {
|
|
94
|
+
indices: { value: indices, size: 1 },
|
|
95
|
+
attributes: {
|
|
96
|
+
POSITION: { value: positions64High, size: 3 },
|
|
97
|
+
TEXCOORD_0: { value: texCoords, size: 2 },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
positions64Low,
|
|
101
|
+
});
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
78
104
|
// The mesh is lined up with the upper and left edges of the raster. So if
|
|
79
105
|
// we give the raster the same width and height as the number of pixels in
|
|
80
106
|
// the image, it'll be omitting the last row and column of pixels.
|
|
@@ -82,16 +108,19 @@ export class RasterLayer extends CompositeLayer {
|
|
|
82
108
|
// To account for this, we add 1 to both width and height when generating
|
|
83
109
|
// the mesh. This also solves obvious gaps in between neighboring tiles in
|
|
84
110
|
// the COGLayer.
|
|
85
|
-
const reprojector = new RasterReprojector(reprojectionFns, width + 1, height + 1);
|
|
111
|
+
const reprojector = new RasterReprojector(reprojectionFns, width + 1, height + 1, { initialTriangulation });
|
|
86
112
|
reprojector.run(maxError);
|
|
87
|
-
const { indices,
|
|
113
|
+
const { indices, positions64High, positions64Low, texCoords } = reprojectorToMesh(reprojector);
|
|
88
114
|
this.setState({
|
|
89
115
|
reprojector,
|
|
90
116
|
mesh: {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
117
|
+
indices: { value: indices, size: 1 },
|
|
118
|
+
attributes: {
|
|
119
|
+
POSITION: { value: positions64High, size: 3 },
|
|
120
|
+
TEXCOORD_0: { value: texCoords, size: 2 },
|
|
121
|
+
},
|
|
94
122
|
},
|
|
123
|
+
positions64Low,
|
|
95
124
|
});
|
|
96
125
|
}
|
|
97
126
|
renderDebugLayer() {
|
|
@@ -136,39 +165,22 @@ export class RasterLayer extends CompositeLayer {
|
|
|
136
165
|
}));
|
|
137
166
|
}
|
|
138
167
|
renderLayers() {
|
|
139
|
-
const { mesh } = this.state;
|
|
168
|
+
const { mesh, positions64Low } = this.state;
|
|
140
169
|
const { debug, image, renderPipeline } = this.props;
|
|
141
|
-
|
|
170
|
+
// mesh and positions64Low are always set together by _generateMesh.
|
|
171
|
+
if (!mesh ||
|
|
172
|
+
!positions64Low ||
|
|
173
|
+
(!image && (renderPipeline?.length ?? 0) === 0)) {
|
|
142
174
|
return null;
|
|
143
175
|
}
|
|
144
|
-
const { indices, positions, texCoords } = mesh;
|
|
145
176
|
const meshLayer = new MeshTextureLayer(this.getSubLayerProps({
|
|
146
177
|
id: "raster",
|
|
147
178
|
image,
|
|
148
179
|
renderPipeline,
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
indices: { value: indices, size: 1 },
|
|
154
|
-
attributes: {
|
|
155
|
-
POSITION: {
|
|
156
|
-
value: positions,
|
|
157
|
-
size: 3,
|
|
158
|
-
},
|
|
159
|
-
TEXCOORD_0: {
|
|
160
|
-
value: texCoords,
|
|
161
|
-
size: 2,
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
// We're only rendering a single mesh, without instancing
|
|
166
|
-
// https://github.com/visgl/deck.gl/blob/93111b667b919148da06ff1918410cf66381904f/modules/geo-layers/src/terrain-layer/terrain-layer.ts#L244
|
|
167
|
-
_instanced: false,
|
|
168
|
-
// Dummy accessors for the dummy data
|
|
169
|
-
// We place our mesh at the coordinate origin
|
|
170
|
-
getPosition: [0, 0, 0],
|
|
171
|
-
// We give a white color to turn off color mixing with the texture
|
|
180
|
+
// Single mesh rendered as one non-instanced draw.
|
|
181
|
+
data: { length: 1, attributes: { positions64Low } },
|
|
182
|
+
mesh,
|
|
183
|
+
// We give a white color to turn off color mixing with the texture.
|
|
172
184
|
getColor: [255, 255, 255],
|
|
173
185
|
}));
|
|
174
186
|
const layers = [meshLayer];
|
|
@@ -183,19 +195,23 @@ export class RasterLayer extends CompositeLayer {
|
|
|
183
195
|
}
|
|
184
196
|
function reprojectorToMesh(reprojector) {
|
|
185
197
|
const numVertices = reprojector.uvs.length / 2;
|
|
186
|
-
const positions = new Float32Array(numVertices * 3);
|
|
187
198
|
const texCoords = new Float32Array(reprojector.uvs);
|
|
199
|
+
const positions = new Float64Array(numVertices * 3);
|
|
188
200
|
for (let i = 0; i < numVertices; i++) {
|
|
189
201
|
positions[i * 3] = reprojector.exactOutputPositions[i * 2];
|
|
190
202
|
positions[i * 3 + 1] = reprojector.exactOutputPositions[i * 2 + 1];
|
|
191
203
|
// z (flat on the ground)
|
|
192
204
|
positions[i * 3 + 2] = 0;
|
|
193
205
|
}
|
|
206
|
+
// Split the float64 positions into high and low parts for fp64 emulation in
|
|
207
|
+
// the shader.
|
|
208
|
+
const [positions64Low, positions64High] = splitFloat64Array(positions);
|
|
194
209
|
// TODO: Consider using 16-bit indices if the mesh is small enough
|
|
195
210
|
const indices = new Uint32Array(reprojector.triangles);
|
|
196
211
|
return {
|
|
197
212
|
indices,
|
|
198
|
-
|
|
213
|
+
positions64High,
|
|
214
|
+
positions64Low,
|
|
199
215
|
texCoords,
|
|
200
216
|
};
|
|
201
217
|
}
|
package/dist/raster-layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-layer.js","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"raster-layer.js","sourceRoot":"","sources":["../src/raster-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { CompositeLayer } from "@deck.gl/core";
|
|
|
3
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
|
-
import type {
|
|
6
|
+
import type { RasterTilesetDescriptor } from "../raster-tileset/index.js";
|
|
7
7
|
/**
|
|
8
8
|
* Minimum interface returned by `getTileData`.
|
|
9
9
|
*
|
|
@@ -39,14 +39,14 @@ export type GetTileDataOptions = {
|
|
|
39
39
|
/**
|
|
40
40
|
* Props for {@link RasterTileLayer}.
|
|
41
41
|
*/
|
|
42
|
-
export type RasterTileLayerProps<DataT extends MinimalTileData = MinimalTileData> = CompositeLayerProps & Pick<TileLayerProps, "
|
|
42
|
+
export type RasterTileLayerProps<DataT extends MinimalTileData = MinimalTileData> = CompositeLayerProps & Pick<TileLayerProps, "debounceTime" | "extent" | "maxCacheByteSize" | "maxCacheSize" | "maxRequests" | "maxZoom" | "minZoom" | "onTileError" | "onTileLoad" | "onTileUnload" | "onViewportLoad" | "refinementStrategy" | "tileSize" | "zoomOffset"> & {
|
|
43
43
|
/**
|
|
44
44
|
* Tile pyramid + CRS projection descriptor.
|
|
45
45
|
*
|
|
46
46
|
* Subclasses may supply this via state by overriding the protected
|
|
47
47
|
* `_tilesetDescriptor()` method.
|
|
48
48
|
*/
|
|
49
|
-
tilesetDescriptor?:
|
|
49
|
+
tilesetDescriptor?: RasterTilesetDescriptor;
|
|
50
50
|
/**
|
|
51
51
|
* Load data for one tile. Runs once per (x, y, z); the resulting `DataT`
|
|
52
52
|
* is cached by the underlying TileLayer.
|
|
@@ -105,7 +105,7 @@ type RasterTileLayerBaseProps<DataT extends MinimalTileData> = Omit<RasterTileLa
|
|
|
105
105
|
type RasterTileLayerDefaultExtraProps<DataT extends MinimalTileData> = Pick<RasterTileLayerProps<DataT>, "tilesetDescriptor" | "getTileData" | "renderTile">;
|
|
106
106
|
/**
|
|
107
107
|
* Base layer that renders a tiled raster source driven by a generic
|
|
108
|
-
* {@link
|
|
108
|
+
* {@link RasterTilesetDescriptor}.
|
|
109
109
|
*
|
|
110
110
|
* Usable directly (provide `tilesetDescriptor`, `getTileData`, and `renderTile`
|
|
111
111
|
* as props) or as a base class (override the protected `_tilesetDescriptor`,
|
|
@@ -120,7 +120,7 @@ export declare class RasterTileLayer<DataT extends MinimalTileData = MinimalTile
|
|
|
120
120
|
static layerName: string;
|
|
121
121
|
static defaultProps: DefaultProps<RasterTileLayerProps<MinimalTileData>>;
|
|
122
122
|
/**
|
|
123
|
-
* The currently effective {@link
|
|
123
|
+
* The currently effective {@link RasterTilesetDescriptor}.
|
|
124
124
|
*
|
|
125
125
|
* Subclasses override this to return a descriptor built from their own
|
|
126
126
|
* async-parsed state. Returns `undefined` while the source is still
|
|
@@ -132,7 +132,7 @@ export declare class RasterTileLayer<DataT extends MinimalTileData = MinimalTile
|
|
|
132
132
|
* brings it in; for subclass use this method is overridden and the cast
|
|
133
133
|
* is never reached.
|
|
134
134
|
*/
|
|
135
|
-
protected _tilesetDescriptor():
|
|
135
|
+
protected _tilesetDescriptor(): RasterTilesetDescriptor | undefined;
|
|
136
136
|
/**
|
|
137
137
|
* The currently effective tile-fetch callback.
|
|
138
138
|
*
|
|
@@ -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,
|
|
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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"}
|
|
@@ -3,7 +3,6 @@ import { TileLayer } from "@deck.gl/geo-layers";
|
|
|
3
3
|
import { renderDebugTileOutline } from "../layer-utils.js";
|
|
4
4
|
import { RasterLayer } from "../raster-layer.js";
|
|
5
5
|
import { RasterTileset2D } from "../raster-tileset/index.js";
|
|
6
|
-
import { TILE_SIZE, WEB_MERCATOR_TO_WORLD_SCALE } from "./constants.js";
|
|
7
6
|
const defaultProps = {
|
|
8
7
|
...TileLayer.defaultProps,
|
|
9
8
|
maxError: 0.125,
|
|
@@ -12,7 +11,7 @@ const defaultProps = {
|
|
|
12
11
|
};
|
|
13
12
|
/**
|
|
14
13
|
* Base layer that renders a tiled raster source driven by a generic
|
|
15
|
-
* {@link
|
|
14
|
+
* {@link RasterTilesetDescriptor}.
|
|
16
15
|
*
|
|
17
16
|
* Usable directly (provide `tilesetDescriptor`, `getTileData`, and `renderTile`
|
|
18
17
|
* as props) or as a base class (override the protected `_tilesetDescriptor`,
|
|
@@ -27,7 +26,7 @@ export class RasterTileLayer extends CompositeLayer {
|
|
|
27
26
|
static layerName = "RasterTileLayer";
|
|
28
27
|
static defaultProps = defaultProps;
|
|
29
28
|
/**
|
|
30
|
-
* The currently effective {@link
|
|
29
|
+
* The currently effective {@link RasterTilesetDescriptor}.
|
|
31
30
|
*
|
|
32
31
|
* Subclasses override this to return a descriptor built from their own
|
|
33
32
|
* async-parsed state. Returns `undefined` while the source is still
|
|
@@ -82,7 +81,7 @@ export class RasterTileLayer extends CompositeLayer {
|
|
|
82
81
|
if (!descriptor) {
|
|
83
82
|
return [];
|
|
84
83
|
}
|
|
85
|
-
// Tiles built by RasterTileset2D are augmented with
|
|
84
|
+
// Tiles built by RasterTileset2D are augmented with RasterTileMetadata
|
|
86
85
|
// (projectedBbox/Corners, tileWidth/Height) at construction time. The cast
|
|
87
86
|
// makes that runtime augmentation visible to the typed helper.
|
|
88
87
|
return renderDebugTileOutline(`${this.id}-${tile.id}-bounds`, tile, descriptor.projectTo4326);
|
|
@@ -121,7 +120,7 @@ export class RasterTileLayer extends CompositeLayer {
|
|
|
121
120
|
});
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
|
-
const { tileSize, zoomOffset, maxZoom, minZoom, extent, debounceTime, maxCacheSize, maxCacheByteSize, maxRequests, refinementStrategy, updateTriggers, } = this.props;
|
|
123
|
+
const { tileSize, zoomOffset, maxZoom, minZoom, extent, debounceTime, maxCacheSize, maxCacheByteSize, maxRequests, refinementStrategy, updateTriggers, onTileError, onTileLoad, onTileUnload, onViewportLoad, } = this.props;
|
|
125
124
|
return new TileLayer({
|
|
126
125
|
id: `raster-tile-layer-${this.id}`,
|
|
127
126
|
TilesetClass: TilesetFactory,
|
|
@@ -140,6 +139,10 @@ export class RasterTileLayer extends CompositeLayer {
|
|
|
140
139
|
maxCacheByteSize,
|
|
141
140
|
maxRequests,
|
|
142
141
|
refinementStrategy,
|
|
142
|
+
onTileError,
|
|
143
|
+
onTileLoad,
|
|
144
|
+
onTileUnload,
|
|
145
|
+
onViewportLoad,
|
|
143
146
|
});
|
|
144
147
|
}
|
|
145
148
|
async _wrapGetTileData(tile, getTileData) {
|
|
@@ -163,12 +166,9 @@ export class RasterTileLayer extends CompositeLayer {
|
|
|
163
166
|
if (!props.data) {
|
|
164
167
|
return debugLayers;
|
|
165
168
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return debugLayers;
|
|
170
|
-
}
|
|
171
|
-
const { forwardTransform, inverseTransform } = level.tileTransform(x, y);
|
|
169
|
+
// Access forwardTransform/inverseTransform from tile metadata so that
|
|
170
|
+
// reference equality holds across renders.
|
|
171
|
+
const { forwardTransform, inverseTransform } = tile;
|
|
172
172
|
const tileResult = renderTile(props.data);
|
|
173
173
|
if (!tileResult) {
|
|
174
174
|
return debugLayers;
|
|
@@ -176,32 +176,36 @@ export class RasterTileLayer extends CompositeLayer {
|
|
|
176
176
|
const { image, renderPipeline } = tileResult;
|
|
177
177
|
const { width, height } = props.data;
|
|
178
178
|
const isGlobe = this.context.viewport.resolution !== undefined;
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
let reprojectionFns;
|
|
180
|
+
let coordinateSystem;
|
|
181
|
+
if (isGlobe) {
|
|
182
|
+
// Globe view
|
|
183
|
+
reprojectionFns = {
|
|
181
184
|
forwardTransform,
|
|
182
185
|
inverseTransform,
|
|
183
186
|
forwardReproject: descriptor.projectTo4326,
|
|
184
187
|
inverseReproject: descriptor.projectFrom4326,
|
|
185
|
-
}
|
|
186
|
-
|
|
188
|
+
};
|
|
189
|
+
coordinateSystem = "lnglat";
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
// Web Mercator: render the mesh directly in deck.gl common space.
|
|
193
|
+
//
|
|
194
|
+
// The tile's `_projectPosition` maps source CRS → common space, support
|
|
195
|
+
// high precision with fp64 emulation.
|
|
196
|
+
//
|
|
197
|
+
// `_projectPosition`/`_unprojectPosition` must be reference-stable across
|
|
198
|
+
// renders to avoid regenerating the mesh and recompiling the shader every
|
|
199
|
+
// frame.
|
|
200
|
+
const { _projectPosition, _unprojectPosition } = tile;
|
|
201
|
+
reprojectionFns = {
|
|
187
202
|
forwardTransform,
|
|
188
203
|
inverseTransform,
|
|
189
|
-
forwardReproject:
|
|
190
|
-
inverseReproject:
|
|
191
|
-
};
|
|
192
|
-
const deckProjectionProps = isGlobe
|
|
193
|
-
? {}
|
|
194
|
-
: {
|
|
195
|
-
coordinateSystem: "cartesian",
|
|
196
|
-
coordinateOrigin: [TILE_SIZE / 2, TILE_SIZE / 2, 0],
|
|
197
|
-
// biome-ignore format: array
|
|
198
|
-
modelMatrix: [
|
|
199
|
-
WEB_MERCATOR_TO_WORLD_SCALE, 0, 0, 0,
|
|
200
|
-
0, WEB_MERCATOR_TO_WORLD_SCALE, 0, 0,
|
|
201
|
-
0, 0, 1, 0,
|
|
202
|
-
0, 0, 0, 1,
|
|
203
|
-
],
|
|
204
|
+
forwardReproject: _projectPosition,
|
|
205
|
+
inverseReproject: _unprojectPosition,
|
|
204
206
|
};
|
|
207
|
+
coordinateSystem = "cartesian";
|
|
208
|
+
}
|
|
205
209
|
const rasterLayer = new RasterLayer(this.getSubLayerProps({
|
|
206
210
|
id: `${props.id}-raster`,
|
|
207
211
|
width,
|
|
@@ -212,9 +216,14 @@ export class RasterTileLayer extends CompositeLayer {
|
|
|
212
216
|
renderPipeline,
|
|
213
217
|
maxError,
|
|
214
218
|
reprojectionFns,
|
|
219
|
+
// Web Mercator: clamp the mesh to the valid latitude band for tiles
|
|
220
|
+
// past ±85.051°. Globe renders the full mesh (it shows the poles).
|
|
221
|
+
initialTriangulation: isGlobe
|
|
222
|
+
? undefined
|
|
223
|
+
: tile._webMercatorInitialTriangulation,
|
|
215
224
|
debug,
|
|
216
225
|
debugOpacity,
|
|
217
|
-
|
|
226
|
+
coordinateSystem,
|
|
218
227
|
}));
|
|
219
228
|
return [rasterLayer, ...debugLayers];
|
|
220
229
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-tile-layer.js","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAO/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"raster-tile-layer.js","sourceRoot":"","sources":["../../src/raster-tile-layer/raster-tile-layer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAO/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAsH7D,MAAM,YAAY,GAAuC;IACvD,GAAG,SAAS,CAAC,YAAY;IACzB,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,KAAK;IACZ,YAAY,EAAE,GAAG;CAClB,CAAC;AAyBF;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,eAGX,SAAQ,cAA4D;IACpE,MAAM,CAAU,SAAS,GAAG,iBAAiB,CAAC;IAC9C,MAAM,CAAU,YAAY,GAAG,YAAY,CAAC;IAE5C;;;;;;;;;;;;OAYG;IACO,kBAAkB;QAC1B,OAAQ,IAAI,CAAC,KAAgD;aAC1D,iBAAiB,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACO,oBAAoB;QAC5B,OAAQ,IAAI,CAAC,KAAgD,CAAC,WAAW,CAAC;IAC5E,CAAC;IAED;;;;;OAKG;IACO,mBAAmB;QAC3B,OAAQ,IAAI,CAAC,KAAgD,CAAC,UAAU,CAAC;IAC3E,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACO,YAAY,CACpB,IAAyB,EACzB,KAAmB;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,uEAAuE;QACvE,2EAA2E;QAC3E,+DAA+D;QAC/D,OAAO,sBAAsB,CAC3B,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,SAAS,EAC9B,IAAgD,EAChD,UAAU,CAAC,aAAa,CACzB,CAAC;IACJ,CAAC;IAEQ,YAAY;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE9C,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IAEO,gBAAgB,CACtB,UAAmC,EACnC,WAAoE,EACpE,UAAkE;QAElE,iEAAiE;QACjE,gEAAgE;QAChE,oEAAoE;QACpE,oEAAoE;QACpE,2DAA2D;QAC3D,EAAE;QACF,iDAAiD;QACjD,8DAA8D;QAC9D,uDAAuD;QACvD,2DAA2D;QAC3D,wCAAwC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,MAAM,cAAe,SAAQ,eAAe;YAC1C,YAAY,IAAoB;gBAC9B,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE;oBACtB,aAAa,EAAE,GAAG,EAAE;wBAClB,MAAM,GAAG,GAAG,MAAM,CAAC,uBAAuB,EAAE,CAAC;wBAC7C,MAAM,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,oBAAoB,EAAE,CAAC;wBACxD,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;wBACpC,OAAO,QAAQ,CAAC,CAAC,CAAC,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;SACF;QAED,MAAM,EACJ,QAAQ,EACR,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,UAAU,EACV,YAAY,EACZ,cAAc,GACf,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,OAAO,IAAI,SAAS,CAAQ;YAC1B,EAAE,EAAE,qBAAqB,IAAI,CAAC,EAAE,EAAE;YAClC,YAAY,EAAE,cAAc;YAC5B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC;YAC/D,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CACzB,IAAI,CAAC,gBAAgB,CACnB,KAKC,EACD,UAAU,EACV,UAAU,CACX;YACH,cAAc,EAAE;gBACd,eAAe,EAAE,cAAc,EAAE,UAAU;aAC5C;YACD,QAAQ;YACR,UAAU;YACV,OAAO;YACP,OAAO;YACP,MAAM;YACN,YAAY;YACZ,YAAY;YACZ,gBAAgB;YAChB,WAAW;YACX,kBAAkB;YAClB,WAAW;YACX,UAAU;YACV,YAAY;YACZ,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,IAAmB,EACnB,WAAoE;QAEpE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GACV,UAAU,IAAI,UAAU;YACtB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;QACjC,MAAM,OAAO,GAAuB;YAClC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,MAAM;SACP,CAAC;QACF,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAEO,gBAAgB,CACtB,KAKC,EACD,UAAmC,EACnC,UAAkE;QAElE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAgD,CAAC;QAEpE,MAAM,WAAW,GAAG,KAAK;YACvB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;YAC7C,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,sEAAsE;QACtE,2CAA2C;QAC3C,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QACpD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;QAC7C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC;QAC/D,IAAI,eAAgC,CAAC;QACrC,IAAI,gBAAkC,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,aAAa;YACb,eAAe,GAAG;gBAChB,gBAAgB;gBAChB,gBAAgB;gBAChB,gBAAgB,EAAE,UAAU,CAAC,aAAa;gBAC1C,gBAAgB,EAAE,UAAU,CAAC,eAAe;aAC7C,CAAC;YACF,gBAAgB,GAAG,QAAQ,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,kEAAkE;YAClE,EAAE;YACF,wEAAwE;YACxE,sCAAsC;YACtC,EAAE;YACF,0EAA0E;YAC1E,0EAA0E;YAC1E,SAAS;YACT,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;YACtD,eAAe,GAAG;gBAChB,gBAAgB;gBAChB,gBAAgB;gBAChB,gBAAgB,EAAE,gBAAgB;gBAClC,gBAAgB,EAAE,kBAAkB;aACrC,CAAC;YACF,gBAAgB,GAAG,WAAW,CAAC;QACjC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,WAAW,CACjC,IAAI,CAAC,gBAAgB,CAAC;YACpB,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,SAAS;YACxB,KAAK;YACL,MAAM;YACN,sEAAsE;YACtE,sDAAsD;YACtD,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;YACrC,cAAc;YACd,QAAQ;YACR,eAAe;YACf,oEAAoE;YACpE,mEAAmE;YACnE,oBAAoB,EAAE,OAAO;gBAC3B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,gCAAgC;YACzC,KAAK;YACL,YAAY;YACZ,gBAAgB;SACjB,CAAC,CACH,CAAC;QACF,OAAO,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,CAAC;IACvC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Affine } from "@developmentseed/affine";
|
|
2
|
-
import type {
|
|
2
|
+
import type { RasterTilesetLevel } from "./tileset-interface.js";
|
|
3
3
|
import type { Bounds, Corners, ProjectionFunction } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* Constructor options for {@link AffineTilesetLevel}.
|
|
@@ -19,15 +19,15 @@ export interface AffineTilesetLevelOptions {
|
|
|
19
19
|
mpu: number;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* A {@link
|
|
22
|
+
* A {@link RasterTilesetLevel} described by a single affine transform plus tile and
|
|
23
23
|
* array sizes.
|
|
24
24
|
*
|
|
25
25
|
* This handles axis-aligned, rotated, skewed, and non-square-pixel grids
|
|
26
26
|
* uniformly. Sources that fit this shape (tiled GeoTIFF overviews, GeoZarr
|
|
27
27
|
* multiscales) can construct one of these per resolution level instead of
|
|
28
|
-
* implementing {@link
|
|
28
|
+
* implementing {@link RasterTilesetLevel} manually.
|
|
29
29
|
*/
|
|
30
|
-
export declare class AffineTilesetLevel implements
|
|
30
|
+
export declare class AffineTilesetLevel implements RasterTilesetLevel {
|
|
31
31
|
readonly tileWidth: number;
|
|
32
32
|
readonly tileHeight: number;
|
|
33
33
|
readonly matrixWidth: 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,
|
|
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,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,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,kBAAkB;IAC3D,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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as affine from "@developmentseed/affine";
|
|
2
2
|
/**
|
|
3
|
-
* A {@link
|
|
3
|
+
* A {@link RasterTilesetLevel} described by a single affine transform plus tile and
|
|
4
4
|
* array sizes.
|
|
5
5
|
*
|
|
6
6
|
* This handles axis-aligned, rotated, skewed, and non-square-pixel grids
|
|
7
7
|
* uniformly. Sources that fit this shape (tiled GeoTIFF overviews, GeoZarr
|
|
8
8
|
* multiscales) can construct one of these per resolution level instead of
|
|
9
|
-
* implementing {@link
|
|
9
|
+
* implementing {@link RasterTilesetLevel} manually.
|
|
10
10
|
*/
|
|
11
11
|
export class AffineTilesetLevel {
|
|
12
12
|
tileWidth;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AffineTilesetLevel } from "./affine-tileset-level.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { RasterTilesetDescriptor } from "./tileset-interface.js";
|
|
3
3
|
import type { Bounds, ProjectionFunction } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* Constructor options for {@link AffineTileset}.
|
|
@@ -17,12 +17,12 @@ export interface AffineTilesetOptions {
|
|
|
17
17
|
projectFrom4326: ProjectionFunction;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
* A {@link
|
|
20
|
+
* A {@link RasterTilesetDescriptor} backed by per-level affine transforms.
|
|
21
21
|
*
|
|
22
22
|
* Derives `projectedBounds` from the coarsest level's array. Everything else
|
|
23
23
|
* is passed through from the constructor options.
|
|
24
24
|
*/
|
|
25
|
-
export declare class AffineTileset implements
|
|
25
|
+
export declare class AffineTileset implements RasterTilesetDescriptor {
|
|
26
26
|
readonly levels: AffineTilesetLevel[];
|
|
27
27
|
readonly projectTo3857: ProjectionFunction;
|
|
28
28
|
readonly projectFrom3857: ProjectionFunction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affine-tileset.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/affine-tileset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"affine-tileset.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/affine-tileset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,gEAAgE;IAChE,aAAa,EAAE,kBAAkB,CAAC;IAClC,gEAAgE;IAChE,eAAe,EAAE,kBAAkB,CAAC;IACpC,gEAAgE;IAChE,aAAa,EAAE,kBAAkB,CAAC;IAClC,gEAAgE;IAChE,eAAe,EAAE,kBAAkB,CAAC;CACrC;AAED;;;;;GAKG;AACH,qBAAa,aAAc,YAAW,uBAAuB;IAC3D,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAErB,OAAO,EAAE,oBAAoB;CAW1C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A {@link
|
|
2
|
+
* A {@link RasterTilesetDescriptor} backed by per-level affine transforms.
|
|
3
3
|
*
|
|
4
4
|
* Derives `projectedBounds` from the coarsest level's array. Everything else
|
|
5
5
|
* is passed through from the constructor options.
|
|
@@ -34,10 +34,11 @@ export interface BoundingVolumeCacheOptions {
|
|
|
34
34
|
* `(z, x, y, zRange)` for a given tileset descriptor, so it is safe to memoize
|
|
35
35
|
* across `getTileIndices` calls (i.e. across animation frames).
|
|
36
36
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
37
|
+
* The key is valid only within a single projection mode. A tile's bounding
|
|
38
|
+
* volume is computed in a different common space under a GlobeView than under
|
|
39
|
+
* Web Mercator, so the cache must be {@link BoundingVolumeCache.clear cleared}
|
|
40
|
+
* when the viewport's projection mode changes. `RasterTileset2D` owns the cache
|
|
41
|
+
* and does this in `getTileIndices` when it detects a globe↔mercator switch.
|
|
41
42
|
*/
|
|
42
43
|
export declare class BoundingVolumeCache {
|
|
43
44
|
private entries;
|
|
@@ -52,6 +53,12 @@ export declare class BoundingVolumeCache {
|
|
|
52
53
|
get(z: number, x: number, y: number): BoundingVolumeCacheEntry | undefined;
|
|
53
54
|
/** Store the bounding volume for tile `(z, x, y)` as most-recently-used. */
|
|
54
55
|
set(z: number, x: number, y: number, entry: BoundingVolumeCacheEntry): void;
|
|
56
|
+
/**
|
|
57
|
+
* Drop all cached entries. Called by the owner when the viewport's projection
|
|
58
|
+
* mode changes (globe↔mercator), since volumes computed under one projection
|
|
59
|
+
* are not valid under the other.
|
|
60
|
+
*/
|
|
61
|
+
clear(): void;
|
|
55
62
|
/**
|
|
56
63
|
* If the cache is over its soft cap, drop least-recently-used entries down to
|
|
57
64
|
* roughly half of `maxEntries`. No-op when at or under the cap. Call once at
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;GAcG;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;IAIb;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAiBd"}
|
|
@@ -8,10 +8,11 @@ const DEFAULT_MAX_ENTRIES = 65_536;
|
|
|
8
8
|
* `(z, x, y, zRange)` for a given tileset descriptor, so it is safe to memoize
|
|
9
9
|
* across `getTileIndices` calls (i.e. across animation frames).
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* The key is valid only within a single projection mode. A tile's bounding
|
|
12
|
+
* volume is computed in a different common space under a GlobeView than under
|
|
13
|
+
* Web Mercator, so the cache must be {@link BoundingVolumeCache.clear cleared}
|
|
14
|
+
* when the viewport's projection mode changes. `RasterTileset2D` owns the cache
|
|
15
|
+
* and does this in `getTileIndices` when it detects a globe↔mercator switch.
|
|
15
16
|
*/
|
|
16
17
|
export class BoundingVolumeCache {
|
|
17
18
|
entries = new Map();
|
|
@@ -44,6 +45,14 @@ export class BoundingVolumeCache {
|
|
|
44
45
|
this.entries.delete(key);
|
|
45
46
|
this.entries.set(key, entry);
|
|
46
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Drop all cached entries. Called by the owner when the viewport's projection
|
|
50
|
+
* mode changes (globe↔mercator), since volumes computed under one projection
|
|
51
|
+
* are not valid under the other.
|
|
52
|
+
*/
|
|
53
|
+
clear() {
|
|
54
|
+
this.entries.clear();
|
|
55
|
+
}
|
|
47
56
|
/**
|
|
48
57
|
* If the cache is over its soft cap, drop least-recently-used entries down to
|
|
49
58
|
* roughly half of `maxEntries`. No-op when at or under the cap. Call once at
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;GAcG;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,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,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"}
|
|
@@ -2,9 +2,10 @@ export type { AffineTilesetOptions } from "./affine-tileset.js";
|
|
|
2
2
|
export { AffineTileset } from "./affine-tileset.js";
|
|
3
3
|
export type { AffineTilesetLevelOptions } from "./affine-tileset-level.js";
|
|
4
4
|
export { AffineTilesetLevel } from "./affine-tileset-level.js";
|
|
5
|
-
export type {
|
|
5
|
+
export type { RasterTileMetadata } from "./raster-tileset-2d.js";
|
|
6
6
|
export { RasterTileset2D } from "./raster-tileset-2d.js";
|
|
7
|
+
export { sortItemsByDistanceFromViewportCenter } from "./sort-by-distance.js";
|
|
7
8
|
export { TileMatrixSetAdaptor } from "./tile-matrix-set.js";
|
|
8
|
-
export type {
|
|
9
|
+
export type { RasterTilesetDescriptor, RasterTilesetLevel, } from "./tileset-interface.js";
|
|
9
10
|
export type { Bounds, CornerBounds, Corners, ProjectionFunction, } from "./types.js";
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|