@developmentseed/deck.gl-geotiff 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.
Files changed (37) hide show
  1. package/dist/cog-layer.d.ts +22 -5
  2. package/dist/cog-layer.d.ts.map +1 -1
  3. package/dist/cog-layer.js +25 -2
  4. package/dist/cog-layer.js.map +1 -1
  5. package/dist/default-concurrency-limiter.d.ts +10 -0
  6. package/dist/default-concurrency-limiter.d.ts.map +1 -0
  7. package/dist/default-concurrency-limiter.js +12 -0
  8. package/dist/default-concurrency-limiter.js.map +1 -0
  9. package/dist/geotiff/geotiff.d.ts +6 -2
  10. package/dist/geotiff/geotiff.d.ts.map +1 -1
  11. package/dist/geotiff/geotiff.js +2 -2
  12. package/dist/geotiff/geotiff.js.map +1 -1
  13. package/dist/index.d.ts +3 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/mosaic-layer/mosaic-layer.d.ts +63 -4
  18. package/dist/mosaic-layer/mosaic-layer.d.ts.map +1 -1
  19. package/dist/mosaic-layer/mosaic-layer.js +127 -14
  20. package/dist/mosaic-layer/mosaic-layer.js.map +1 -1
  21. package/dist/mosaic-layer/mosaic-tileset-2d.d.ts +7 -16
  22. package/dist/mosaic-layer/mosaic-tileset-2d.d.ts.map +1 -1
  23. package/dist/mosaic-layer/mosaic-tileset-2d.js +34 -54
  24. package/dist/mosaic-layer/mosaic-tileset-2d.js.map +1 -1
  25. package/dist/multi-cog-layer.d.ts +23 -10
  26. package/dist/multi-cog-layer.d.ts.map +1 -1
  27. package/dist/multi-cog-layer.js +58 -15
  28. package/dist/multi-cog-layer.js.map +1 -1
  29. package/package.json +10 -10
  30. package/dist/geotiff-layer.d.ts +0 -90
  31. package/dist/geotiff-layer.d.ts.map +0 -1
  32. package/dist/geotiff-layer.js +0 -81
  33. package/dist/geotiff-layer.js.map +0 -1
  34. package/dist/geotiff-reprojection.d.ts +0 -13
  35. package/dist/geotiff-reprojection.d.ts.map +0 -1
  36. package/dist/geotiff-reprojection.js +0 -26
  37. package/dist/geotiff-reprojection.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import type { UpdateParameters } from "@deck.gl/core";
2
- import type { MinimalTileData, GetTileDataOptions as RasterTileGetTileDataOptions, RasterTileLayerProps, RenderTileResult, TilesetDescriptor } from "@developmentseed/deck.gl-raster";
1
+ import type { LayerContext, UpdateParameters } from "@deck.gl/core";
2
+ import type { MinimalTileData, GetTileDataOptions as RasterTileGetTileDataOptions, RasterTileLayerProps, RasterTilesetDescriptor, RenderTileResult } from "@developmentseed/deck.gl-raster";
3
3
  import { RasterTileLayer } from "@developmentseed/deck.gl-raster";
4
- import type { DecoderPool, GeoTIFF, Overview } from "@developmentseed/geotiff";
4
+ import type { ConcurrencyLimiter, DecoderPool, GeoTIFF, Overview } from "@developmentseed/geotiff";
5
5
  import type { EpsgResolver, ProjectionDefinition } from "@developmentseed/proj";
6
6
  import type { Texture } from "@luma.gl/core";
7
7
  import type { TextureDataT } from "./geotiff/render-pipeline.js";
@@ -92,6 +92,18 @@ export type COGLayerProps<DataT extends MinimalTileData = DefaultDataT> = Omit<R
92
92
  * automatically aborted.
93
93
  */
94
94
  signal?: AbortSignal;
95
+ /**
96
+ * Caps concurrent HTTP requests for this layer's source fetches.
97
+ *
98
+ * Defaults to a maximum of 6 concurrent requests per origin, which aligns
99
+ * with browser limits of 6 HTTP/1.1 requests per origin. If your sources
100
+ * support HTTP/2 or HTTP/3, you may want to increase this limit or disable
101
+ * it entirely by passing `null`.
102
+ *
103
+ * Ignored when `geotiff` is a pre-opened `GeoTIFF` instance — wire the
104
+ * limiter via {@link GeoTIFF.fromUrl} at construction time instead.
105
+ */
106
+ concurrencyLimiter?: ConcurrencyLimiter | null;
95
107
  };
96
108
  /**
97
109
  * COGLayer renders a COG using a tiled approach with reprojection.
@@ -101,15 +113,20 @@ export declare class COGLayer<DataT extends MinimalTileData = DefaultDataT> exte
101
113
  static defaultProps: typeof RasterTileLayer.defaultProps;
102
114
  state: {
103
115
  geotiff?: GeoTIFF;
104
- tilesetDescriptor?: TilesetDescriptor;
116
+ tilesetDescriptor?: RasterTilesetDescriptor;
105
117
  defaultGetTileData?: COGLayerProps<TextureDataT>["getTileData"];
106
118
  defaultRenderTile?: COGLayerProps<TextureDataT>["renderTile"];
119
+ /** Aborts the in-flight header read when the `geotiff` prop changes or the
120
+ * layer is removed
121
+ */
122
+ abortController?: AbortController;
107
123
  };
108
124
  initializeState(): void;
125
+ finalizeState(context: LayerContext): void;
109
126
  updateState(params: UpdateParameters<this>): void;
110
127
  clearState(): void;
111
128
  _parseGeoTIFF(): Promise<void>;
112
- protected _tilesetDescriptor(): TilesetDescriptor | undefined;
129
+ protected _tilesetDescriptor(): RasterTilesetDescriptor | undefined;
113
130
  /**
114
131
  * Adapts the user-facing `(image, { x, y, ... }) => Promise<DataT>` signature
115
132
  * into RasterTileLayer's `(tile, { signal, device }) => Promise<DataT>`.
@@ -1 +1 @@
1
- {"version":3,"file":"cog-layer.d.ts","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cog-layer.d.ts","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
package/dist/cog-layer.js CHANGED
@@ -2,6 +2,7 @@ import { RasterTileLayer } from "@developmentseed/deck.gl-raster";
2
2
  import { defaultDecoderPool } from "@developmentseed/geotiff";
3
3
  import { epsgResolver, makeClampedForwardTo3857, metersPerUnit, parseWkt, } from "@developmentseed/proj";
4
4
  import proj4 from "proj4";
5
+ import { DEFAULT_CONCURRENCY_LIMITER } from "./default-concurrency-limiter.js";
5
6
  import { fetchGeoTIFF, getGeographicBounds } from "./geotiff/geotiff.js";
6
7
  import { inferRenderPipeline } from "./geotiff/render-pipeline.js";
7
8
  import { geoTiffToDescriptor } from "./geotiff-tileset.js";
@@ -18,9 +19,14 @@ export class COGLayer extends RasterTileLayer {
18
19
  static defaultProps = {
19
20
  ...RasterTileLayer.defaultProps,
20
21
  epsgResolver,
22
+ concurrencyLimiter: DEFAULT_CONCURRENCY_LIMITER,
21
23
  };
22
24
  initializeState() {
23
- this.setState({});
25
+ this.setState({ abortController: new AbortController() });
26
+ }
27
+ finalizeState(context) {
28
+ this.state.abortController?.abort();
29
+ super.finalizeState(context);
24
30
  }
25
31
  updateState(params) {
26
32
  super.updateState(params);
@@ -42,11 +48,28 @@ export class COGLayer extends RasterTileLayer {
42
48
  });
43
49
  }
44
50
  async _parseGeoTIFF() {
45
- const geotiff = await fetchGeoTIFF(this.props.geotiff);
51
+ const signal = this.state.abortController?.signal;
52
+ let geotiff;
53
+ try {
54
+ geotiff = await fetchGeoTIFF(this.props.geotiff, {
55
+ concurrencyLimiter: this.props.concurrencyLimiter,
56
+ signal,
57
+ });
58
+ }
59
+ catch (err) {
60
+ // Layer removed mid-open (finalizeState aborted the signal); drop it.
61
+ if (signal?.aborted) {
62
+ return;
63
+ }
64
+ throw err;
65
+ }
46
66
  const crs = geotiff.crs;
47
67
  const sourceProjection = typeof crs === "number"
48
68
  ? await this.props.epsgResolver(crs)
49
69
  : parseWkt(crs);
70
+ if (signal?.aborted) {
71
+ return;
72
+ }
50
73
  // @ts-expect-error - proj4 typings are incomplete and don't support
51
74
  // wkt-parser input
52
75
  const converter4326 = proj4(sourceProjection, "EPSG:4326");
@@ -1 +1 @@
1
- {"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { PerOriginSemaphore } from "@developmentseed/geotiff";
2
+ /**
3
+ * Shared default concurrency limiter for every COGLayer / MultiCOGLayer that
4
+ * doesn't override its `concurrencyLimiter` prop. A single module-level
5
+ * `PerOriginSemaphore({ maxRequests: 6 })` so two layers fetching from the
6
+ * same origin (e.g. the same S3 bucket) share *one* HTTP/1.1 connection
7
+ * pool. The cap matches Chrome's default per-origin HTTP/1.1 limit.
8
+ */
9
+ export declare const DEFAULT_CONCURRENCY_LIMITER: PerOriginSemaphore;
10
+ //# sourceMappingURL=default-concurrency-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-concurrency-limiter.d.ts","sourceRoot":"","sources":["../src/default-concurrency-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,oBAEtC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { PerOriginSemaphore } from "@developmentseed/geotiff";
2
+ /**
3
+ * Shared default concurrency limiter for every COGLayer / MultiCOGLayer that
4
+ * doesn't override its `concurrencyLimiter` prop. A single module-level
5
+ * `PerOriginSemaphore({ maxRequests: 6 })` so two layers fetching from the
6
+ * same origin (e.g. the same S3 bucket) share *one* HTTP/1.1 connection
7
+ * pool. The cap matches Chrome's default per-origin HTTP/1.1 limit.
8
+ */
9
+ export const DEFAULT_CONCURRENCY_LIMITER = new PerOriginSemaphore({
10
+ maxRequests: 6,
11
+ });
12
+ //# sourceMappingURL=default-concurrency-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-concurrency-limiter.js","sourceRoot":"","sources":["../src/default-concurrency-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,kBAAkB,CAAC;IAChE,WAAW,EAAE,CAAC;CACf,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { RasterArray } from "@developmentseed/geotiff";
1
+ import type { ConcurrencyLimiter, Priority, RasterArray } from "@developmentseed/geotiff";
2
2
  import { GeoTIFF } from "@developmentseed/geotiff";
3
3
  import type { Converter } from "proj4";
4
4
  /**
@@ -8,7 +8,11 @@ import type { Converter } from "proj4";
8
8
  * already RGBA, it is returned unchanged.
9
9
  */
10
10
  export declare function addAlphaChannel(rgbImage: RasterArray): RasterArray;
11
- export declare function fetchGeoTIFF(input: GeoTIFF | string | URL | ArrayBuffer): Promise<GeoTIFF>;
11
+ export declare function fetchGeoTIFF(input: GeoTIFF | string | URL | ArrayBuffer, options?: {
12
+ concurrencyLimiter?: ConcurrencyLimiter | null;
13
+ getPriority?: () => Priority;
14
+ signal?: AbortSignal;
15
+ }): Promise<GeoTIFF>;
12
16
  /**
13
17
  * Calculate the WGS84 bounding box of a GeoTIFF image
14
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"geotiff.d.ts","sourceRoot":"","sources":["../../src/geotiff/geotiff.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAwClE;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,WAAW,GAC1C,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsB9D"}
1
+ {"version":3,"file":"geotiff.d.ts","sourceRoot":"","sources":["../../src/geotiff/geotiff.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAwClE;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,WAAW,EAC3C,OAAO,GAAE;IACP,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,QAAQ,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;CACjB,GACL,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsB9D"}
@@ -43,9 +43,9 @@ export function addAlphaChannel(rgbImage) {
43
43
  throw new Error(`Unexpected number of channels in raster data: ${rgbImage.data.length / (height * width)}`);
44
44
  }
45
45
  }
46
- export async function fetchGeoTIFF(input) {
46
+ export async function fetchGeoTIFF(input, options = {}) {
47
47
  if (typeof input === "string" || input instanceof URL) {
48
- return await GeoTIFF.fromUrl(input);
48
+ return await GeoTIFF.fromUrl(input, options);
49
49
  }
50
50
  if (input instanceof ArrayBuffer) {
51
51
  return await GeoTIFF.fromArrayBuffer(input);
@@ -1 +1 @@
1
- {"version":3,"file":"geotiff.js","sourceRoot":"","sources":["../../src/geotiff/geotiff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geotiff.js","sourceRoot":"","sources":["../../src/geotiff/geotiff.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- export type { COGLayerProps, GetTileDataOptions, MinimalTileData, } from "./cog-layer.js";
1
+ export type { COGLayerProps, GetTileDataOptions, } from "./cog-layer.js";
2
2
  export { COGLayer } from "./cog-layer.js";
3
+ export { DEFAULT_CONCURRENCY_LIMITER } from "./default-concurrency-limiter.js";
3
4
  export { addAlphaChannel } from "./geotiff/geotiff.js";
4
5
  export * as texture from "./geotiff/texture.js";
5
6
  export type { MosaicLayerProps } from "./mosaic-layer/mosaic-layer.js";
6
7
  export { MosaicLayer } from "./mosaic-layer/mosaic-layer.js";
7
- export { type MosaicSource, MosaicTileset2D, } from "./mosaic-layer/mosaic-tileset-2d.js";
8
+ export type { MosaicSource } from "./mosaic-layer/mosaic-tileset-2d.js";
8
9
  export type { MultiCOGLayerProps, MultiCOGSourceConfig, } from "./multi-cog-layer.js";
9
10
  export { MultiCOGLayer } from "./multi-cog-layer.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EACL,KAAK,YAAY,EACjB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAI7C,YAAY,EACV,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,YAAY,EACV,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { COGLayer } from "./cog-layer.js";
2
+ export { DEFAULT_CONCURRENCY_LIMITER } from "./default-concurrency-limiter.js";
2
3
  export { addAlphaChannel } from "./geotiff/geotiff.js";
3
4
  export * as texture from "./geotiff/texture.js";
4
5
  export { MosaicLayer } from "./mosaic-layer/mosaic-layer.js";
5
- export { MosaicTileset2D, } from "./mosaic-layer/mosaic-tileset-2d.js";
6
6
  export { MultiCOGLayer } from "./multi-cog-layer.js";
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAEL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAQ7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAM7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,9 +1,11 @@
1
- import type { CompositeLayerProps, Layer, LayersList } from "@deck.gl/core";
1
+ import type { CompositeLayerProps, Layer, LayerContext, LayersList, UpdateParameters } from "@deck.gl/core";
2
2
  import { CompositeLayer } from "@deck.gl/core";
3
3
  import type { TileLayerProps } from "@deck.gl/geo-layers";
4
4
  import { TileLayer } from "@deck.gl/geo-layers";
5
+ import type { ConcurrencyLimiter, Priority } from "@developmentseed/geotiff";
6
+ import Flatbush from "flatbush";
5
7
  import type { MosaicSource } from "./mosaic-tileset-2d.js";
6
- export type MosaicLayerProps<MosaicT extends MosaicSource = MosaicSource, DataT = any> = CompositeLayerProps & Pick<TileLayerProps, "extent" | "minZoom" | "maxZoom" | "maxCacheByteSize" | "maxCacheSize" | "maxRequests"> & {
8
+ export type MosaicLayerProps<MosaicT extends MosaicSource = MosaicSource, DataT = any> = CompositeLayerProps & Pick<TileLayerProps, "extent" | "maxCacheByteSize" | "maxCacheSize" | "maxRequests" | "maxZoom" | "minZoom"> & {
7
9
  /**
8
10
  * List of mosaic sources to render.
9
11
  *
@@ -14,25 +16,76 @@ export type MosaicLayerProps<MosaicT extends MosaicSource = MosaicSource, DataT
14
16
  *
15
17
  * Tile cache reuse depends on stable tile IDs. By default, each source's
16
18
  * tile ID is derived from its position in this array (see
17
- * `MosaicSource.key`), so:
19
+ * `MosaicSource.id`), so:
18
20
  *
19
21
  * - Appending items preserves all existing rendered tiles.
20
22
  * - Reordering or removing items from the middle of the array invalidates
21
23
  * the cache slots of shifted items, causing them to re-fetch.
22
24
  *
23
- * Supply an explicit `key` per source if you need cache stability across
25
+ * Supply an explicit `id` per source if you need cache stability across
24
26
  * arbitrary mutations of `sources`.
25
27
  */
26
28
  sources: MosaicT[];
29
+ /**
30
+ * Caps concurrent HTTP requests for this layer's source fetches.
31
+ *
32
+ * Defaults to a maximum of 6 concurrent requests per origin, which aligns
33
+ * with browser limits of 6 HTTP/1.1 requests per origin. If your sources
34
+ * support HTTP/2 or HTTP/3, you may want to increase this limit or disable
35
+ * it entirely by passing `null`.
36
+ */
37
+ concurrencyLimiter?: ConcurrencyLimiter | null;
27
38
  /** Fetch data for this source. */
28
39
  getSource?: (source: MosaicT, opts: {
29
40
  signal?: AbortSignal;
41
+ /**
42
+ * The layer's current `concurrencyLimiter` prop. Forward to
43
+ * {@link GeoTIFF.fromUrl}'s `concurrencyLimiter` option so this
44
+ * source's fetches join the shared per-origin queue.
45
+ */
46
+ concurrencyLimiter?: ConcurrencyLimiter | null;
47
+ /**
48
+ * Callback that provides dynamic priority for fetches related to this
49
+ * source.
50
+ *
51
+ * This is designed to re-sort the limiter's queue on viewport pan,
52
+ * preferring sources closer to the viewport center.
53
+ */
54
+ getPriority?: () => Priority;
30
55
  }) => Promise<DataT>;
31
56
  /** Render a source */
32
57
  renderSource: (source: MosaicT, opts: {
33
58
  data?: DataT;
34
59
  signal?: AbortSignal;
35
60
  }) => Layer | LayersList | null;
61
+ /**
62
+ * Called after a source's data has loaded successfully. `data` is the
63
+ * value returned by `getSource`, or `undefined` when no `getSource` was
64
+ * supplied.
65
+ */
66
+ onSourceLoad?: (source: MosaicT, info: {
67
+ data?: DataT;
68
+ }) => void;
69
+ /**
70
+ * Called when fetching a source's data fails.
71
+ */
72
+ onSourceError?: (source: MosaicT, info: {
73
+ error: Error;
74
+ }) => void;
75
+ /**
76
+ * Called when a source is evicted from the tile cache.
77
+ */
78
+ onSourceUnload?: (source: MosaicT, info: {
79
+ data?: DataT;
80
+ }) => void;
81
+ /**
82
+ * Called when all sources currently in the viewport have finished
83
+ * loading.
84
+ */
85
+ onViewportLoad?: (entries: Array<{
86
+ source: MosaicT;
87
+ data?: DataT;
88
+ }>) => void;
36
89
  };
37
90
  /**
38
91
  * A deck.gl layer for rendering a mosaic of raster sources.
@@ -43,6 +96,12 @@ export type MosaicLayerProps<MosaicT extends MosaicSource = MosaicSource, DataT
43
96
  export declare class MosaicLayer<MosaicT extends MosaicSource = MosaicSource, DataT = any> extends CompositeLayer<MosaicLayerProps<MosaicT, DataT>> {
44
97
  static layerName: string;
45
98
  static defaultProps: Partial<MosaicLayerProps<MosaicSource, any>>;
99
+ state: {
100
+ index: Flatbush | null;
101
+ };
102
+ initializeState(context: LayerContext): void;
103
+ updateState(params: UpdateParameters<this>): void;
104
+ private _buildSpatialIndex;
46
105
  renderTileLayer(renderSource: MosaicLayerProps<MosaicT, DataT>["renderSource"]): TileLayer;
47
106
  renderLayers(): Layer | null | LayersList;
48
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mosaic-layer.d.ts","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,gBAAgB,CAC1B,OAAO,SAAS,YAAY,GAAG,YAAY,EAC3C,KAAK,GAAG,GAAG,IACT,mBAAmB,GACrB,IAAI,CACF,cAAc,EACZ,QAAQ,GACR,SAAS,GACT,SAAS,GACT,kBAAkB,GAClB,cAAc,GACd,aAAa,CAChB,GAAG;IACF;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,EAAE,OAAO,EAAE,CAAC;IAEnB,kCAAkC;IAClC,SAAS,CAAC,EAAE,CACV,MAAM,EAAE,OAAO,EACf,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpB,sBAAsB;IACtB,YAAY,EAAE,CACZ,MAAM,EAAE,OAAO,EACf,IAAI,EAAE;QACJ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,KACE,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;CAChC,CAAC;AAIJ;;;;;GAKG;AACH,qBAAa,WAAW,CACtB,OAAO,SAAS,YAAY,GAAG,YAAY,EAC3C,KAAK,GAAG,GAAG,CACX,SAAQ,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxD,OAAgB,SAAS,SAAiB;IAC1C,OAAgB,YAAY,+CAAgB;IAE5C,eAAe,CACb,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,cAAc,CAAC,GAC7D,SAAS;IA0DH,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;CAYnD"}
1
+ {"version":3,"file":"mosaic-layer.d.ts","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-layer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,42 @@
1
- import { CompositeLayer } from "@deck.gl/core";
1
+ import { _GlobeViewport, CompositeLayer, WebMercatorViewport, } from "@deck.gl/core";
2
2
  import { TileLayer } from "@deck.gl/geo-layers";
3
+ import Flatbush from "flatbush";
4
+ import { DEFAULT_CONCURRENCY_LIMITER } from "../default-concurrency-limiter.js";
3
5
  import { MosaicTileset2D } from "./mosaic-tileset-2d.js";
4
- const defaultProps = {};
6
+ const defaultProps = {
7
+ concurrencyLimiter: DEFAULT_CONCURRENCY_LIMITER,
8
+ sources: [],
9
+ };
10
+ /**
11
+ * Build the limiter `getPriority` callback for one mosaic source: euclidean
12
+ * distance from the source's bbox center to the current viewport center, in
13
+ * lon/lat degree-space (just an ordering key — great-circle isn't needed).
14
+ *
15
+ * `getViewport` is read on every call, so the limiter re-sorts its queue as
16
+ * the viewport pans, pulling newly-central sources ahead of edge sources.
17
+ *
18
+ * Returns `undefined` for non-geographic viewports — where the source bbox and
19
+ * viewport center don't share a coordinate space — so the limiter falls back
20
+ * to FIFO instead of comparing mismatched units. The viewport type is checked
21
+ * once here; it isn't expected to change under the layer.
22
+ */
23
+ function createGetPriorityCallback(bbox, getViewport) {
24
+ const viewport = getViewport();
25
+ if (!(viewport instanceof WebMercatorViewport) &&
26
+ !(viewport instanceof _GlobeViewport)) {
27
+ return undefined;
28
+ }
29
+ const [minX, minY, maxX, maxY] = bbox;
30
+ const sourceCx = (minX + maxX) / 2;
31
+ const sourceCy = (minY + maxY) / 2;
32
+ return () => {
33
+ // Geographic viewport (checked above); both types expose lon/lat.
34
+ const v = getViewport();
35
+ const dx = sourceCx - v.longitude;
36
+ const dy = sourceCy - v.latitude;
37
+ return Math.hypot(dx, dy);
38
+ };
39
+ }
5
40
  /**
6
41
  * A deck.gl layer for rendering a mosaic of raster sources.
7
42
  *
@@ -11,34 +46,66 @@ const defaultProps = {};
11
46
  export class MosaicLayer extends CompositeLayer {
12
47
  static layerName = "MosaicLayer";
13
48
  static defaultProps = defaultProps;
49
+ initializeState(context) {
50
+ super.initializeState(context);
51
+ this._buildSpatialIndex();
52
+ }
53
+ updateState(params) {
54
+ super.updateState(params);
55
+ const { props, oldProps } = params;
56
+ if (props.sources !== oldProps.sources) {
57
+ this._buildSpatialIndex();
58
+ }
59
+ }
60
+ _buildSpatialIndex() {
61
+ const { sources } = this.props;
62
+ if (sources.length === 0) {
63
+ this.setState({ index: null });
64
+ return;
65
+ }
66
+ const index = new Flatbush(sources.length);
67
+ for (const source of sources) {
68
+ index.add(...source.bbox);
69
+ }
70
+ index.finish();
71
+ this.setState({ index });
72
+ }
14
73
  renderTileLayer(renderSource) {
15
- const { id, minZoom, maxZoom, extent, maxCacheByteSize, maxCacheSize, maxRequests, } = this.props;
16
- // The arrow function is defined here so its lexical `this` is the
17
- // MosaicLayer instance (which deck.gl reuses across prop updates),
18
- // ensuring `this.props.sources` returns the latest array on every call.
74
+ const { id, concurrencyLimiter, extent, maxCacheByteSize, maxCacheSize, maxRequests, maxZoom, minZoom, onSourceLoad, onSourceError, onSourceUnload, onViewportLoad, } = this.props;
75
+ // Arrow functions bind to the MosaicLayer instance, which deck.gl reuses
76
+ // across prop updates — so `this.props` and `this.state` always reflect
77
+ // the latest values when the tileset reads them.
19
78
  const getSources = () => this.props.sources;
79
+ const getIndex = () => this.state.index;
20
80
  class MosaicTileset2DFactory extends MosaicTileset2D {
21
81
  constructor(opts) {
22
- super(getSources, opts);
82
+ super(getSources, getIndex, opts);
23
83
  }
24
84
  }
25
85
  return new TileLayer({
26
86
  id: `mosaic-layer-${id}`,
27
87
  TilesetClass: MosaicTileset2DFactory,
28
- minZoom,
29
- maxZoom,
30
- extent,
31
- ...(maxCacheByteSize !== undefined && { maxCacheByteSize }),
32
- maxCacheSize,
33
- maxRequests,
88
+ ...omitUndefined({
89
+ minZoom,
90
+ maxZoom,
91
+ extent,
92
+ maxCacheByteSize,
93
+ maxCacheSize,
94
+ maxRequests,
95
+ }),
34
96
  getTileData: async (data) => {
35
97
  // We hard-cast this because TilesetClass is not generic.
36
98
  // MosaicTileset2D returns MosaicT in `index`, but TileLayer's typing
37
99
  // exposes only the plain `TileIndex` here.
38
100
  const index = data.index;
39
101
  const { signal } = data;
102
+ const getPriority = createGetPriorityCallback(index.bbox, () => this.context.viewport);
40
103
  const userData = this.props.getSource &&
41
- (await this.props.getSource(index, { signal }));
104
+ (await this.props.getSource(index, {
105
+ signal,
106
+ concurrencyLimiter,
107
+ getPriority,
108
+ }));
42
109
  return {
43
110
  source: index,
44
111
  data: userData,
@@ -50,6 +117,38 @@ export class MosaicLayer extends CompositeLayer {
50
117
  const { source, signal, data: userData } = data;
51
118
  return renderSource(source, { data: userData, signal });
52
119
  },
120
+ ...(onSourceLoad && {
121
+ onTileLoad: (tile) => {
122
+ // `tile.index` is a `ResolvedSource<MosaicT>` from
123
+ // MosaicTileset2D.getTileIndices, which structurally extends
124
+ // MosaicT.
125
+ const source = tile.index;
126
+ onSourceLoad(source, { data: tile.content?.data });
127
+ },
128
+ }),
129
+ ...(onSourceError && {
130
+ onTileError: (error, tile) => {
131
+ if (!tile) {
132
+ return;
133
+ }
134
+ const source = tile.index;
135
+ onSourceError(source, { error });
136
+ },
137
+ }),
138
+ ...(onSourceUnload && {
139
+ onTileUnload: (tile) => {
140
+ const source = tile.index;
141
+ onSourceUnload(source, { data: tile.content?.data });
142
+ },
143
+ }),
144
+ ...(onViewportLoad && {
145
+ onViewportLoad: (tiles) => {
146
+ onViewportLoad(tiles.map((tile) => ({
147
+ source: tile.index,
148
+ data: tile.content?.data,
149
+ })));
150
+ },
151
+ }),
53
152
  });
54
153
  }
55
154
  renderLayers() {
@@ -63,4 +162,18 @@ export class MosaicLayer extends CompositeLayer {
63
162
  return this.renderTileLayer(renderSource);
64
163
  }
65
164
  }
165
+ /**
166
+ * Drop keys whose value is `undefined`.
167
+ *
168
+ * Passing down an explicit `undefined` will override any default prop values.
169
+ */
170
+ function omitUndefined(obj) {
171
+ const result = {};
172
+ for (const key in obj) {
173
+ if (obj[key] !== undefined) {
174
+ result[key] = obj[key];
175
+ }
176
+ }
177
+ return result;
178
+ }
66
179
  //# sourceMappingURL=mosaic-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mosaic-layer.js","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-layer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAoDzD,MAAM,YAAY,GAA8B,EAAE,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,OAAO,WAGX,SAAQ,cAAgD;IACxD,MAAM,CAAU,SAAS,GAAG,aAAa,CAAC;IAC1C,MAAM,CAAU,YAAY,GAAG,YAAY,CAAC;IAE5C,eAAe,CACb,YAA8D;QAE9D,MAAM,EACJ,EAAE,EACF,OAAO,EACP,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,kEAAkE;QAClE,mEAAmE;QACnE,wEAAwE;QACxE,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5C,MAAM,sBAAuB,SAAQ,eAAwB;YAC3D,YAAY,IAAS;gBACnB,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC1B,CAAC;SACF;QAED,OAAO,IAAI,SAAS,CAIjB;YACD,EAAE,EAAE,gBAAgB,EAAE,EAAE;YACxB,YAAY,EAAE,sBAAsB;YACpC,OAAO;YACP,OAAO;YACP,MAAM;YACN,GAAG,CAAC,gBAAgB,KAAK,SAAS,IAAI,EAAE,gBAAgB,EAAE,CAAC;YAC3D,YAAY;YACZ,WAAW;YACX,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC1B,yDAAyD;gBACzD,qEAAqE;gBACrE,2CAA2C;gBAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAA2B,CAAC;gBAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBACxB,MAAM,QAAQ,GACZ,IAAI,CAAC,KAAK,CAAC,SAAS;oBACpB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBAElD,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,QAAQ;oBACd,MAAM;iBACP,CAAC;YACJ,CAAC;YACD,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;gBACzB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;gBACvB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;gBAChD,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEQ,YAAY;QACnB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0EAA0E;QAC1E,uEAAuE;QACvE,6DAA6D;QAC7D,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC"}
1
+ {"version":3,"file":"mosaic-layer.js","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-layer.ts"],"names":[],"mappings":"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"}