@developmentseed/deck.gl-geotiff 0.3.0 → 0.5.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/cog-layer.d.ts +11 -5
- package/dist/cog-layer.d.ts.map +1 -1
- package/dist/cog-layer.js +101 -27
- package/dist/cog-layer.js.map +1 -1
- package/dist/geotiff/render-pipeline.d.ts +3 -2
- package/dist/geotiff/render-pipeline.d.ts.map +1 -1
- package/dist/geotiff/render-pipeline.js +6 -1
- package/dist/geotiff/render-pipeline.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 +7 -7
package/dist/cog-layer.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CompositeLayerProps, Layer, LayersList, UpdateParameters } from "@
|
|
|
2
2
|
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
|
-
import type {
|
|
5
|
+
import type { RenderTileResult } from "@developmentseed/deck.gl-raster";
|
|
6
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";
|
|
@@ -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
24
|
type DefaultDataT = MinimalDataT & {
|
|
21
25
|
texture: Texture;
|
|
26
|
+
byteLength: number;
|
|
22
27
|
};
|
|
23
28
|
/** Options passed to `getTileData`. */
|
|
24
29
|
export type GetTileDataOptions = {
|
|
@@ -53,7 +58,7 @@ type COGLayerDataProps<DataT extends MinimalDataT> = {
|
|
|
53
58
|
* Must be provided together with `getTileData`. Receives the value
|
|
54
59
|
* returned by `getTileData` and must return a render pipeline.
|
|
55
60
|
*/
|
|
56
|
-
renderTile: (data: DataT) =>
|
|
61
|
+
renderTile: (data: DataT) => RenderTileResult;
|
|
57
62
|
} | {
|
|
58
63
|
getTileData?: undefined;
|
|
59
64
|
renderTile?: undefined;
|
|
@@ -61,7 +66,7 @@ type COGLayerDataProps<DataT extends MinimalDataT> = {
|
|
|
61
66
|
/**
|
|
62
67
|
* Props that can be passed into the {@link COGLayer}.
|
|
63
68
|
*/
|
|
64
|
-
export type COGLayerProps<DataT extends MinimalDataT = DefaultDataT> = CompositeLayerProps & COGLayerDataProps<DataT> & {
|
|
69
|
+
export type COGLayerProps<DataT extends MinimalDataT = DefaultDataT> = CompositeLayerProps & Pick<TileLayerProps, "debounceTime" | "maxCacheSize" | "maxCacheByteSize" | "maxRequests" | "refinementStrategy"> & COGLayerDataProps<DataT> & {
|
|
65
70
|
/**
|
|
66
71
|
* Cloud-optimized GeoTIFF input.
|
|
67
72
|
*
|
|
@@ -138,6 +143,7 @@ export declare class COGLayer<DataT extends MinimalDataT = DefaultDataT> extends
|
|
|
138
143
|
forwardTo4326?: ReprojectionFns["forwardReproject"];
|
|
139
144
|
inverseFrom4326?: ReprojectionFns["inverseReproject"];
|
|
140
145
|
forwardTo3857?: ReprojectionFns["forwardReproject"];
|
|
146
|
+
inverseFrom3857?: ReprojectionFns["inverseReproject"];
|
|
141
147
|
tms?: TileMatrixSet;
|
|
142
148
|
defaultGetTileData?: COGLayerProps<TextureDataT>["getTileData"];
|
|
143
149
|
defaultRenderTile?: COGLayerProps<TextureDataT>["renderTile"];
|
|
@@ -155,9 +161,9 @@ export declare class COGLayer<DataT extends MinimalDataT = DefaultDataT> extends
|
|
|
155
161
|
data?: GetTileDataResult<DataT>;
|
|
156
162
|
_offset: number;
|
|
157
163
|
tile: Tile2DHeader<GetTileDataResult<DataT>>;
|
|
158
|
-
}, 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;
|
|
159
165
|
/** Define the underlying deck.gl TileLayer. */
|
|
160
|
-
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;
|
|
161
167
|
renderLayers(): TileLayer<any, {}> | null;
|
|
162
168
|
}
|
|
163
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,
|
|
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,4 +1,4 @@
|
|
|
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";
|
|
@@ -9,8 +9,24 @@ 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,
|
|
@@ -42,6 +58,7 @@ export class COGLayer extends CompositeLayer {
|
|
|
42
58
|
forwardTo4326: undefined,
|
|
43
59
|
inverseFrom4326: undefined,
|
|
44
60
|
forwardTo3857: undefined,
|
|
61
|
+
inverseFrom3857: undefined,
|
|
45
62
|
defaultGetTileData: undefined,
|
|
46
63
|
defaultRenderTile: undefined,
|
|
47
64
|
});
|
|
@@ -61,7 +78,8 @@ export class COGLayer extends CompositeLayer {
|
|
|
61
78
|
// @ts-expect-error - proj4 typings are incomplete and don't support
|
|
62
79
|
// wkt-parser input
|
|
63
80
|
const converter3857 = proj4(sourceProjection, "EPSG:3857");
|
|
64
|
-
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);
|
|
65
83
|
if (this.props.onGeoTIFFLoad) {
|
|
66
84
|
const geographicBounds = getGeographicBounds(geotiff, converter4326);
|
|
67
85
|
this.props.onGeoTIFFLoad(geotiff, {
|
|
@@ -81,6 +99,7 @@ export class COGLayer extends CompositeLayer {
|
|
|
81
99
|
forwardTo4326,
|
|
82
100
|
inverseFrom4326,
|
|
83
101
|
forwardTo3857,
|
|
102
|
+
inverseFrom3857,
|
|
84
103
|
});
|
|
85
104
|
}
|
|
86
105
|
/**
|
|
@@ -132,9 +151,12 @@ export class COGLayer extends CompositeLayer {
|
|
|
132
151
|
_renderSubLayers(
|
|
133
152
|
// TODO: it would be nice to have a cleaner type here
|
|
134
153
|
// this is copy-pasted from the upstream tile layer definition for props.
|
|
135
|
-
props, tms, forwardTo4326, inverseFrom4326) {
|
|
154
|
+
props, tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857) {
|
|
136
155
|
const { maxError, debug, debugOpacity } = this.props;
|
|
137
|
-
|
|
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;
|
|
138
160
|
if (!props.data) {
|
|
139
161
|
return null;
|
|
140
162
|
}
|
|
@@ -142,55 +164,100 @@ export class COGLayer extends CompositeLayer {
|
|
|
142
164
|
const layers = [];
|
|
143
165
|
if (data) {
|
|
144
166
|
const { height, width } = data;
|
|
145
|
-
let
|
|
167
|
+
let tileResult;
|
|
146
168
|
if (this.props.getTileData) {
|
|
147
169
|
// In the case that the user passed in a custom `getTileData`, TS knows
|
|
148
170
|
// that `data` can be passed in to `renderTile`.
|
|
149
|
-
|
|
171
|
+
tileResult = this.props.renderTile(data);
|
|
150
172
|
}
|
|
151
173
|
else {
|
|
152
174
|
// In the default case, `data` is `DefaultDataT` — cast required because
|
|
153
175
|
// TS can't prove that `DataT` (which defaults to `DefaultDataT`) is
|
|
154
176
|
// `DefaultDataT` at this point.
|
|
155
|
-
|
|
177
|
+
tileResult = this.state.defaultRenderTile(data);
|
|
178
|
+
}
|
|
179
|
+
const { image, renderPipeline } = tileResult;
|
|
180
|
+
// viewport.resolution is defined for GlobeView, undefined for WebMercatorViewport.
|
|
181
|
+
// For WebMercator we project the mesh to EPSG:3857 and use a model matrix
|
|
182
|
+
// to map from 3857 meters to deck.gl world space, matching the approach
|
|
183
|
+
// used by the MVTLayer. This avoids per-vertex WGS84→WebMercator linear
|
|
184
|
+
// interpolation errors that become visible at high latitudes.
|
|
185
|
+
const isGlobe = this.context.viewport.resolution !== undefined;
|
|
186
|
+
let reprojectionFns;
|
|
187
|
+
let deckProjectionProps;
|
|
188
|
+
if (isGlobe) {
|
|
189
|
+
reprojectionFns = {
|
|
190
|
+
forwardTransform,
|
|
191
|
+
inverseTransform,
|
|
192
|
+
forwardReproject: forwardTo4326,
|
|
193
|
+
inverseReproject: inverseFrom4326,
|
|
194
|
+
};
|
|
195
|
+
deckProjectionProps = {};
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
reprojectionFns = {
|
|
199
|
+
forwardTransform,
|
|
200
|
+
inverseTransform,
|
|
201
|
+
forwardReproject: forwardTo3857,
|
|
202
|
+
inverseReproject: inverseFrom3857,
|
|
203
|
+
};
|
|
204
|
+
// Scale 3857 meters → deck.gl world units (512×512).
|
|
205
|
+
//
|
|
206
|
+
// coordinateOrigin shifts the world-space origin to (256, 256) so that
|
|
207
|
+
// easting=0 / northing=0 maps to world center. Then the modelMatrix
|
|
208
|
+
//
|
|
209
|
+
// No Y-flip needed: CARTESIAN Y increases upward = northing.
|
|
210
|
+
deckProjectionProps = {
|
|
211
|
+
coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
|
|
212
|
+
coordinateOrigin: [TILE_SIZE / 2, TILE_SIZE / 2, 0],
|
|
213
|
+
// biome-ignore format: array
|
|
214
|
+
modelMatrix: [
|
|
215
|
+
WEB_MERCATOR_TO_WORLD_SCALE, 0, 0, 0,
|
|
216
|
+
0, WEB_MERCATOR_TO_WORLD_SCALE, 0, 0,
|
|
217
|
+
0, 0, 1, 0,
|
|
218
|
+
0, 0, 0, 1
|
|
219
|
+
],
|
|
220
|
+
};
|
|
156
221
|
}
|
|
157
222
|
layers.push(new RasterLayer(this.getSubLayerProps({
|
|
158
223
|
id: `${props.id}-raster`,
|
|
159
224
|
width,
|
|
160
225
|
height,
|
|
226
|
+
image,
|
|
161
227
|
renderPipeline,
|
|
162
228
|
maxError,
|
|
163
|
-
reprojectionFns
|
|
164
|
-
forwardTransform,
|
|
165
|
-
inverseTransform,
|
|
166
|
-
forwardReproject: forwardTo4326,
|
|
167
|
-
inverseReproject: inverseFrom4326,
|
|
168
|
-
},
|
|
229
|
+
reprojectionFns,
|
|
169
230
|
debug,
|
|
170
231
|
debugOpacity,
|
|
232
|
+
...deckProjectionProps,
|
|
171
233
|
})));
|
|
172
234
|
}
|
|
173
235
|
if (debug) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
177
|
-
const projectedBounds = tile?.projectedBounds;
|
|
178
|
-
if (!projectedBounds || !tms) {
|
|
236
|
+
const { projectedCorners } = tile;
|
|
237
|
+
if (!projectedCorners || !tms) {
|
|
179
238
|
return [];
|
|
180
239
|
}
|
|
181
|
-
//
|
|
182
|
-
|
|
240
|
+
// Create a closed path in WGS84 projection around the tile bounds
|
|
241
|
+
//
|
|
242
|
+
// The tile has a `bbox` field which is already the bounding box in WGS84,
|
|
243
|
+
// but that uses `transformBounds` and densifies edges. So the corners of
|
|
244
|
+
// the bounding boxes don't line up with each other.
|
|
245
|
+
//
|
|
246
|
+
// In this case in the debug mode, it looks better if we ignore the actual
|
|
247
|
+
// non-linearities of the edges and just draw a box connecting the
|
|
248
|
+
// reprojected corners. In any case, the _image itself_ will be densified
|
|
249
|
+
// on the edges as a feature of the mesh generation.
|
|
250
|
+
const { topLeft, topRight, bottomRight, bottomLeft } = projectedCorners;
|
|
183
251
|
const topLeftWgs84 = forwardTo4326(topLeft[0], topLeft[1]);
|
|
184
252
|
const topRightWgs84 = forwardTo4326(topRight[0], topRight[1]);
|
|
185
253
|
const bottomRightWgs84 = forwardTo4326(bottomRight[0], bottomRight[1]);
|
|
186
254
|
const bottomLeftWgs84 = forwardTo4326(bottomLeft[0], bottomLeft[1]);
|
|
187
|
-
// Create a closed path around the tile bounds
|
|
188
255
|
const path = [
|
|
189
256
|
topLeftWgs84,
|
|
190
257
|
topRightWgs84,
|
|
191
258
|
bottomRightWgs84,
|
|
192
259
|
bottomLeftWgs84,
|
|
193
|
-
topLeftWgs84,
|
|
260
|
+
topLeftWgs84,
|
|
194
261
|
];
|
|
195
262
|
layers.push(new PathLayer({
|
|
196
263
|
id: `${this.id}-${tile.id}-bounds`,
|
|
@@ -205,7 +272,7 @@ export class COGLayer extends CompositeLayer {
|
|
|
205
272
|
return layers;
|
|
206
273
|
}
|
|
207
274
|
/** Define the underlying deck.gl TileLayer. */
|
|
208
|
-
renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, geotiff) {
|
|
275
|
+
renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, geotiff) {
|
|
209
276
|
// Create a factory class that wraps COGTileset2D with the metadata
|
|
210
277
|
class TileMatrixSetTilesetFactory extends TileMatrixSetTileset {
|
|
211
278
|
constructor(opts) {
|
|
@@ -215,18 +282,25 @@ export class COGLayer extends CompositeLayer {
|
|
|
215
282
|
});
|
|
216
283
|
}
|
|
217
284
|
}
|
|
285
|
+
const { maxRequests, maxCacheSize, maxCacheByteSize, debounceTime, refinementStrategy, } = this.props;
|
|
218
286
|
return new TileLayer({
|
|
219
287
|
id: `cog-tile-layer-${this.id}`,
|
|
220
288
|
TilesetClass: TileMatrixSetTilesetFactory,
|
|
221
289
|
getTileData: async (tile) => this._getTileData(tile, geotiff, tms),
|
|
222
|
-
renderSubLayers: (props) => this._renderSubLayers(props, tms, forwardTo4326, inverseFrom4326),
|
|
290
|
+
renderSubLayers: (props) => this._renderSubLayers(props, tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857),
|
|
291
|
+
debounceTime,
|
|
292
|
+
maxCacheByteSize,
|
|
293
|
+
maxCacheSize,
|
|
294
|
+
maxRequests,
|
|
295
|
+
refinementStrategy,
|
|
223
296
|
});
|
|
224
297
|
}
|
|
225
298
|
renderLayers() {
|
|
226
|
-
const { forwardTo4326, inverseFrom4326, forwardTo3857, tms, geotiff } = this.state;
|
|
299
|
+
const { forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, tms, geotiff, } = this.state;
|
|
227
300
|
if (!forwardTo4326 ||
|
|
228
301
|
!inverseFrom4326 ||
|
|
229
302
|
!forwardTo3857 ||
|
|
303
|
+
!inverseFrom3857 ||
|
|
230
304
|
!tms ||
|
|
231
305
|
!geotiff) {
|
|
232
306
|
return null;
|
|
@@ -234,7 +308,7 @@ export class COGLayer extends CompositeLayer {
|
|
|
234
308
|
// Split into a separate method to make TS happy, because when metadata is
|
|
235
309
|
// nullable in any part of function scope, the tileset factory wrapper gives
|
|
236
310
|
// a type error
|
|
237
|
-
return this.renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, geotiff);
|
|
311
|
+
return this.renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, geotiff);
|
|
238
312
|
}
|
|
239
313
|
}
|
|
240
314
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RenderTileResult } from "@developmentseed/deck.gl-raster";
|
|
2
2
|
import type { GeoTIFF, Overview } from "@developmentseed/geotiff";
|
|
3
3
|
import type { Device, Texture } from "@luma.gl/core";
|
|
4
4
|
import type { GetTileDataOptions } from "../cog-layer";
|
|
5
5
|
export type TextureDataT = {
|
|
6
6
|
height: number;
|
|
7
7
|
width: number;
|
|
8
|
+
byteLength: number;
|
|
8
9
|
texture: Texture;
|
|
9
10
|
mask?: Texture;
|
|
10
11
|
};
|
|
11
12
|
export declare function inferRenderPipeline(geotiff: GeoTIFF, device: Device): {
|
|
12
13
|
getTileData: (image: GeoTIFF | Overview, options: GetTileDataOptions) => Promise<TextureDataT>;
|
|
13
|
-
renderTile: (data: TextureDataT) =>
|
|
14
|
+
renderTile: (data: TextureDataT) => RenderTileResult;
|
|
14
15
|
};
|
|
15
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":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../../src/geotiff/render-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAYxE,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,gBAAgB,CAAC;CACtD,CAeA"}
|
|
@@ -92,6 +92,7 @@ function createUnormPipeline(geotiff, device) {
|
|
|
92
92
|
height,
|
|
93
93
|
bytesPerPixel,
|
|
94
94
|
});
|
|
95
|
+
let byteLength = textureData.byteLength;
|
|
95
96
|
const texture = device.createTexture({
|
|
96
97
|
data: textureData,
|
|
97
98
|
format: textureFormat,
|
|
@@ -114,16 +115,20 @@ function createUnormPipeline(geotiff, device) {
|
|
|
114
115
|
height,
|
|
115
116
|
sampler: samplerOptions,
|
|
116
117
|
});
|
|
118
|
+
byteLength += mask.byteLength;
|
|
117
119
|
}
|
|
118
120
|
return {
|
|
119
121
|
texture,
|
|
120
122
|
mask: maskTexture,
|
|
123
|
+
byteLength,
|
|
121
124
|
height: array.height,
|
|
122
125
|
width: array.width,
|
|
123
126
|
};
|
|
124
127
|
};
|
|
125
128
|
const renderTile = (tileData) => {
|
|
126
|
-
return
|
|
129
|
+
return {
|
|
130
|
+
renderPipeline: renderPipeline.map((m, _i) => resolveModule(m, tileData)),
|
|
131
|
+
};
|
|
127
132
|
};
|
|
128
133
|
return { getTileData, renderTile };
|
|
129
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-pipeline.js","sourceRoot":"","sources":["../../src/geotiff/render-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"render-pipeline.js","sourceRoot":"","sources":["../../src/geotiff/render-pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/proj.d.ts
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
import type { ProjectionDefinition } from "wkt-parser";
|
|
2
|
+
/**
|
|
3
|
+
* Wrap a proj4 forward projection to EPSG:3857 so that it never returns NaN.
|
|
4
|
+
*
|
|
5
|
+
* proj4 returns [NaN, NaN] for points at the poles (lat = ±90°) because the
|
|
6
|
+
* Mercator projection is undefined there. The wrapper falls back to:
|
|
7
|
+
* 1. Project the input to WGS84 via `forwardTo4326`
|
|
8
|
+
* 2. Clamp the latitude to the Web Mercator limit (±85.05°)
|
|
9
|
+
* 3. Convert analytically from WGS84 to EPSG:3857
|
|
10
|
+
*
|
|
11
|
+
* This correctly handles any input CRS, not just EPSG:4326.
|
|
12
|
+
*
|
|
13
|
+
* NOTE: An identical copy of this function lives in `raster-tile-traversal.ts`.
|
|
14
|
+
* The two packages cannot share code due to their dependency relationship
|
|
15
|
+
* (deck.gl-geotiff depends on deck.gl-raster, not vice versa). If this logic
|
|
16
|
+
* changes, update both copies.
|
|
17
|
+
*
|
|
18
|
+
* Perhaps in the future we'll make a `@developmentseed/projections` package to
|
|
19
|
+
* hold shared projection utilities like this. *
|
|
20
|
+
*/
|
|
21
|
+
export declare function makeClampedForwardTo3857(forwardTo3857: (x: number, y: number) => [number, number], forwardTo4326: (x: number, y: number) => [number, number]): (x: number, y: number) => [number, number];
|
|
2
22
|
export type EpsgResolver = (epsg: number) => Promise<ProjectionDefinition>;
|
|
3
23
|
export declare function epsgResolver(epsg: number): Promise<ProjectionDefinition>;
|
|
4
24
|
//# sourceMappingURL=proj.d.ts.map
|
package/dist/proj.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proj.d.ts","sourceRoot":"","sources":["../src/proj.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"proj.d.ts","sourceRoot":"","sources":["../src/proj.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAoBvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EACzD,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GACxD,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5C;AAOD,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE3E,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,iCAc9C"}
|
package/dist/proj.js
CHANGED
|
@@ -1,4 +1,48 @@
|
|
|
1
1
|
import wktParser from "wkt-parser";
|
|
2
|
+
const WGS84_ELLIPSOID_A = 6378137;
|
|
3
|
+
// Maximum latitude representable in Web Mercator (EPSG:3857), in degrees.
|
|
4
|
+
// Beyond this, the Mercator projection is undefined.
|
|
5
|
+
const MAX_WEB_MERCATOR_LAT = 85.05112877980659;
|
|
6
|
+
/**
|
|
7
|
+
* Convert a WGS84 longitude/latitude to EPSG:3857 meters analytically.
|
|
8
|
+
* Valid for latitudes in [-MAX_WEB_MERCATOR_LAT, MAX_WEB_MERCATOR_LAT].
|
|
9
|
+
*/
|
|
10
|
+
function wgs84To3857(lon, lat) {
|
|
11
|
+
const x = (lon * Math.PI * WGS84_ELLIPSOID_A) / 180;
|
|
12
|
+
const latRad = (lat * Math.PI) / 180;
|
|
13
|
+
const y = Math.log(Math.tan(Math.PI / 4 + latRad / 2)) * WGS84_ELLIPSOID_A;
|
|
14
|
+
return [x, y];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Wrap a proj4 forward projection to EPSG:3857 so that it never returns NaN.
|
|
18
|
+
*
|
|
19
|
+
* proj4 returns [NaN, NaN] for points at the poles (lat = ±90°) because the
|
|
20
|
+
* Mercator projection is undefined there. The wrapper falls back to:
|
|
21
|
+
* 1. Project the input to WGS84 via `forwardTo4326`
|
|
22
|
+
* 2. Clamp the latitude to the Web Mercator limit (±85.05°)
|
|
23
|
+
* 3. Convert analytically from WGS84 to EPSG:3857
|
|
24
|
+
*
|
|
25
|
+
* This correctly handles any input CRS, not just EPSG:4326.
|
|
26
|
+
*
|
|
27
|
+
* NOTE: An identical copy of this function lives in `raster-tile-traversal.ts`.
|
|
28
|
+
* The two packages cannot share code due to their dependency relationship
|
|
29
|
+
* (deck.gl-geotiff depends on deck.gl-raster, not vice versa). If this logic
|
|
30
|
+
* changes, update both copies.
|
|
31
|
+
*
|
|
32
|
+
* Perhaps in the future we'll make a `@developmentseed/projections` package to
|
|
33
|
+
* hold shared projection utilities like this. *
|
|
34
|
+
*/
|
|
35
|
+
export function makeClampedForwardTo3857(forwardTo3857, forwardTo4326) {
|
|
36
|
+
return (x, y) => {
|
|
37
|
+
const [px, py] = forwardTo3857(x, y);
|
|
38
|
+
if (Number.isFinite(px) && Number.isFinite(py)) {
|
|
39
|
+
return [px, py];
|
|
40
|
+
}
|
|
41
|
+
const [lon, lat] = forwardTo4326(x, y);
|
|
42
|
+
const clampedLat = Math.max(-MAX_WEB_MERCATOR_LAT, Math.min(MAX_WEB_MERCATOR_LAT, lat));
|
|
43
|
+
return wgs84To3857(lon, clampedLat);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
2
46
|
/**
|
|
3
47
|
* A global registry holding parsed projection definitions.
|
|
4
48
|
*/
|
package/dist/proj.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proj.js","sourceRoot":"","sources":["../src/proj.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAgC,CAAC;AAIpE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,MAAM,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC3B,8EAA8E;IAC9E,kBAAkB;IAClB,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,mBAAmB,IAAI,OAAO,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
|
1
|
+
{"version":3,"file":"proj.js","sourceRoot":"","sources":["../src/proj.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAElC,0EAA0E;AAC1E,qDAAqD;AACrD,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAE/C;;;GAGG;AACH,SAAS,WAAW,CAAC,GAAW,EAAE,GAAW;IAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,iBAAiB,CAAC,GAAG,GAAG,CAAC;IACpD,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;IAC3E,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,wBAAwB,CACtC,aAAyD,EACzD,aAAyD;IAEzD,OAAO,CAAC,CAAS,EAAE,CAAS,EAAoB,EAAE;QAChD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,oBAAoB,EACrB,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CACpC,CAAC;QACF,OAAO,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAgC,CAAC;AAIpE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,MAAM,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC3B,8EAA8E;IAC9E,kBAAkB;IAClB,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,mBAAmB,IAAI,OAAO,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@developmentseed/deck.gl-geotiff",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-beta.1",
|
|
4
4
|
"description": "GeoTIFF and Cloud-Optimized GeoTIFF visualization in deck.gl",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@cogeotiff/core": "^9.4.0",
|
|
43
43
|
"flatbush": "^4.5.0",
|
|
44
|
-
"proj4": "^2.20.
|
|
44
|
+
"proj4": "^2.20.4",
|
|
45
45
|
"wkt-parser": "^1.5.3",
|
|
46
|
-
"@developmentseed/affine": "^0.
|
|
47
|
-
"@developmentseed/deck.gl-raster": "^0.
|
|
48
|
-
"@developmentseed/geotiff": "^0.
|
|
49
|
-
"@developmentseed/morecantile": "^0.
|
|
50
|
-
"@developmentseed/raster-reproject": "^0.
|
|
46
|
+
"@developmentseed/affine": "^0.5.0-beta.1",
|
|
47
|
+
"@developmentseed/deck.gl-raster": "^0.5.0-beta.1",
|
|
48
|
+
"@developmentseed/geotiff": "^0.5.0-beta.1",
|
|
49
|
+
"@developmentseed/morecantile": "^0.5.0-beta.1",
|
|
50
|
+
"@developmentseed/raster-reproject": "^0.5.0-beta.1"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"@deck.gl/core": "^9.2.7",
|