@developmentseed/deck.gl-geotiff 0.3.0-beta.3 → 0.4.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/README.md +33 -4
- package/dist/cog-layer.d.ts +42 -29
- package/dist/cog-layer.d.ts.map +1 -1
- package/dist/cog-layer.js +146 -38
- package/dist/cog-layer.js.map +1 -1
- package/dist/geotiff/geotiff.d.ts.map +1 -1
- package/dist/geotiff/geotiff.js +6 -2
- package/dist/geotiff/geotiff.js.map +1 -1
- package/dist/geotiff/render-pipeline.d.ts +7 -4
- package/dist/geotiff/render-pipeline.d.ts.map +1 -1
- package/dist/geotiff/render-pipeline.js +119 -16
- package/dist/geotiff/render-pipeline.js.map +1 -1
- package/dist/geotiff-layer.d.ts +5 -4
- package/dist/geotiff-layer.d.ts.map +1 -1
- package/dist/geotiff-layer.js.map +1 -1
- package/dist/geotiff-reprojection.d.ts +2 -1
- package/dist/geotiff-reprojection.d.ts.map +1 -1
- package/dist/geotiff-reprojection.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/proj.d.ts +20 -0
- package/dist/proj.d.ts.map +1 -1
- package/dist/proj.js +44 -0
- package/dist/proj.js.map +1 -1
- package/package.json +12 -12
- package/dist/cog-tile-matrix-set.d.ts +0 -3
- package/dist/cog-tile-matrix-set.d.ts.map +0 -1
- package/dist/cog-tile-matrix-set.js +0 -23
- package/dist/cog-tile-matrix-set.js.map +0 -1
- package/dist/ellipsoids.d.ts +0 -153
- package/dist/ellipsoids.d.ts.map +0 -1
- package/dist/ellipsoids.js +0 -153
- package/dist/ellipsoids.js.map +0 -1
- package/dist/geotiff/high-level/affine.d.ts +0 -16
- package/dist/geotiff/high-level/affine.d.ts.map +0 -1
- package/dist/geotiff/high-level/affine.js +0 -2
- package/dist/geotiff/high-level/affine.js.map +0 -1
- package/dist/geotiff/high-level/array.d.ts +0 -37
- package/dist/geotiff/high-level/array.d.ts.map +0 -1
- package/dist/geotiff/high-level/array.js +0 -2
- package/dist/geotiff/high-level/array.js.map +0 -1
- package/dist/geotiff/high-level/geotiff.d.ts +0 -63
- package/dist/geotiff/high-level/geotiff.d.ts.map +0 -1
- package/dist/geotiff/high-level/geotiff.js +0 -135
- package/dist/geotiff/high-level/geotiff.js.map +0 -1
- package/dist/geotiff/high-level/index.d.ts +0 -8
- package/dist/geotiff/high-level/index.d.ts.map +0 -1
- package/dist/geotiff/high-level/index.js +0 -5
- package/dist/geotiff/high-level/index.js.map +0 -1
- package/dist/geotiff/high-level/options.d.ts +0 -11
- package/dist/geotiff/high-level/options.d.ts.map +0 -1
- package/dist/geotiff/high-level/options.js +0 -2
- package/dist/geotiff/high-level/options.js.map +0 -1
- package/dist/geotiff/high-level/overview.d.ts +0 -46
- package/dist/geotiff/high-level/overview.d.ts.map +0 -1
- package/dist/geotiff/high-level/overview.js +0 -124
- package/dist/geotiff/high-level/overview.js.map +0 -1
- package/dist/geotiff/high-level/tile.d.ts +0 -11
- package/dist/geotiff/high-level/tile.d.ts.map +0 -1
- package/dist/geotiff/high-level/tile.js +0 -2
- package/dist/geotiff/high-level/tile.js.map +0 -1
- package/dist/geotiff/high-level/transform.d.ts +0 -23
- package/dist/geotiff/high-level/transform.d.ts.map +0 -1
- package/dist/geotiff/high-level/transform.js +0 -55
- package/dist/geotiff/high-level/transform.js.map +0 -1
- package/dist/geotiff/high-level/window.d.ts +0 -23
- package/dist/geotiff/high-level/window.d.ts.map +0 -1
- package/dist/geotiff/high-level/window.js +0 -31
- package/dist/geotiff/high-level/window.js.map +0 -1
- package/dist/geotiff/types.d.ts +0 -5
- package/dist/geotiff/types.d.ts.map +0 -1
- package/dist/geotiff/types.js +0 -7
- package/dist/geotiff/types.js.map +0 -1
- package/dist/geotiff-types.d.ts +0 -13
- package/dist/geotiff-types.d.ts.map +0 -1
- package/dist/geotiff-types.js +0 -2
- package/dist/geotiff-types.js.map +0 -1
- package/dist/geotiff.d.ts +0 -50
- package/dist/geotiff.d.ts.map +0 -1
- package/dist/geotiff.js +0 -135
- package/dist/geotiff.js.map +0 -1
- package/dist/mosaic-layer/mosaic-tile-traversal.d.ts +0 -1
- package/dist/mosaic-layer/mosaic-tile-traversal.d.ts.map +0 -1
- package/dist/mosaic-layer/mosaic-tile-traversal.js +0 -2
- package/dist/mosaic-layer/mosaic-tile-traversal.js.map +0 -1
- package/dist/mosaic-layer.d.ts +0 -1
- package/dist/mosaic-layer.d.ts.map +0 -1
- package/dist/mosaic-layer.js +0 -2
- package/dist/mosaic-layer.js.map +0 -1
- package/dist/texture.d.ts +0 -10
- package/dist/texture.d.ts.map +0 -1
- package/dist/texture.js +0 -135
- package/dist/texture.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,35 @@
|
|
|
1
|
-
|
|
1
|
+
# @developmentseed/deck.gl-geotiff
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
High-level API for rendering [Cloud-Optimized GeoTIFFs] in deck.gl.
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
|
|
5
|
+
[Cloud-Optimized GeoTIFFs]: https://cogeo.org/
|
|
6
|
+
|
|
7
|
+
This uses `@developmentseed/geotiff` and [`@cogeotiff/core`] to efficiently read Cloud-Optimized GeoTIFFs from the browser.
|
|
8
|
+
|
|
9
|
+
[`@cogeotiff/core`]: https://github.com/blacha/cogeotiff
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { Deck } from '@deck.gl/core';
|
|
15
|
+
import { COGLayer } from '@developmentseed/deck.gl-geotiff';
|
|
16
|
+
|
|
17
|
+
new Deck({
|
|
18
|
+
initialViewState: {
|
|
19
|
+
longitude: 0,
|
|
20
|
+
latitude: 0,
|
|
21
|
+
zoom: 2
|
|
22
|
+
},
|
|
23
|
+
controller: true,
|
|
24
|
+
layers: [
|
|
25
|
+
new COGLayer({
|
|
26
|
+
id: 'cog-layer',
|
|
27
|
+
geotiff: 'https://example.com/my-cog.tif'
|
|
28
|
+
})
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The {@link COGLayer} is the recommended layer for rendering Cloud-Optimized GeoTIFFs. It leverages deck.gl's [`TileLayer`] to match the internal COG structure, automatically fetching appropriate overviews based on zoom level.
|
|
34
|
+
|
|
35
|
+
[`TileLayer`]: https://deck.gl/docs/api-reference/geo-layers/tile-layer
|
package/dist/cog-layer.d.ts
CHANGED
|
@@ -3,10 +3,10 @@ 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 { TileLayer } from "@deck.gl/geo-layers";
|
|
5
5
|
import type { RasterModule } from "@developmentseed/deck.gl-raster";
|
|
6
|
-
import type { GeoTIFF, Overview } from "@developmentseed/geotiff";
|
|
6
|
+
import type { DecoderPool, GeoTIFF, Overview } from "@developmentseed/geotiff";
|
|
7
7
|
import type { TileMatrixSet } from "@developmentseed/morecantile";
|
|
8
8
|
import type { ReprojectionFns } from "@developmentseed/raster-reproject";
|
|
9
|
-
import type { Device } from "@luma.gl/core";
|
|
9
|
+
import type { Device, Texture } from "@luma.gl/core";
|
|
10
10
|
import type { ProjectionDefinition } from "wkt-parser";
|
|
11
11
|
import type { TextureDataT } from "./geotiff/render-pipeline.js";
|
|
12
12
|
import type { EpsgResolver } from "./proj.js";
|
|
@@ -14,11 +14,16 @@ import type { EpsgResolver } from "./proj.js";
|
|
|
14
14
|
* Minimum interface that **must** be returned from getTileData.
|
|
15
15
|
*/
|
|
16
16
|
export type MinimalDataT = {
|
|
17
|
+
/** The height of the tile in pixels. */
|
|
17
18
|
height: number;
|
|
19
|
+
/** The width of the tile in pixels. */
|
|
18
20
|
width: number;
|
|
21
|
+
/** Byte length of the data, used for cache eviction when `maxCacheByteSize` is set. */
|
|
22
|
+
byteLength?: number;
|
|
19
23
|
};
|
|
20
|
-
|
|
21
|
-
texture:
|
|
24
|
+
type DefaultDataT = MinimalDataT & {
|
|
25
|
+
texture: Texture;
|
|
26
|
+
byteLength: number;
|
|
22
27
|
};
|
|
23
28
|
/** Options passed to `getTileData`. */
|
|
24
29
|
export type GetTileDataOptions = {
|
|
@@ -30,13 +35,38 @@ export type GetTileDataOptions = {
|
|
|
30
35
|
y: number;
|
|
31
36
|
/** An AbortSignal that may be signalled if the request is to be aborted */
|
|
32
37
|
signal?: AbortSignal;
|
|
38
|
+
/** The decoder pool to use. */
|
|
39
|
+
pool: DecoderPool;
|
|
33
40
|
};
|
|
34
41
|
type GetTileDataResult<DataT> = {
|
|
35
42
|
data: DataT;
|
|
36
43
|
forwardTransform: ReprojectionFns["forwardTransform"];
|
|
37
44
|
inverseTransform: ReprojectionFns["inverseTransform"];
|
|
38
45
|
};
|
|
39
|
-
|
|
46
|
+
type COGLayerDataProps<DataT extends MinimalDataT> = {
|
|
47
|
+
/**
|
|
48
|
+
* User-defined method to load data for a tile.
|
|
49
|
+
*
|
|
50
|
+
* Must be provided together with `renderTile`. If neither is provided,
|
|
51
|
+
* the default pipeline is used, which fetches the tile, uploads it as a
|
|
52
|
+
* GPU texture, and renders it using an inferred shader pipeline.
|
|
53
|
+
*/
|
|
54
|
+
getTileData: (image: GeoTIFF | Overview, options: GetTileDataOptions) => Promise<DataT>;
|
|
55
|
+
/**
|
|
56
|
+
* User-defined method to render data for a tile.
|
|
57
|
+
*
|
|
58
|
+
* Must be provided together with `getTileData`. Receives the value
|
|
59
|
+
* returned by `getTileData` and must return a render pipeline.
|
|
60
|
+
*/
|
|
61
|
+
renderTile: (data: DataT) => ImageData | RasterModule[];
|
|
62
|
+
} | {
|
|
63
|
+
getTileData?: undefined;
|
|
64
|
+
renderTile?: undefined;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Props that can be passed into the {@link COGLayer}.
|
|
68
|
+
*/
|
|
69
|
+
export type COGLayerProps<DataT extends MinimalDataT = DefaultDataT> = CompositeLayerProps & Pick<TileLayerProps, "debounceTime" | "maxCacheSize" | "maxCacheByteSize" | "maxRequests" | "refinementStrategy"> & COGLayerDataProps<DataT> & {
|
|
40
70
|
/**
|
|
41
71
|
* Cloud-optimized GeoTIFF input.
|
|
42
72
|
*
|
|
@@ -56,37 +86,18 @@ export interface COGLayerProps<DataT extends MinimalDataT = DefaultDataT> extend
|
|
|
56
86
|
*/
|
|
57
87
|
epsgResolver?: EpsgResolver;
|
|
58
88
|
/**
|
|
59
|
-
*
|
|
89
|
+
* Worker pool for decoding image chunks.
|
|
60
90
|
*
|
|
61
91
|
* If none is provided, a default Pool will be created and shared between all
|
|
62
92
|
* COGLayer and GeoTIFFLayer instances.
|
|
63
93
|
*/
|
|
94
|
+
pool?: DecoderPool;
|
|
64
95
|
/**
|
|
65
96
|
* Maximum reprojection error in pixels for mesh refinement.
|
|
66
97
|
* Lower values create denser meshes with higher accuracy.
|
|
67
98
|
* @default 0.125
|
|
68
99
|
*/
|
|
69
100
|
maxError?: number;
|
|
70
|
-
/**
|
|
71
|
-
* User-defined method to load data for a tile.
|
|
72
|
-
*
|
|
73
|
-
* The default implementation loads an RGBA image, returning an ImageData
|
|
74
|
-
* object.
|
|
75
|
-
*
|
|
76
|
-
* For more customizability, you can also return a Texture object from
|
|
77
|
-
* luma.gl, along with optional custom shaders for the RasterLayer.
|
|
78
|
-
*/
|
|
79
|
-
getTileData?: (image: GeoTIFF | Overview, options: GetTileDataOptions) => Promise<DataT>;
|
|
80
|
-
/**
|
|
81
|
-
* User-defined method to render data for a tile.
|
|
82
|
-
*
|
|
83
|
-
* This receives the data returned by getTileData and must return a render
|
|
84
|
-
* pipeline.
|
|
85
|
-
*
|
|
86
|
-
* The default implementation returns an object with a `texture` property,
|
|
87
|
-
* assuming that this texture is already renderable.
|
|
88
|
-
*/
|
|
89
|
-
renderTile: (data: DataT) => ImageData | RasterModule[];
|
|
90
101
|
/**
|
|
91
102
|
* Enable debug visualization showing the triangulation mesh
|
|
92
103
|
* @default false
|
|
@@ -120,7 +131,7 @@ export interface COGLayerProps<DataT extends MinimalDataT = DefaultDataT> extend
|
|
|
120
131
|
* automatically aborted.
|
|
121
132
|
*/
|
|
122
133
|
signal?: AbortSignal;
|
|
123
|
-
}
|
|
134
|
+
};
|
|
124
135
|
/**
|
|
125
136
|
* COGLayer renders a COG using a tiled approach with reprojection.
|
|
126
137
|
*/
|
|
@@ -132,12 +143,14 @@ export declare class COGLayer<DataT extends MinimalDataT = DefaultDataT> extends
|
|
|
132
143
|
forwardTo4326?: ReprojectionFns["forwardReproject"];
|
|
133
144
|
inverseFrom4326?: ReprojectionFns["inverseReproject"];
|
|
134
145
|
forwardTo3857?: ReprojectionFns["forwardReproject"];
|
|
146
|
+
inverseFrom3857?: ReprojectionFns["inverseReproject"];
|
|
135
147
|
tms?: TileMatrixSet;
|
|
136
148
|
defaultGetTileData?: COGLayerProps<TextureDataT>["getTileData"];
|
|
137
149
|
defaultRenderTile?: COGLayerProps<TextureDataT>["renderTile"];
|
|
138
150
|
};
|
|
139
151
|
initializeState(): void;
|
|
140
152
|
updateState(params: UpdateParameters<this>): void;
|
|
153
|
+
clearState(): void;
|
|
141
154
|
_parseGeoTIFF(): Promise<void>;
|
|
142
155
|
/**
|
|
143
156
|
* Inner callback passed in to the underlying TileLayer's `getTileData`.
|
|
@@ -148,9 +161,9 @@ export declare class COGLayer<DataT extends MinimalDataT = DefaultDataT> extends
|
|
|
148
161
|
data?: GetTileDataResult<DataT>;
|
|
149
162
|
_offset: number;
|
|
150
163
|
tile: Tile2DHeader<GetTileDataResult<DataT>>;
|
|
151
|
-
}, tms: TileMatrixSet, forwardTo4326: ReprojectionFns["forwardReproject"], inverseFrom4326: ReprojectionFns["inverseReproject"]): Layer | LayersList | null;
|
|
164
|
+
}, tms: TileMatrixSet, forwardTo4326: ReprojectionFns["forwardReproject"], inverseFrom4326: ReprojectionFns["inverseReproject"], forwardTo3857: ReprojectionFns["forwardReproject"], inverseFrom3857: ReprojectionFns["inverseReproject"]): Layer | LayersList | null;
|
|
152
165
|
/** Define the underlying deck.gl TileLayer. */
|
|
153
|
-
renderTileLayer(tms: TileMatrixSet, forwardTo4326: ReprojectionFns["forwardReproject"], inverseFrom4326: ReprojectionFns["inverseReproject"], forwardTo3857: ReprojectionFns["forwardReproject"], geotiff: GeoTIFF): TileLayer;
|
|
166
|
+
renderTileLayer(tms: TileMatrixSet, forwardTo4326: ReprojectionFns["forwardReproject"], inverseFrom4326: ReprojectionFns["inverseReproject"], forwardTo3857: ReprojectionFns["forwardReproject"], inverseFrom3857: ReprojectionFns["inverseReproject"], geotiff: GeoTIFF): TileLayer;
|
|
154
167
|
renderLayers(): TileLayer<any, {}> | null;
|
|
155
168
|
}
|
|
156
169
|
export {};
|
package/dist/cog-layer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cog-layer.d.ts","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
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
|
@@ -1,16 +1,32 @@
|
|
|
1
|
-
import { CompositeLayer } from "@deck.gl/core";
|
|
1
|
+
import { COORDINATE_SYSTEM, CompositeLayer } from "@deck.gl/core";
|
|
2
2
|
import { TileLayer } from "@deck.gl/geo-layers";
|
|
3
3
|
import { PathLayer } from "@deck.gl/layers";
|
|
4
4
|
import { RasterLayer, TileMatrixSetTileset, } from "@developmentseed/deck.gl-raster";
|
|
5
|
-
import { generateTileMatrixSet } from "@developmentseed/geotiff";
|
|
5
|
+
import { defaultDecoderPool, generateTileMatrixSet, } from "@developmentseed/geotiff";
|
|
6
6
|
import { tileTransform } from "@developmentseed/morecantile";
|
|
7
7
|
import proj4 from "proj4";
|
|
8
8
|
import wktParser from "wkt-parser";
|
|
9
9
|
import { fetchGeoTIFF, getGeographicBounds } from "./geotiff/geotiff.js";
|
|
10
10
|
import { inferRenderPipeline } from "./geotiff/render-pipeline.js";
|
|
11
11
|
import { fromAffine } from "./geotiff-reprojection.js";
|
|
12
|
-
import { epsgResolver } from "./proj.js";
|
|
12
|
+
import { epsgResolver, makeClampedForwardTo3857 } from "./proj.js";
|
|
13
|
+
/** Size of deck.gl's common coordinate space in world units.
|
|
14
|
+
*
|
|
15
|
+
* At zoom 0, one tile covers the whole world (512×512 units); at zoom z, each
|
|
16
|
+
* tile is 512/2^z units.
|
|
17
|
+
*/
|
|
18
|
+
const TILE_SIZE = 512;
|
|
19
|
+
/**
|
|
20
|
+
* The size of the globe in web mercator meters.
|
|
21
|
+
*/
|
|
22
|
+
const WEB_MERCATOR_METER_CIRCUMFERENCE = 40075016.686;
|
|
23
|
+
/**
|
|
24
|
+
* Scale factor for converting EPSG:3857 meters into deck.gl world units
|
|
25
|
+
* (512×512).
|
|
26
|
+
*/
|
|
27
|
+
const WEB_MERCATOR_TO_WORLD_SCALE = TILE_SIZE / WEB_MERCATOR_METER_CIRCUMFERENCE;
|
|
13
28
|
const defaultProps = {
|
|
29
|
+
...TileLayer.defaultProps,
|
|
14
30
|
epsgResolver,
|
|
15
31
|
debug: false,
|
|
16
32
|
debugOpacity: 0.5,
|
|
@@ -29,9 +45,24 @@ export class COGLayer extends CompositeLayer {
|
|
|
29
45
|
const { props, oldProps, changeFlags } = params;
|
|
30
46
|
const needsUpdate = Boolean(changeFlags.dataChanged) || props.geotiff !== oldProps.geotiff;
|
|
31
47
|
if (needsUpdate) {
|
|
48
|
+
// Clear stale state so renderLayers returns null until the new GeoTIFF is
|
|
49
|
+
// ready
|
|
50
|
+
this.clearState();
|
|
32
51
|
this._parseGeoTIFF();
|
|
33
52
|
}
|
|
34
53
|
}
|
|
54
|
+
clearState() {
|
|
55
|
+
this.setState({
|
|
56
|
+
geotiff: undefined,
|
|
57
|
+
tms: undefined,
|
|
58
|
+
forwardTo4326: undefined,
|
|
59
|
+
inverseFrom4326: undefined,
|
|
60
|
+
forwardTo3857: undefined,
|
|
61
|
+
inverseFrom3857: undefined,
|
|
62
|
+
defaultGetTileData: undefined,
|
|
63
|
+
defaultRenderTile: undefined,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
35
66
|
async _parseGeoTIFF() {
|
|
36
67
|
const geotiff = await fetchGeoTIFF(this.props.geotiff);
|
|
37
68
|
const crs = geotiff.crs;
|
|
@@ -47,7 +78,8 @@ export class COGLayer extends CompositeLayer {
|
|
|
47
78
|
// @ts-expect-error - proj4 typings are incomplete and don't support
|
|
48
79
|
// wkt-parser input
|
|
49
80
|
const converter3857 = proj4(sourceProjection, "EPSG:3857");
|
|
50
|
-
const forwardTo3857 = (x, y) => converter3857.forward([x, y], false);
|
|
81
|
+
const forwardTo3857 = makeClampedForwardTo3857((x, y) => converter3857.forward([x, y], false), forwardTo4326);
|
|
82
|
+
const inverseFrom3857 = (x, y) => converter3857.inverse([x, y], false);
|
|
51
83
|
if (this.props.onGeoTIFFLoad) {
|
|
52
84
|
const geographicBounds = getGeographicBounds(geotiff, converter4326);
|
|
53
85
|
this.props.onGeoTIFFLoad(geotiff, {
|
|
@@ -55,15 +87,19 @@ export class COGLayer extends CompositeLayer {
|
|
|
55
87
|
geographicBounds,
|
|
56
88
|
});
|
|
57
89
|
}
|
|
58
|
-
|
|
90
|
+
// Only create a default render pipeline if the user did not provide a
|
|
91
|
+
// custom one
|
|
92
|
+
if (!this.props.getTileData || !this.props.renderTile) {
|
|
93
|
+
const { getTileData: defaultGetTileData, renderTile: defaultRenderTile } = inferRenderPipeline(geotiff, this.context.device);
|
|
94
|
+
this.setState({ defaultGetTileData, defaultRenderTile });
|
|
95
|
+
}
|
|
59
96
|
this.setState({
|
|
60
97
|
geotiff,
|
|
61
98
|
tms,
|
|
62
99
|
forwardTo4326,
|
|
63
100
|
inverseFrom4326,
|
|
64
101
|
forwardTo3857,
|
|
65
|
-
|
|
66
|
-
defaultRenderTile,
|
|
102
|
+
inverseFrom3857,
|
|
67
103
|
});
|
|
68
104
|
}
|
|
69
105
|
/**
|
|
@@ -84,21 +120,29 @@ export class COGLayer extends CompositeLayer {
|
|
|
84
120
|
const tileMatrix = tms.tileMatrices[z];
|
|
85
121
|
const tileAffine = tileTransform(tileMatrix, { col: x, row: y });
|
|
86
122
|
const { forwardTransform, inverseTransform } = fromAffine(tileAffine);
|
|
87
|
-
const getTileData = this.props.getTileData || this.state.defaultGetTileData;
|
|
88
123
|
// Combine abort signals if both are defined
|
|
89
124
|
const combinedSignal = signal && this.props.signal
|
|
90
125
|
? AbortSignal.any([signal, this.props.signal])
|
|
91
126
|
: signal || this.props.signal;
|
|
92
|
-
const
|
|
127
|
+
const getTileDataProps = {
|
|
93
128
|
device: this.context.device,
|
|
94
129
|
x,
|
|
95
130
|
y,
|
|
96
131
|
signal: combinedSignal,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
132
|
+
pool: this.props.pool ?? defaultDecoderPool(),
|
|
133
|
+
};
|
|
134
|
+
let data;
|
|
135
|
+
if (this.props.getTileData) {
|
|
136
|
+
// In the case that the user passed in a custom `getTileData`, TS knows
|
|
137
|
+
// that `DataT` is the return type of that function
|
|
138
|
+
data = await this.props.getTileData(image, getTileDataProps);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// In the case where the user did not pass in a custom `getTileData`, we
|
|
142
|
+
// have to tell TS that `DefaultDataT` is assignable to `DataT`
|
|
143
|
+
data = (await this.state.defaultGetTileData(image, getTileDataProps));
|
|
144
|
+
}
|
|
100
145
|
return {
|
|
101
|
-
// @ts-expect-error type mismatch when using provided getTileData
|
|
102
146
|
data,
|
|
103
147
|
forwardTransform,
|
|
104
148
|
inverseTransform,
|
|
@@ -107,9 +151,12 @@ export class COGLayer extends CompositeLayer {
|
|
|
107
151
|
_renderSubLayers(
|
|
108
152
|
// TODO: it would be nice to have a cleaner type here
|
|
109
153
|
// this is copy-pasted from the upstream tile layer definition for props.
|
|
110
|
-
props, tms, forwardTo4326, inverseFrom4326) {
|
|
154
|
+
props, tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857) {
|
|
111
155
|
const { maxError, debug, debugOpacity } = this.props;
|
|
112
|
-
|
|
156
|
+
// Cast to include TileMetadata from raster-tileset's `getTileMetadata`
|
|
157
|
+
// method.
|
|
158
|
+
// TODO: implement generic handling of tile metadata upstream in TileLayer
|
|
159
|
+
const tile = props.tile;
|
|
113
160
|
if (!props.data) {
|
|
114
161
|
return null;
|
|
115
162
|
}
|
|
@@ -117,44 +164,98 @@ export class COGLayer extends CompositeLayer {
|
|
|
117
164
|
const layers = [];
|
|
118
165
|
if (data) {
|
|
119
166
|
const { height, width } = data;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
167
|
+
let renderPipeline;
|
|
168
|
+
if (this.props.getTileData) {
|
|
169
|
+
// In the case that the user passed in a custom `getTileData`, TS knows
|
|
170
|
+
// that `data` can be passed in to `renderTile`.
|
|
171
|
+
renderPipeline = this.props.renderTile(data);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
// In the default case, `data` is `DefaultDataT` — cast required because
|
|
175
|
+
// TS can't prove that `DataT` (which defaults to `DefaultDataT`) is
|
|
176
|
+
// `DefaultDataT` at this point.
|
|
177
|
+
renderPipeline = this.state.defaultRenderTile(data);
|
|
178
|
+
}
|
|
179
|
+
// viewport.resolution is defined for GlobeView, undefined for WebMercatorViewport.
|
|
180
|
+
// For WebMercator we project the mesh to EPSG:3857 and use a model matrix
|
|
181
|
+
// to map from 3857 meters to deck.gl world space, matching the approach
|
|
182
|
+
// used by the MVTLayer. This avoids per-vertex WGS84→WebMercator linear
|
|
183
|
+
// interpolation errors that become visible at high latitudes.
|
|
184
|
+
const isGlobe = this.context.viewport.resolution !== undefined;
|
|
185
|
+
let reprojectionFns;
|
|
186
|
+
let rasterLayerProps;
|
|
187
|
+
if (isGlobe) {
|
|
188
|
+
reprojectionFns = {
|
|
128
189
|
forwardTransform,
|
|
129
190
|
inverseTransform,
|
|
130
191
|
forwardReproject: forwardTo4326,
|
|
131
192
|
inverseReproject: inverseFrom4326,
|
|
132
|
-
}
|
|
193
|
+
};
|
|
194
|
+
rasterLayerProps = {};
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
reprojectionFns = {
|
|
198
|
+
forwardTransform,
|
|
199
|
+
inverseTransform,
|
|
200
|
+
forwardReproject: forwardTo3857,
|
|
201
|
+
inverseReproject: inverseFrom3857,
|
|
202
|
+
};
|
|
203
|
+
// Scale 3857 meters → deck.gl world units (512×512).
|
|
204
|
+
//
|
|
205
|
+
// coordinateOrigin shifts the world-space origin to (256, 256) so that
|
|
206
|
+
// easting=0 / northing=0 maps to world center. Then the modelMatrix
|
|
207
|
+
//
|
|
208
|
+
// No Y-flip needed: CARTESIAN Y increases upward = northing.
|
|
209
|
+
rasterLayerProps = {
|
|
210
|
+
coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
|
|
211
|
+
coordinateOrigin: [TILE_SIZE / 2, TILE_SIZE / 2, 0],
|
|
212
|
+
// biome-ignore format: array
|
|
213
|
+
modelMatrix: [
|
|
214
|
+
WEB_MERCATOR_TO_WORLD_SCALE, 0, 0, 0,
|
|
215
|
+
0, WEB_MERCATOR_TO_WORLD_SCALE, 0, 0,
|
|
216
|
+
0, 0, 1, 0,
|
|
217
|
+
0, 0, 0, 1
|
|
218
|
+
],
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
layers.push(new RasterLayer(this.getSubLayerProps({
|
|
222
|
+
id: `${props.id}-raster`,
|
|
223
|
+
width,
|
|
224
|
+
height,
|
|
225
|
+
renderPipeline,
|
|
226
|
+
maxError,
|
|
227
|
+
reprojectionFns,
|
|
133
228
|
debug,
|
|
134
229
|
debugOpacity,
|
|
135
|
-
|
|
230
|
+
...rasterLayerProps,
|
|
231
|
+
})));
|
|
136
232
|
}
|
|
137
233
|
if (debug) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
141
|
-
const projectedBounds = tile?.projectedBounds;
|
|
142
|
-
if (!projectedBounds || !tms) {
|
|
234
|
+
const { projectedCorners } = tile;
|
|
235
|
+
if (!projectedCorners || !tms) {
|
|
143
236
|
return [];
|
|
144
237
|
}
|
|
145
|
-
//
|
|
146
|
-
|
|
238
|
+
// Create a closed path in WGS84 projection around the tile bounds
|
|
239
|
+
//
|
|
240
|
+
// The tile has a `bbox` field which is already the bounding box in WGS84,
|
|
241
|
+
// but that uses `transformBounds` and densifies edges. So the corners of
|
|
242
|
+
// the bounding boxes don't line up with each other.
|
|
243
|
+
//
|
|
244
|
+
// In this case in the debug mode, it looks better if we ignore the actual
|
|
245
|
+
// non-linearities of the edges and just draw a box connecting the
|
|
246
|
+
// reprojected corners. In any case, the _image itself_ will be densified
|
|
247
|
+
// on the edges as a feature of the mesh generation.
|
|
248
|
+
const { topLeft, topRight, bottomRight, bottomLeft } = projectedCorners;
|
|
147
249
|
const topLeftWgs84 = forwardTo4326(topLeft[0], topLeft[1]);
|
|
148
250
|
const topRightWgs84 = forwardTo4326(topRight[0], topRight[1]);
|
|
149
251
|
const bottomRightWgs84 = forwardTo4326(bottomRight[0], bottomRight[1]);
|
|
150
252
|
const bottomLeftWgs84 = forwardTo4326(bottomLeft[0], bottomLeft[1]);
|
|
151
|
-
// Create a closed path around the tile bounds
|
|
152
253
|
const path = [
|
|
153
254
|
topLeftWgs84,
|
|
154
255
|
topRightWgs84,
|
|
155
256
|
bottomRightWgs84,
|
|
156
257
|
bottomLeftWgs84,
|
|
157
|
-
topLeftWgs84,
|
|
258
|
+
topLeftWgs84,
|
|
158
259
|
];
|
|
159
260
|
layers.push(new PathLayer({
|
|
160
261
|
id: `${this.id}-${tile.id}-bounds`,
|
|
@@ -169,7 +270,7 @@ export class COGLayer extends CompositeLayer {
|
|
|
169
270
|
return layers;
|
|
170
271
|
}
|
|
171
272
|
/** Define the underlying deck.gl TileLayer. */
|
|
172
|
-
renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, geotiff) {
|
|
273
|
+
renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, geotiff) {
|
|
173
274
|
// Create a factory class that wraps COGTileset2D with the metadata
|
|
174
275
|
class TileMatrixSetTilesetFactory extends TileMatrixSetTileset {
|
|
175
276
|
constructor(opts) {
|
|
@@ -179,18 +280,25 @@ export class COGLayer extends CompositeLayer {
|
|
|
179
280
|
});
|
|
180
281
|
}
|
|
181
282
|
}
|
|
283
|
+
const { maxRequests, maxCacheSize, maxCacheByteSize, debounceTime, refinementStrategy, } = this.props;
|
|
182
284
|
return new TileLayer({
|
|
183
285
|
id: `cog-tile-layer-${this.id}`,
|
|
184
286
|
TilesetClass: TileMatrixSetTilesetFactory,
|
|
185
287
|
getTileData: async (tile) => this._getTileData(tile, geotiff, tms),
|
|
186
|
-
renderSubLayers: (props) => this._renderSubLayers(props, tms, forwardTo4326, inverseFrom4326),
|
|
288
|
+
renderSubLayers: (props) => this._renderSubLayers(props, tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857),
|
|
289
|
+
debounceTime,
|
|
290
|
+
maxCacheByteSize,
|
|
291
|
+
maxCacheSize,
|
|
292
|
+
maxRequests,
|
|
293
|
+
refinementStrategy,
|
|
187
294
|
});
|
|
188
295
|
}
|
|
189
296
|
renderLayers() {
|
|
190
|
-
const { forwardTo4326, inverseFrom4326, forwardTo3857, tms, geotiff } = this.state;
|
|
297
|
+
const { forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, tms, geotiff, } = this.state;
|
|
191
298
|
if (!forwardTo4326 ||
|
|
192
299
|
!inverseFrom4326 ||
|
|
193
300
|
!forwardTo3857 ||
|
|
301
|
+
!inverseFrom3857 ||
|
|
194
302
|
!tms ||
|
|
195
303
|
!geotiff) {
|
|
196
304
|
return null;
|
|
@@ -198,7 +306,7 @@ export class COGLayer extends CompositeLayer {
|
|
|
198
306
|
// Split into a separate method to make TS happy, because when metadata is
|
|
199
307
|
// nullable in any part of function scope, the tileset factory wrapper gives
|
|
200
308
|
// a type error
|
|
201
|
-
return this.renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, geotiff);
|
|
309
|
+
return this.renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, geotiff);
|
|
202
310
|
}
|
|
203
311
|
}
|
|
204
312
|
//# sourceMappingURL=cog-layer.js.map
|
package/dist/cog-layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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"}
|
package/dist/geotiff/geotiff.js
CHANGED
|
@@ -22,12 +22,16 @@ export function addAlphaChannel(rgbImage) {
|
|
|
22
22
|
else if (rgbImage.data.length === height * width * 3) {
|
|
23
23
|
// Need to add alpha channel
|
|
24
24
|
const rgbaLength = (rgbImage.data.length / 3) * 4;
|
|
25
|
-
const
|
|
25
|
+
const isUint16 = rgbImage.data instanceof Uint16Array;
|
|
26
|
+
const rgbaArray = isUint16
|
|
27
|
+
? new Uint16Array(rgbaLength)
|
|
28
|
+
: new Uint8ClampedArray(rgbaLength);
|
|
29
|
+
const maxAlpha = isUint16 ? 65535 : 255;
|
|
26
30
|
for (let i = 0; i < rgbImage.data.length / 3; ++i) {
|
|
27
31
|
rgbaArray[i * 4] = rgbImage.data[i * 3];
|
|
28
32
|
rgbaArray[i * 4 + 1] = rgbImage.data[i * 3 + 1];
|
|
29
33
|
rgbaArray[i * 4 + 2] = rgbImage.data[i * 3 + 2];
|
|
30
|
-
rgbaArray[i * 4 + 3] =
|
|
34
|
+
rgbaArray[i * 4 + 3] = maxAlpha;
|
|
31
35
|
}
|
|
32
36
|
return {
|
|
33
37
|
...rgbImage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geotiff.js","sourceRoot":"","sources":["../../src/geotiff/geotiff.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,QAAqB;IACnD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAEnC,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;QACxC,4EAA4E;QAC5E,OAAO;QACP,uEAAuE;QACvE,qBAAqB;QACrB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;QAChD,4BAA4B;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;QACvD,4BAA4B;QAE5B,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"geotiff.js","sourceRoot":"","sources":["../../src/geotiff/geotiff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RasterModule } from "@developmentseed/deck.gl-raster/gpu-modules";
|
|
2
|
+
import type { GeoTIFF, Overview } from "@developmentseed/geotiff";
|
|
2
3
|
import type { Device, Texture } from "@luma.gl/core";
|
|
3
|
-
import type {
|
|
4
|
+
import type { GetTileDataOptions } from "../cog-layer";
|
|
4
5
|
export type TextureDataT = {
|
|
5
6
|
height: number;
|
|
6
7
|
width: number;
|
|
8
|
+
byteLength: number;
|
|
7
9
|
texture: Texture;
|
|
10
|
+
mask?: Texture;
|
|
8
11
|
};
|
|
9
12
|
export declare function inferRenderPipeline(geotiff: GeoTIFF, device: Device): {
|
|
10
|
-
getTileData:
|
|
11
|
-
renderTile:
|
|
13
|
+
getTileData: (image: GeoTIFF | Overview, options: GetTileDataOptions) => Promise<TextureDataT>;
|
|
14
|
+
renderTile: (data: TextureDataT) => ImageData | RasterModule[];
|
|
12
15
|
};
|
|
13
16
|
//# sourceMappingURL=render-pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../../src/geotiff/render-pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../../src/geotiff/render-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAWhF,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EAET,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,MAAM,EAAgB,OAAO,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIvD,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAqBF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACb;IACD,WAAW,EAAE,CACX,KAAK,EAAE,OAAO,GAAG,QAAQ,EACzB,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,UAAU,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,GAAG,YAAY,EAAE,CAAC;CAChE,CAeA"}
|