@developmentseed/deck.gl-raster 0.7.0 → 0.8.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fp64.d.ts +18 -0
- package/dist/fp64.d.ts.map +1 -0
- package/dist/fp64.js +28 -0
- package/dist/fp64.js.map +1 -0
- package/dist/globe-grid-mesh.d.ts +30 -0
- package/dist/globe-grid-mesh.d.ts.map +1 -0
- package/dist/globe-grid-mesh.js +67 -0
- package/dist/globe-grid-mesh.js.map +1 -0
- package/dist/gpu-modules/cutline-bbox.d.ts +26 -40
- package/dist/gpu-modules/cutline-bbox.d.ts.map +1 -1
- package/dist/gpu-modules/cutline-bbox.js +24 -53
- package/dist/gpu-modules/cutline-bbox.js.map +1 -1
- package/dist/gpu-modules/index.d.ts +1 -1
- package/dist/gpu-modules/index.d.ts.map +1 -1
- package/dist/gpu-modules/index.js +1 -1
- package/dist/gpu-modules/index.js.map +1 -1
- package/dist/mesh-layer/mesh-layer-fragment.glsl.d.ts +1 -1
- package/dist/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
- package/dist/mesh-layer/mesh-layer-vertex.glsl.d.ts +3 -0
- package/dist/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +1 -0
- package/dist/mesh-layer/mesh-layer-vertex.glsl.js +90 -0
- package/dist/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -0
- package/dist/mesh-layer/mesh-layer.d.ts +27 -4
- package/dist/mesh-layer/mesh-layer.d.ts.map +1 -1
- package/dist/mesh-layer/mesh-layer.js +39 -3
- package/dist/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/raster-layer.d.ts +18 -1
- package/dist/raster-layer.d.ts.map +1 -1
- package/dist/raster-layer.js +46 -19
- package/dist/raster-layer.js.map +1 -1
- package/dist/raster-tile-layer/raster-tile-layer.d.ts.map +1 -1
- package/dist/raster-tile-layer/raster-tile-layer.js +29 -21
- package/dist/raster-tile-layer/raster-tile-layer.js.map +1 -1
- package/dist/raster-tileset/bounding-volume-cache.d.ts +11 -4
- package/dist/raster-tileset/bounding-volume-cache.d.ts.map +1 -1
- package/dist/raster-tileset/bounding-volume-cache.js +13 -4
- package/dist/raster-tileset/bounding-volume-cache.js.map +1 -1
- package/dist/raster-tileset/raster-tile-traversal.d.ts +58 -3
- package/dist/raster-tileset/raster-tile-traversal.d.ts.map +1 -1
- package/dist/raster-tileset/raster-tile-traversal.js +235 -30
- package/dist/raster-tileset/raster-tile-traversal.js.map +1 -1
- package/dist/raster-tileset/raster-tileset-2d.d.ts +33 -0
- package/dist/raster-tileset/raster-tileset-2d.d.ts.map +1 -1
- package/dist/raster-tileset/raster-tileset-2d.js +46 -1
- package/dist/raster-tileset/raster-tileset-2d.js.map +1 -1
- package/dist/raster-tileset/web-mercator-clamp.d.ts +31 -0
- package/dist/raster-tileset/web-mercator-clamp.d.ts.map +1 -0
- package/dist/raster-tileset/web-mercator-clamp.js +69 -0
- package/dist/raster-tileset/web-mercator-clamp.js.map +1 -0
- package/package.json +7 -7
- package/dist/raster-tile-layer/constants.d.ts +0 -11
- package/dist/raster-tile-layer/constants.d.ts.map +0 -1
- package/dist/raster-tile-layer/constants.js +0 -11
- package/dist/raster-tile-layer/constants.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster-tileset-2d.js","sourceRoot":"","sources":["../../src/raster-tileset/raster-tileset-2d.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"raster-tileset-2d.js","sourceRoot":"","sources":["../../src/raster-tileset/raster-tileset-2d.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { InitialTriangulation } from "@developmentseed/raster-reproject";
|
|
2
|
+
/**
|
|
3
|
+
* The WGS84 latitudes of a tile's four corners.
|
|
4
|
+
*/
|
|
5
|
+
export interface CornerLatitudes {
|
|
6
|
+
topLeft: number;
|
|
7
|
+
topRight: number;
|
|
8
|
+
bottomLeft: number;
|
|
9
|
+
bottomRight: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Compute a {@link InitialTriangulation} that clamps a tile's reprojection mesh
|
|
13
|
+
* to the latitude band representable in Web Mercator (±85.051°), or `undefined`
|
|
14
|
+
* if no clamp is needed or possible.
|
|
15
|
+
*
|
|
16
|
+
* Beyond ±85.051°, `makeClampedForwardTo3857` collapses every polar vertex onto
|
|
17
|
+
* the same clamped Y, so the reprojector emits degenerate near-pole triangles
|
|
18
|
+
* that never converge (see #182 / #351). Seeding the reprojector with the
|
|
19
|
+
* clamped band avoids meshing those rows entirely.
|
|
20
|
+
*
|
|
21
|
+
* Only tiles whose **rows are constant-latitude** are handled — where latitude
|
|
22
|
+
* is constant across each row, so the valid band is an axis-aligned rectangle.
|
|
23
|
+
*
|
|
24
|
+
* This covers both north-up grids and south-up grids. Rotated or projected
|
|
25
|
+
* tiles return `undefined` (the caller falls back to the full mesh).
|
|
26
|
+
*
|
|
27
|
+
* @param cornerLats WGS84 latitudes of the tile's four corners.
|
|
28
|
+
* @param maxLat Web Mercator latitude limit. Defaults to ±85.051°.
|
|
29
|
+
*/
|
|
30
|
+
export declare function createInitialWebMercatorTriangulation(cornerLats: CornerLatitudes, maxLat?: number): InitialTriangulation | undefined;
|
|
31
|
+
//# sourceMappingURL=web-mercator-clamp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-mercator-clamp.d.ts","sourceRoot":"","sources":["../../src/raster-tileset/web-mercator-clamp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAS9E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,eAAe,EAC3B,MAAM,GAAE,MAA6B,GACpC,oBAAoB,GAAG,SAAS,CAqDlC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { triangulateRectangle } from "@developmentseed/raster-reproject";
|
|
2
|
+
/** Maximum latitude representable in Web Mercator (EPSG:3857), in degrees. */
|
|
3
|
+
const MAX_WEB_MERCATOR_LAT = 85.05112877980659;
|
|
4
|
+
/** Tolerance for the constant-latitude check and degenerate-band guard, in degrees. */
|
|
5
|
+
const LAT_EPSILON = 1e-6;
|
|
6
|
+
/**
|
|
7
|
+
* Compute a {@link InitialTriangulation} that clamps a tile's reprojection mesh
|
|
8
|
+
* to the latitude band representable in Web Mercator (±85.051°), or `undefined`
|
|
9
|
+
* if no clamp is needed or possible.
|
|
10
|
+
*
|
|
11
|
+
* Beyond ±85.051°, `makeClampedForwardTo3857` collapses every polar vertex onto
|
|
12
|
+
* the same clamped Y, so the reprojector emits degenerate near-pole triangles
|
|
13
|
+
* that never converge (see #182 / #351). Seeding the reprojector with the
|
|
14
|
+
* clamped band avoids meshing those rows entirely.
|
|
15
|
+
*
|
|
16
|
+
* Only tiles whose **rows are constant-latitude** are handled — where latitude
|
|
17
|
+
* is constant across each row, so the valid band is an axis-aligned rectangle.
|
|
18
|
+
*
|
|
19
|
+
* This covers both north-up grids and south-up grids. Rotated or projected
|
|
20
|
+
* tiles return `undefined` (the caller falls back to the full mesh).
|
|
21
|
+
*
|
|
22
|
+
* @param cornerLats WGS84 latitudes of the tile's four corners.
|
|
23
|
+
* @param maxLat Web Mercator latitude limit. Defaults to ±85.051°.
|
|
24
|
+
*/
|
|
25
|
+
export function createInitialWebMercatorTriangulation(cornerLats, maxLat = MAX_WEB_MERCATOR_LAT) {
|
|
26
|
+
const { topLeft, topRight, bottomLeft, bottomRight } = cornerLats;
|
|
27
|
+
// Each row must be constant-latitude for the clamp band to be an axis-aligned
|
|
28
|
+
// rectangle in UV space. Otherwise fall back to the full mesh.
|
|
29
|
+
const rowsIsoLatitude = Math.abs(topLeft - topRight) < LAT_EPSILON &&
|
|
30
|
+
Math.abs(bottomLeft - bottomRight) < LAT_EPSILON;
|
|
31
|
+
if (!rowsIsoLatitude) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
// v runs 0 (top row) → 1 (bottom row); latitude varies linearly along it:
|
|
35
|
+
// lat(v) = top + v * (bottom - top)
|
|
36
|
+
// Do NOT assume top is the northern edge: a positive-`e` (south-up) affine
|
|
37
|
+
// puts the south pole at row 0, so `top` is the southern edge. Deriving the
|
|
38
|
+
// band from the actual top/bottom keeps this orientation-agnostic.
|
|
39
|
+
const top = topLeft;
|
|
40
|
+
const bottom = bottomLeft;
|
|
41
|
+
// Degenerate tile (zero latitude span): leave it to the default full mesh.
|
|
42
|
+
if (Math.abs(bottom - top) <= LAT_EPSILON) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
// Nothing to clamp if the whole tile is already within bounds (linear interp
|
|
46
|
+
// between two in-band corners stays in band).
|
|
47
|
+
if (top <= maxLat &&
|
|
48
|
+
top >= -maxLat &&
|
|
49
|
+
bottom <= maxLat &&
|
|
50
|
+
bottom >= -maxLat) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
// Intersect the tile's latitude segment with the band [-maxLat, maxLat]:
|
|
54
|
+
// solve lat(v) = ±maxLat for v, then take the overlapping v-interval. min/max
|
|
55
|
+
// makes this independent of whether latitude increases or decreases with v.
|
|
56
|
+
const clamp01 = (t) => Math.max(0, Math.min(1, t));
|
|
57
|
+
const vAtMaxLat = (maxLat - top) / (bottom - top);
|
|
58
|
+
const vAtMinLat = (-maxLat - top) / (bottom - top);
|
|
59
|
+
const vTop = clamp01(Math.min(vAtMaxLat, vAtMinLat));
|
|
60
|
+
const vBottom = clamp01(Math.max(vAtMaxLat, vAtMinLat));
|
|
61
|
+
// Fully-polar tile (entirely outside ±maxLat): empty band, nothing to render.
|
|
62
|
+
// Such tiles are normally excluded by the dataset-bounds clamp; guard anyway
|
|
63
|
+
// so we never emit a degenerate seed.
|
|
64
|
+
if (vBottom - vTop < LAT_EPSILON) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return triangulateRectangle(0, vTop, 1, vBottom);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=web-mercator-clamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-mercator-clamp.js","sourceRoot":"","sources":["../../src/raster-tileset/web-mercator-clamp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,8EAA8E;AAC9E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAE/C,uFAAuF;AACvF,MAAM,WAAW,GAAG,IAAI,CAAC;AAYzB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,qCAAqC,CACnD,UAA2B,EAC3B,SAAiB,oBAAoB;IAErC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IAElE,8EAA8E;IAC9E,+DAA+D;IAC/D,MAAM,eAAe,GACnB,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,WAAW;QAC1C,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC;IACnD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0EAA0E;IAC1E,sCAAsC;IACtC,2EAA2E;IAC3E,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC;IACpB,MAAM,MAAM,GAAG,UAAU,CAAC;IAE1B,2EAA2E;IAC3E,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6EAA6E;IAC7E,8CAA8C;IAC9C,IACE,GAAG,IAAI,MAAM;QACb,GAAG,IAAI,CAAC,MAAM;QACd,MAAM,IAAI,MAAM;QAChB,MAAM,IAAI,CAAC,MAAM,EACjB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAExD,8EAA8E;IAC9E,6EAA6E;IAC7E,sCAAsC;IACtC,IAAI,OAAO,GAAG,IAAI,GAAG,WAAW,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@developmentseed/deck.gl-raster",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0-beta.2",
|
|
4
4
|
"description": "Georeferenced image data visualization in deck.gl",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@luma.gl/core": "^9.3.2",
|
|
42
42
|
"@luma.gl/shadertools": "^9.3.2",
|
|
43
|
-
"@types/node": "^25.
|
|
43
|
+
"@types/node": "^25.9.1",
|
|
44
44
|
"jsdom": "^29.1.1",
|
|
45
45
|
"typescript": "^6.0.3",
|
|
46
|
-
"vitest": "^4.1.
|
|
46
|
+
"vitest": "^4.1.7"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"@deck.gl/core": "^9.3.0",
|
|
@@ -52,15 +52,15 @@
|
|
|
52
52
|
"@deck.gl/mesh-layers": "^9.3.0",
|
|
53
53
|
"@luma.gl/core": "^9.3.2",
|
|
54
54
|
"@luma.gl/shadertools": "^9.3.2",
|
|
55
|
-
"@developmentseed/morecantile": "^0.
|
|
55
|
+
"@developmentseed/morecantile": "^0.8.0-beta.2"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@math.gl/core": "^4.1.0",
|
|
59
59
|
"@math.gl/culling": "^4.1.0",
|
|
60
60
|
"@math.gl/web-mercator": "^4.1.0",
|
|
61
|
-
"@developmentseed/
|
|
62
|
-
"@developmentseed/
|
|
63
|
-
"@developmentseed/
|
|
61
|
+
"@developmentseed/proj": "^0.8.0-beta.2",
|
|
62
|
+
"@developmentseed/raster-reproject": "^0.8.0-beta.2",
|
|
63
|
+
"@developmentseed/affine": "^0.8.0-beta.2"
|
|
64
64
|
},
|
|
65
65
|
"volta": {
|
|
66
66
|
"extends": "../../package.json"
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/** Size of deck.gl's common coordinate space in world units.
|
|
2
|
-
*
|
|
3
|
-
* At zoom 0, one tile covers the whole world (512×512 units); at zoom z, each
|
|
4
|
-
* tile is 512/2^z units.
|
|
5
|
-
*/
|
|
6
|
-
export declare const TILE_SIZE = 512;
|
|
7
|
-
/** Size of the globe in web mercator meters. */
|
|
8
|
-
export declare const WEB_MERCATOR_METER_CIRCUMFERENCE = 40075016.686;
|
|
9
|
-
/** Scale factor for converting EPSG:3857 meters into deck.gl world units (512×512). */
|
|
10
|
-
export declare const WEB_MERCATOR_TO_WORLD_SCALE: number;
|
|
11
|
-
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/raster-tile-layer/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,gDAAgD;AAChD,eAAO,MAAM,gCAAgC,eAAe,CAAC;AAE7D,uFAAuF;AACvF,eAAO,MAAM,2BAA2B,QACM,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/** Size of deck.gl's common coordinate space in world units.
|
|
2
|
-
*
|
|
3
|
-
* At zoom 0, one tile covers the whole world (512×512 units); at zoom z, each
|
|
4
|
-
* tile is 512/2^z units.
|
|
5
|
-
*/
|
|
6
|
-
export const TILE_SIZE = 512;
|
|
7
|
-
/** Size of the globe in web mercator meters. */
|
|
8
|
-
export const WEB_MERCATOR_METER_CIRCUMFERENCE = 40075016.686;
|
|
9
|
-
/** Scale factor for converting EPSG:3857 meters into deck.gl world units (512×512). */
|
|
10
|
-
export const WEB_MERCATOR_TO_WORLD_SCALE = TILE_SIZE / WEB_MERCATOR_METER_CIRCUMFERENCE;
|
|
11
|
-
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/raster-tile-layer/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,gDAAgD;AAChD,MAAM,CAAC,MAAM,gCAAgC,GAAG,YAAY,CAAC;AAE7D,uFAAuF;AACvF,MAAM,CAAC,MAAM,2BAA2B,GACtC,SAAS,GAAG,gCAAgC,CAAC"}
|