@developmentseed/deck.gl-geotiff 0.3.0 → 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/dist/cog-layer.d.ts +9 -3
- package/dist/cog-layer.d.ts.map +1 -1
- package/dist/cog-layer.js +96 -24
- package/dist/cog-layer.js.map +1 -1
- package/dist/geotiff/render-pipeline.d.ts +1 -0
- package/dist/geotiff/render-pipeline.d.ts.map +1 -1
- package/dist/geotiff/render-pipeline.js +3 -0
- 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
|
@@ -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 = {
|
|
@@ -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,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,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
|
}
|
|
@@ -154,43 +176,86 @@ export class COGLayer extends CompositeLayer {
|
|
|
154
176
|
// `DefaultDataT` at this point.
|
|
155
177
|
renderPipeline = this.state.defaultRenderTile(data);
|
|
156
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 = {
|
|
189
|
+
forwardTransform,
|
|
190
|
+
inverseTransform,
|
|
191
|
+
forwardReproject: forwardTo4326,
|
|
192
|
+
inverseReproject: inverseFrom4326,
|
|
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
|
+
}
|
|
157
221
|
layers.push(new RasterLayer(this.getSubLayerProps({
|
|
158
222
|
id: `${props.id}-raster`,
|
|
159
223
|
width,
|
|
160
224
|
height,
|
|
161
225
|
renderPipeline,
|
|
162
226
|
maxError,
|
|
163
|
-
reprojectionFns
|
|
164
|
-
forwardTransform,
|
|
165
|
-
inverseTransform,
|
|
166
|
-
forwardReproject: forwardTo4326,
|
|
167
|
-
inverseReproject: inverseFrom4326,
|
|
168
|
-
},
|
|
227
|
+
reprojectionFns,
|
|
169
228
|
debug,
|
|
170
229
|
debugOpacity,
|
|
230
|
+
...rasterLayerProps,
|
|
171
231
|
})));
|
|
172
232
|
}
|
|
173
233
|
if (debug) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
177
|
-
const projectedBounds = tile?.projectedBounds;
|
|
178
|
-
if (!projectedBounds || !tms) {
|
|
234
|
+
const { projectedCorners } = tile;
|
|
235
|
+
if (!projectedCorners || !tms) {
|
|
179
236
|
return [];
|
|
180
237
|
}
|
|
181
|
-
//
|
|
182
|
-
|
|
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;
|
|
183
249
|
const topLeftWgs84 = forwardTo4326(topLeft[0], topLeft[1]);
|
|
184
250
|
const topRightWgs84 = forwardTo4326(topRight[0], topRight[1]);
|
|
185
251
|
const bottomRightWgs84 = forwardTo4326(bottomRight[0], bottomRight[1]);
|
|
186
252
|
const bottomLeftWgs84 = forwardTo4326(bottomLeft[0], bottomLeft[1]);
|
|
187
|
-
// Create a closed path around the tile bounds
|
|
188
253
|
const path = [
|
|
189
254
|
topLeftWgs84,
|
|
190
255
|
topRightWgs84,
|
|
191
256
|
bottomRightWgs84,
|
|
192
257
|
bottomLeftWgs84,
|
|
193
|
-
topLeftWgs84,
|
|
258
|
+
topLeftWgs84,
|
|
194
259
|
];
|
|
195
260
|
layers.push(new PathLayer({
|
|
196
261
|
id: `${this.id}-${tile.id}-bounds`,
|
|
@@ -205,7 +270,7 @@ export class COGLayer extends CompositeLayer {
|
|
|
205
270
|
return layers;
|
|
206
271
|
}
|
|
207
272
|
/** Define the underlying deck.gl TileLayer. */
|
|
208
|
-
renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, geotiff) {
|
|
273
|
+
renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, geotiff) {
|
|
209
274
|
// Create a factory class that wraps COGTileset2D with the metadata
|
|
210
275
|
class TileMatrixSetTilesetFactory extends TileMatrixSetTileset {
|
|
211
276
|
constructor(opts) {
|
|
@@ -215,18 +280,25 @@ export class COGLayer extends CompositeLayer {
|
|
|
215
280
|
});
|
|
216
281
|
}
|
|
217
282
|
}
|
|
283
|
+
const { maxRequests, maxCacheSize, maxCacheByteSize, debounceTime, refinementStrategy, } = this.props;
|
|
218
284
|
return new TileLayer({
|
|
219
285
|
id: `cog-tile-layer-${this.id}`,
|
|
220
286
|
TilesetClass: TileMatrixSetTilesetFactory,
|
|
221
287
|
getTileData: async (tile) => this._getTileData(tile, geotiff, tms),
|
|
222
|
-
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,
|
|
223
294
|
});
|
|
224
295
|
}
|
|
225
296
|
renderLayers() {
|
|
226
|
-
const { forwardTo4326, inverseFrom4326, forwardTo3857, tms, geotiff } = this.state;
|
|
297
|
+
const { forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, tms, geotiff, } = this.state;
|
|
227
298
|
if (!forwardTo4326 ||
|
|
228
299
|
!inverseFrom4326 ||
|
|
229
300
|
!forwardTo3857 ||
|
|
301
|
+
!inverseFrom3857 ||
|
|
230
302
|
!tms ||
|
|
231
303
|
!geotiff) {
|
|
232
304
|
return null;
|
|
@@ -234,7 +306,7 @@ export class COGLayer extends CompositeLayer {
|
|
|
234
306
|
// Split into a separate method to make TS happy, because when metadata is
|
|
235
307
|
// nullable in any part of function scope, the tileset factory wrapper gives
|
|
236
308
|
// a type error
|
|
237
|
-
return this.renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, geotiff);
|
|
309
|
+
return this.renderTileLayer(tms, forwardTo4326, inverseFrom4326, forwardTo3857, inverseFrom3857, geotiff);
|
|
238
310
|
}
|
|
239
311
|
}
|
|
240
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":"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,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"}
|
|
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"}
|
|
@@ -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,10 +115,12 @@ 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
|
};
|
|
@@ -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;AAE5D,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,6CAA6C,CAAC;AAMrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,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.4.0",
|
|
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/
|
|
47
|
-
"@developmentseed/deck.gl-raster": "^0.
|
|
48
|
-
"@developmentseed/
|
|
49
|
-
"@developmentseed/morecantile": "^0.
|
|
50
|
-
"@developmentseed/
|
|
46
|
+
"@developmentseed/geotiff": "^0.4.0",
|
|
47
|
+
"@developmentseed/deck.gl-raster": "^0.4.0",
|
|
48
|
+
"@developmentseed/raster-reproject": "^0.4.0",
|
|
49
|
+
"@developmentseed/morecantile": "^0.4.0",
|
|
50
|
+
"@developmentseed/affine": "^0.4.0"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"@deck.gl/core": "^9.2.7",
|